FMR 的元素类型
- 常量(Constants):指向世界中的具体对象,可以是数字、词串或实体。
- 类(Classes):实体的语义类别,例如
location.city、math.number- 子类:math.number ⊆ math.expression
- 模板类:带参数的类,例如
t.list<c, m, n>,其中c是类,m、n是整数。
- 函数(Functions):由小的语言单位组合出大的语言单位,这是最主要的方式。一个函数由函数名、一组核心参数和返回类型构成。
- 名词函数
- 把实体映射到它的属性,或映射到与参数存在特定关系的另一个实体。
- 用于表示自然语言中的名词短语。
- 代词函数是特殊的零参数名词函数。
- 动词函数
- 充当句子或子句
- 大概是最重要的一类函数?
- 修饰函数
- 很多函数可以接受额外的扩展参数作为修饰成分。
- 修饰函数常常作为扩展参数,去修饰名词函数、动词函数或其他修饰函数。
- 在 FMR 中用来表示形容词、副词短语(含连接性副词短语)以及介词短语。
- 名词函数
- 实体变量(Entity Variables):给 FMR 节点绑定变量,用来标记子树之间对同一实体的共指。
FMR 的特点
- 强类型语言
- 类型相容:函数节点每个子节点的类型,都要与该函数对应位置的参数类型匹配。
- 开放域类型系统
- 类型数以千计
- 相比之下,其他语言在文法层面上最多也就一百多个
- 内置数据结构
- 例如
t.list和nf.list
- 例如
从自然语言到 FMR 的语义解析
用 CFG 规则把自然语言的句子和短语映射到 FMR
"The product of 3 consecutive number is 60" =>
vf.be.equ(nf.math.product(nf.list(math.number, 3, mf.consecutive)), 60);
缘起
- 语义理解平台/语音助手(2013-今,腾讯/搜狗)
- 复合实体识别(CRF识别/规则识别/词表识别)
- 基于语言模型的查询意图理解
- 基于语义模板的查询意图识别和语义信息抽取
- 通用CFG文法解析器:高效Earley算法的实现
- 意图识别,槽位填充
- 查询意图排序,基于候选意图结果的终判模块
- 下游分类别知识库系统/垂直搜索系统