原文章所属Github项目链接:https://github.com/casnlu/Semantic-Parsing
1 语义解析简介
- 自然语言多样,具有歧义,其理解依赖世界知识和情境。
- 计算机能理解的语言时统一语义、显式结构、无歧义的。
1.1 研究意义
语义解析是实现自然语言理解的关键技术之一,目的在于建立自然语言到计算机可以理解的形式化语义表示的映射。
1.2 任务介绍
- 任务定义
将自然语言句子转换成计算机可识别的、可计算的、完全的语义表示,如lambda-表达式(λ演算)、SQL、语义图等。
- 自然语言的四大层次
- 词法:词语的起源,以及词与词之间的关联
- 语法:句子的语法和结构
- 语义:句子表达的是什么意思
- 语用:句子背后的用意
- 语言到语义由浅入深的表示方法
- 语义角色标注(SRL)
- 框架语义解析(Frame-SP)
- 语义解析(SP)
- 任务场景
- 语言到结构化查询语言(language to query)
- 语言到代码(language to code)
- 语言到机器操作指令(language to instruction)
1.3 重要组件
- 核心组件
- 语义表示
- 解析模型
- 学习算法
1.3.1 语义表示
- 框架语义表示:工业界常用
- 优势:结构性表示,语义明确
- 劣势:人工定义框架,覆盖性有限
- 分布式语义表示:一种文本表示的形式,指的是低维、稠密的连续向量。
- 优势:应用性好,对机器友好
- 劣势:整体表示,细粒度区分不好
- 模型理论-组合语义表示:学术界常用
- 优势:表达能力强,机器可直接利用
- 劣势:难以生成
1.3.2 解析模型
句子转换为语义表示的建模
- 基于规则的模型
- 基于统计的模型
- 基于神经网络的模型
1.3.3 学习算法
如何学习转换过程
- 目的
让解析模型从一个句子的多种候选语义表示中选择争取的语义表示
- 监督学习算法
输入:<句子,语义表示> 标注对
目标:最大似然估计——p(语义表示|句子)
- 弱监督学习算法
输入:弱监督信号,如<句子,知识库,答案> ,<句子,候选,点击> 标注
目标:最大边界似然估计,语义表示当作潜变量
- 相关资源:语义解析工具包
1.4 发展历程
1.4.1 基于规则的语义解析方法
- STUDENT系统 [Bobrow, 1964]:基于规则的线性代数求解
- 规则系统:错误可控可溯源、起步容易/自助构建、增量式模型
1.4.2 基于统计的语义解析方法
- 代表性方法:基于词典-组合文法的语义解析
- CCG和DCS
- 核心组件:词典(lexicon)、组合文法(grammar)、概率模型
- 核心思想:层层递进组合词典
1.4.3 基于语义图的语义解析方法
构建语义图,而后基于知识图谱进行语义解析。
- 用语义图来表示句子的语义
- 语义解析转换为语义图构建/生成的问题
- 优势:
- 不需要提前学习词典
- 不需要定义组合文法
- 可充分利用知识库的约束
1.4.4 基于神经网络的语义解析方法
- 将逻辑表达式序列化
- 语义解析转换为词语序列到逻辑表达式序列的翻译过程(Seq2Seq)
2 基于词典-组合文法的语义解析
2.1 组合语义的基本准则
复杂表达式的意义由其子表达式的意义以及意义如何组合的规则共同决定。
- 关键组件
- 词典:存储自然语言词语到词语语义的映射;语义组合的基本单元
- 组合文法:将小语义单元组合成更大的语义单元;组合语义基本准则中的combining rule
2.2 代表性方法
2.2.1 基于CCG的语义解析
- CCG (Combinatory Categorial Grammar,组合范畴文法),由ACL终身成就奖获得者Steedman教授提出
- 早期用于句法分析,后期由Zettlemoyer & Collins(05)应用于语义解析:可以捕捉句子长距离依赖
- 核心组件:
- 词典:使用CCG Category 来表示词汇语义
- 组合文法:CCG组合算子(combinators)
- 句子语义:使用lambda表达式表示句子语义
- 语义表示:Lambda表达式
- 常量Constants/变量Var
- 谓词Predicate
- 逻辑连接词:与、或、非、蕴含
- 量词
- 额外函数:Count, argmax, average
- 词典Lexicon:词语到范畴(category)的映射(范畴同时包含句法信息和语义信息)
词语 | 范畴(category) | |
句法部分 | 语义部分 | |
Texas(德州) | NP | texas |
borders | (S\NP)/NP | 𝜆𝑥. 𝜆𝑦. 𝑏𝑜𝑟𝑑𝑒𝑟(𝑦, 𝑥) |
Kansas(堪萨斯州) | NP | kansas |
Kansas city(堪萨斯城) | NP | kansas_city_mo(密苏里州堪萨斯城) |
其中S,NP是CCG里面的基本类型(还有N) :
(1)S 表示一个完整的句子
(2)NP 表示一个专有名词(实体词汇)
(3)N 表示一个普通名词(类型词汇)
(S\NP)/NP是一种复合类型(二元谓词词汇):
(1)右向的slash(/)表示右侧可以接受一个参数( NP ),接受之后得到左侧的类型(S\NP)
(2)左向的slash(\)表示左侧可以接收一个参数( NP ),接受之后得到左侧的类型(S)
(3)在此处得出的信息是border是一个语法上的连接词
- 组合算子combinators,连接符(前三个为核心连接符)
(1)Application conbinators应用连接符(前向 < 和 后向 >)
举例说明:A/B 代表 往右(后向)找一个B形成A的一种函数关系f,即得到 A: f(g)
(2)Composition combinators组合连接符(前向 <B 和后向 >B,前后向找B)
类似于组合两个函数,得到一个新函数同时保留函数的功能,多用于串联两个条件短语(如示例中的 the latest 和 one way)。
举例说明:A/B 代表 往右(后向)找到一个B形成A的一种函数关系f,B/C 代表往右(后向)找到一个C形成B的一个函数关系g,即得到:A: f(g(x))
(3)Type-raising combinators类型提升连接符(T)(前向 <T 和 后向 >T,意味着前/后向找T)
类似于参数变为函数,函数的功能取决于新增的 T。
并列:刘德华和陈奕迅的歌曲
省略:播放刘德华(需要把刘德华提升为Song类型)
举例说明:在例子中,border Texas and Idaho 所组成的是 (S\NP)/NP NP and NP,假如不进行类型提升,即变成 (S\NP) and NP,无法表示并列关系,后续的NP无法解析。因而需要类型提升,把NP变为函数,其类型符取决于border的转换结果 (S\NP),Texas, Idaho 的 NP类型变为函数后,即可利用并列 ^,将border与Texas 和 Idaho进行组合连接。
- 解析过程中的歧义
(1)Lexicon层(主要)
一个词语可以映射到多个的category,比如Mississippi 既可以映射为 state: Mississippi,又可以映射为river: Mississippi。
(2)组合层(可忽略)
存在多种组合的可能性,但往往会得到相同的lambda-表达式。
- PCCG:估计每一个lambda-表达式的概率
对数线性模型:S为句子,L为lambda-表达式,T为解析的过程, θ 为模型参数,f(L,T,S)为该解析的特征函数(作为一种评价指标),一个句子为解析为L的概率为:
原理:一个句子为解析为L的概率为,所有解析过程中,解析出为同一个Lambda-表达式的概率之和。每个过程解析成表达式的概率进行了归一化。
重要特征:使用词汇、使用的组合文法
参数学习:基于标注好的<S, L>对、最大化似然
- 松弛的CCG文法
原因:CCG的文法过于严格,使得模型比较脆弱,特别是当面向口语化的文本的时候,会有大量词序错乱,省略的现象。
(1)Relaxed Application(允许词序的变化,slash方向可变,使用 ^ 符号组合)
(2)Relaxed Composition(允许短语的前置或者后置,slash方向可变,使用 ^ 符号组合)
(3)Type-shifting(允许省略)
将实体名词NP变为 N\N 类型的名词,在例子中省略了from。
- 因子化词汇
问题:词典在CCG parsing中至关重要,而词典稀疏,难以学习
现象:一个词语可以映射到多个类型,一个类型又会在多个词汇中共享
方法:因子化词汇,用参数表示的式子表示类型,以表达多种词汇到类型的映射
2.2.2 基于DCS的语义解析
DCS (Dependency-based compositional semantics,依存组合语义文法)由Percy Liang于2011年提出。DCS是一种语义表示体系,同时包含了从句子到语义表示所需的词典和组合文法。与CCG类似,基于组合语义的思想,依赖于词典和组合文法。
- DCS的特点
(1)表示能力强:需要与lambda-表达式具备等价的语义表示能力
(2)简洁:与lambda-表达式相比,DCS的表示更加简洁
(3)结构清晰:保有与自然语言类似的结构
- 语义
(1)集合论:一个语义表示的语义是符合其语义约束的所有值的集合。
- 山东省 → {山东省} (山东)
− PlaceOfBirth → {<莫言,山东>,<秦琼,山东>,<居里,法国>, …}
− Profession→ {<莫言,作家>, <秦琼,武将>,<居里,科学家>}
− PlaceOfBirth.山东→ {莫言,秦琼, …} (山东出生)
− PlaceOfBirth.山东 ^ Profession.作家 → {莫言…} (山东出生的作家)
- 词典
Unary case (u):其语义为实体集合
− 实体:“Texas”→ texas {texas}
− 类型:“state”→ state {纽约州、华盛顿州、密西西比州…}
Binary case (b): 其语义为符合关系的元组集合
− 二元谓词(predicate): “born”→ PlaceOfBirth {<莫言,山东>, <秦琼,山东>,<居里,法国>, …}
- 组合文法-集合和集合之间的组合和转换
(1)Join(合并)
− binary (Join) unary → unary
− unary (Join) binary → unary
− 山东 出生 → 出生.山东
− {山东} (Join) {<莫言,山东>,<秦琼,山东>,<居里,法国>, …} → {莫言,秦琼, …}
(2)Intersection(交集)
− unary (Intersection) unary → unary
− 流行歌手 → 流行 AND 歌手
(3)Union(并集)
− unary (Union) unary → unary
− 周杰伦或刘德华 → 周杰伦 OR 刘德华
(4)高阶函数
− Count (计数):Count unary → unary
− argmax, argmin, max, min等
− 周杰伦的歌曲 数目 → Count(周杰伦的歌曲)
- 解析例子(从下往上组合)
2.3 从限定域到开放域
关键问题:词典覆盖不足、结构不匹配、标注语料成本过高。
2.3.1 词典扩充学习
词典覆盖不足。
- 使用实体对共现(Reference),核心是知识库的建立
基本假设:文本中的三元组与知识库中的三元组若有多个共同的实体对,则文本中
的关系(词语)映射到知识库中的关系(词语语义)
- 使用标签传播算法,核心是语义相似度的度量
基本假设:意思相近的词语应该映射到相同的语义
2.3.2 复述/重写
由自然语言多样性引起的本体不匹配问题。
- 复述
原理:将语义解析反过来,先得到句子的语义表示,然后生成新的句子,利用复述模型判断
新句子与原句子是否构成复述关系。
- 重写
原理:一个句子存在另外一种表达,该表达与原句子具有相同的语义,并且其结构与目标语义表示的结构一致
2.3.3 弱监督学习
语义表示难以标注。
- 利用语义表示的执行结果(如问题的答案)来监督模型的学习
2.4 小结
- 核心组件:词典+组合文法+学习算法
- 代表性方法:CCG,DCS
- 从限定域到开放域:词典补充学习、复述/重写、弱监督学习
- 优点:
- 基于组合语义的思想
- 有词典和组合规则,整个解析过程可见,可解释性强
- 缺点:
- 太依赖词典,若有词典未覆盖的词语,就无法解析
- 脆弱,依赖组合文法,有些复杂的语言现象,文法也无法覆盖
3 基于语义图的语义解析
关键组件:
- 语义图表示
- 语义图构建
使用语义图作为目标语义表示
- 优点:语义图的结构与自然语言句子的结构具有类似性
语义解析过程由组合文法转换为语义图构建
- 优点:可以充分使用知识库知识的约束,,从而有效减少搜索空间
语义图:
- 可以看作知识库的一个子图
- 基本组成:
- 节点,如实体、变量或者类型
- 边,表示关系
- 操作符,如count,argmax等
语义图构建代表性方法
- DepLambda [Reddy et al, 2016]:依存树到语义图转换文法
- STAGG [Yih, et al., 2015]: 分步骤构建方法
- Template [Bast & Haussmann, 2015]: 基于模板的语义图生成
3.1 DepLambda:依存树到语义图转换
- 原理:依存树与目标逻辑表达式具有类似的结构。
(0)预处理:依存关系解析,句子→依存树
(1)Dependencies to Logical Forms,利用依存关系组合词汇,依存树→Ungrounded lambda-表达式,类似CCG方法的解析过程
(2)Map Logical Form to Ungrounded Graph,Ungrounded lambda-表达式→Ungrounded graph
(3)Map Ungrounded Graph to Semantic Graph,Ungrounded graph→Grounded graph(语义图)
−实体词 链接到知识库中的实体,如Titanic → TITANIC
−关系词 链接到知识库中的关系,如directed → film.directed_by
3.2 STAGG:分步搭建语义图
- 分步搭建语义图的好处:
(1)每一步都可以使用最好的技术
(2)每进行一步都可以利用知识库的约束来减少搜索空间
- 基本概念
(1)中心链
(2)约束
- 主要步骤:
(1)中心实体链接:识别实体
识别出句子中的所有实体,特别是找到中心链上的中心实体
(2)关系链匹配
要求:与中心实体连接的长度不能超过2的所有关系链作为候选。
在求出关系链后,可以通过不同的方法,如以最大似然估计为目标函数的Deep Convolutional Neural Networks,来从知识库中找到对应的目标实体集(问题答案的集合)。
(3)添加约束条件
最后通过将约束条件作用于目标实体集,缩小或者找到对应的目标实体(最终的问题答案)。
- 性能:具有高召回率。
(1)并不需要词典,也不受限于词典的覆盖率;
(2)可以通过神经网络模型来建模软匹配过程,能处理模拟匹配的情况,解决OOV问题(out of vocabulary words)
3.3 Template:基于模板的语义图构建
- 出发点:查询往往都具有固定的若干模板(template),可通过设计有限的模板来覆盖绝大部分的查询。基于template的方法可以把语义图构建转换为模板匹配问题,能够大大简化此问题。
- 关键:
- 模板的定义
- 模板的匹配
- 模板的定义
3个模板覆盖Webquestions和Free917数据集中绝大部分查询。
其中,m是虚实体,为了关系连接而虚构的实体,需要注意的是company, film这种表示类型的词汇也属于一种关系。
- 模板匹配
(1)实体链接,识别句子中的实体
(2)匹配模板,匹配上述的三个模板
(3)关系匹配,根据关系在知识库中进行匹配,找到目标实体
- 性能:高召回率
模板能够覆盖大部分的问题,简化了语义图构建的过程。
3.4 小结
核心:语义图的语义表示、语义图的构建
代表性方法:DepLambda、STAGG、Template
优点:
- 不需要词典和组合文法
- 语义图的结构与句子的依存结构具有相似性
- 与知识库紧密联系,可充分利用知识库知识的约束
缺点:
- 往往依赖于一些启发式的方法来构建语义图
4 基于神经网络的语义解析
出发点:之前的模型都很复杂,模块很多
代表性方法:
- Seq2Seq [Dong & Lapata, 2016; Jia & Liang, 2016],
- Seq2Tree[Dong & Lapata, 2016]
- Seq2Act [Chen et al., 2018]
4.1 Seq2Seq AND Seq2Tree
- Seq2Seq:把语义解析看作是机器翻译的问题。
(1)将逻辑表达式序列化,看作一系列token,从而将语义解析转化为Seq2Seq问题。
(2)语义解析中的目标语言(语义表示)具有层次结构,而Seq2Seq模型仅把语义表示扁平序列化,从而忽略了层次结构信息,导致在解码过程中需要考虑更多的长距离依赖。
- Seq2Tree:弥补Seq2Seq扁平化表示的不足
(1)层次化的decoder,不生成扁平化的语义表示序列,而是生成层次结构化的语义表示(tree) ,用<n>来表示树结构中的非终结符
(2)在神经网络中的表示:占位符<n>都存放在一个队列里,直到队列为空才终止,遇到占位符<n>即进入下一层。
- 在Seq2Seq/Seq2Tree中可以加入注意力机制:注意力机制相当于让模型学习了词语到词语的语义表示之间的软对齐。
- 性能评估:
(1)层次结构的decoder使得模型学习到了目标语义表示的结构,这些结构信息能够帮助生成整个语义表示
(2)Attention机制让模型学习了词语到词语的语义表示之间的软对齐,起到了类似于词典的效果
4.2 Seq2Act
- 端到端的语义图生成。
端到端:一端输入原始数据,一端输出期望得到的结果,只关心输入和输出,中间的步骤全部都不管,形成了一个黑箱。
- 模型框架
(1)根据Sequence-to-Action RNN Model生成动作序列
动作集类型有:Add variable node, Add entity node, Add type node, Add edge, Operation action, Argument action
Encoder-Decoder model:bi-LSTM with attention(基于注意力机制的双向LSTM模型)
经典模型有encoder层包含双向LSTM的bi-LSTM模型,其中,输入是Action embedding。
Action embedding包含句法部分和结构部分,分别编码,一定程度上缓解动作的稀疏性(类似因子化词汇)。
(2)根据动作序列搭建语义图
- 性能:
(1)动作编码更加的紧凑,一定程度解决长距离依赖的问题
(2)可扩展性强,更容易在解码过程中加入知识库的约束信息,来保证解码时生成符合句法、符合语义的语义表示
4.3 小结
Seq2Seq: 直接把目标语义表示序列化
Seq2Tree: 考虑到目标语义表示的结构性
Seq2Act: 用语义图表示语义,用动作序列编码语义图的构建
4.4 基于神经网络模型的扩展
- Constrained decoder:跟知识结合
(1)理由:由于目标语言是形式化语言,需符合严格的条件约束,因此对比机器翻译里面的decoder,语义解析中的decoder可以使用严格的约束条件。
(2)主要部分:句法条件和语义条件
− 句法条件:如”(λa $0 e (and (flight $0) ) from $0 “ 下一个token应该是一个参数(实体或者变量)。
− 语义条件:“(λa $0 e (and (flight $0) ) from $0 ”下一个token应该是一个城市或者机场。
(3)作用:避免生成明显错误的token,从而提高最终生成准确语义表示的概率。
(4)适用性:在所有的基于神经网络的语义解析方法中都可以使用。
(5)Constrained decoder in Seq2Act:
(6)Grammar constrained decoder:
- Coarse-to-fine:“通用结构”+“微调”
(1)理由:自然语言与语义表示之间的gap太大
(2)方案:先生成sketch,再进行grounding,简而言之,先生成大致框架,再依据句子补充实体
(3)先生成sketch的好处:
− 相比完整的语义表示,先生成sketch要容易很多
− sketch具有一定的泛化性,很多句子具有相同的sketch
− 使用sketch之后,生成的序列长度大大缩减
− sketch可以为后面的decoding提供帮助
(4)建模Coarse-to-fine的过程:先生成sketch,在利用sketch指导输出decoding
(5)sketch指导后面的decoding的方法:辅助判断是否缺失实体,提示类型信息等
5 总结和展望
5.1 现有方法总结
方法 | 核心 | 优势 | 劣势 |
---|---|---|---|
基于词典-组合文法的方法 | 词典 组合文法 |
基于组合语义思想,解析过程清晰可见,可解释性强 | 需要学习词典和语义组合文法,且容易受限于词典的覆盖度 |
基于语义图的方法 | 语义图表示 语义图的构建 |
语义图与自然语言句子具有类似的结构;与知识库联系紧密,可充分利用知识库的知识来指导语义图的构建 | 往往依赖于特定的手段来构建语义图,缺乏一定的通用性 |
基于神经网络的方法 | Decoding中的token形式 Decoding中的constrains |
端到端,充分利用神经网络模型的表示能力和拟合能力 | 可解释性差 |
5.2 展望
5.2.1 低成本的模型构建
思路:Transfer、弱监督/无监督学习、预训练
Transfer:领域迁移
- 关键:解耦合结构和词典
- 假设:结构在不同领域下具有通用性
5.2.2 符号与神经网络融合的语义解析
- 现象:两类方法各有优势,基于符号的方法长于推理和利用知识,神经网络的方法长于表示和计算,如何在语义解析中有效融合两类方法也将成为研究者探索的点。
- 挑战:符号在神经网络中的表示形式,以及计算方式(往往不可导)。
- 当前方法:Neural Symbolic Machines (NSM,神经符号机)
- 以memory的形式在neural network中引入symbolic representation。
- 利用强化学习算法来训练模型(symbolic部分不可导)
5.2.3 上下文感知的语义解析
- 问题:当前句子解析需要利用之前句子的信息,如对话理解、代码生成等。
- 关键挑战:指代、省略、如何复用信息
- 当前解决办法:
- 基于CCG的方法(针对指代、省略):增加新词汇(用!<e, t>表示待插入的新词汇)和文法(基于Type-shifting,同时利用!<e, t>表示被省略的词汇)来处理指代和省略等现象
- 基于神经网络的方法:
- turn-level encoder:编码上下文信息
- query segment copying:用copy机制来复用信息(多用于问题复用)
5.2.4 与物理世界交互的语义解析
- 问题:解析执行一系列指令,状态随着指令的执行而发生变化,如机器人执行指令。
- 关键挑战:如何建模之前的指令(同样有指代和省略的现象),如何建模当前环境的状态变化。
- 当前的解决办法:
- 基于注意力机制的encoder-decoder模型:根据特定任务定义System Action、Encoder中建模之前命令以及当前的状态(包括当前命令、之前命令、初始状态、当前状态等)
6 个人理解总结
- 基于词典-组合文法的语义解析从原理上看,更加适用于限定域,扩展到开放域的成本较高,主要是过于依赖词典和组合规则。
- 基于语义图的语义解析可以基于知识库得到较为准确的结果,但是如何构建语义图是一个比较困难的问题,而且求解必须依赖知识库,不过有向开放域扩展的可能性,而且目前各类知识库在逐步建立,或许会有较好的前景。
- 基于神经网络的语义解析中,虽然可解释性差,如果模型比较好,效果也应该比较好,比较适合完成非解释性的任务,像端到端的任务。
- 展望的四个角度事实上都是自然语义理解可以发展的方向,第二个比较偏向基于目前方法进行改进,其余三个是具体的应用场景或任务层面的发展方向。