2 分钟阅读

FMR:函数式语义表示

FMR 的元素类型

  • 常量(Constants):指向世界中的具体对象,可以是数字、词串或实体。
  • 类(Classes):实体的语义类别,例如 location.citymath.number
    • 子类:math.number ⊆ math.expression
    • 模板类:带参数的类,例如 t.list<c, m, n>,其中 c 是类,mn 是整数。
  • 函数(Functions):由小的语言单位组合出大的语言单位,这是最主要的方式。一个函数由函数名、一组核心参数返回类型构成。
    • 名词函数
      • 把实体映射到它的属性,或映射到与参数存在特定关系的另一个实体。
      • 用于表示自然语言中的名词短语。
      • 代词函数是特殊的零参数名词函数。
    • 动词函数
      • 充当句子或子句
      • 大概是最重要的一类函数?
    • 修饰函数
      • 很多函数可以接受额外的扩展参数作为修饰成分。
      • 修饰函数常常作为扩展参数,去修饰名词函数、动词函数或其他修饰函数。
      • 在 FMR 中用来表示形容词、副词短语(含连接性副词短语)以及介词短语。
  • 实体变量(Entity Variables):给 FMR 节点绑定变量,用来标记子树之间对同一实体的共指。

FMR 的特点

  • 强类型语言
    • 类型相容:函数节点每个子节点的类型,都要与该函数对应位置的参数类型匹配。
  • 开放域类型系统
    • 类型数以千计
    • 相比之下,其他语言在文法层面上最多也就一百多个
  • 内置数据结构
    • 例如 t.listnf.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算法的实现
      • 意图识别,槽位填充
    • 查询意图排序,基于候选意图结果的终判模块
    • 下游分类别知识库系统/垂直搜索系统