知识库问答(Knowledge Base Question Answering,KBQA)借助知识库中精度高、关联性强的结构化知识,为给定的复杂事实型问句提供准确、简短的答案.语义解析是知识库问答的主流方法之一,该类方法在给定的问句语义表征形式下,将非结构化的问句映射为结构化的语义表征,再将其改写为知识库查询获取答案.目前,面向知识库问答的语义解析方法主要面临三个挑战:首先是如何选择合适的语义表征形式以表达问句的语义,然后是如何解析问句的复杂语义并输出相应的语义表征,最后是如何应对特定领域中数据标注成本高昂、高质量数据匮乏的问题.本文从上述挑战出发,分析了知识库问答中常用的语义表征的特点与不足,然后梳理现有方法并总结分析其如何应对问句的复杂语义,接着介绍了当前方法在标注数据匮乏的低资源场景下的尝试,最后展望并讨论了面向知识库问答的语义解析的未来发展方向.
1. 引言
随着人工智能技术的快速发展,人机交互的现实应用日益广泛.知识库问答(Knowledge Base Question Answering,KBQA)作为人机交互的重要支撑,成为工业界与学术界共同关注的研究热点之一.相较于基于非结构化文本数据的问答(如文档检索、阅读理解等),知识库问答能借助知识库中精度高、关联性强的结构化知识,为给定的复杂事实型问句提供精确的语义理解或解析,并在知识库中查询推理来得到准确、简短的答案.如问句“法国在第一次世界大战时的总统是谁?”中需要对法国历任总统的就任与卸任时间分别同第一次世界大战的开始与结束时间进行数值比较,从而得到答案“雷蒙·普恩加莱”.目前主要有两类知识库问答方法:一类基于语义解析(semantic parsing)[1~3],将自然语言问句按照特定文法(grammar)或者处理步骤映射为结构化的语义表征(meaning representation),再将其改写为知识库查询从而获得最终答案;另一类基于信息检索(information retrieval)[4~6],首先通过实体链接,识别出问句中关心的实体作为主题实体(topic entity),并获取以主题实体为中心的知识库子图,将子图中的每个节点都视作候选答案,再学习问句和候选答案的向量表示,最后通过排序模型或分类模型对候选答案进行筛选,从而获得最终答案.基于语义解析的方法以符号化表征表示问句的语义,基于信息检索的方法以稠密向量表示问句的语义.相比基于信息检索的方法,语义解析的方法能够应对更多类型的问句,例如含有实体约束、类别约束、数值比较、数值排序等的问句,从而有更好的应用前景.早期的知识库问答系统以基于符号和规则的专家系统为主,具有代表性的如BASEBALL[7],将问句解析为规格列表(specification list),从而回答美国棒球比赛相关的问句.但是专家系统的核心是强依赖领域专家的规则,这导致其应用领域狭窄,可回答问句类型受限等问题.近年来,随着自然语言处理和机器学习技术的进步,这些问题逐步得到缓解,面向知识库问答的语义解析技术也涌现出了大量高水平研究论文,在诸多评测数据集上显示出良好的性能.尽管如此,现有方法依旧面临了如下挑战.(1) 如何选择合适的语义表征形式以表达问句的语义.语义解析的第一步是为问句选择具体的语义表征形式,现有方法采用了多种不同形式的语义表征.有些语义表征的表达能力强,能覆盖多数类型的自然语言问句,但结构复杂,构造困难;有些语义表征的结构紧凑,构造相对容易,但表达能力有所欠缺.因此,采用合适的语义表征才能平衡好表达完备性与构造便捷性,在覆盖更多类型的问句的同时,降低模型构造该语义表征的难度.(2) 如何解析问句的复杂语义并输出相应的语义表征.复杂问句的语义丰富,包含了知识库中的多个关系,实体或类别约束,比较或排序等函数算子等.同时,相同的语义成分按照不同的顺序或结构组合,表达的语义则大不相同.因此,准确地识别出问句包含的语义成分,并将不同的语义成分按照特定顺序和结构组合,才能准确地反映问句的真实语义.(3) 如何应对特定领域中数据标注成本高昂、高质量数据匮乏的问题.现有方法主要是数据驱动,但是给问句标注相应的语义表征或最终答案需要标注人员熟悉知识库的本体(ontology)和实例(instance),高昂的标注成本导致特定领域仅有少量标注数据,甚至没有标注数据,从而让问答模型训练困难.因此,在标注样本匮乏的情况下实现模型的有效训练与泛化,是知识库问答落地的必要条件.现有的部分知识库问答综述[8~11]对语义表征的分析较少,对语义解析方法的介绍较笼统,未能体现不同解析方式的特点与适用场景.为了更好地帮助领域内研究者,本文通过梳理面向知识库问答的语义解析研究,总结和分析当前方法应对上述挑战的途径和发展趋势,为实现高质量的知识库问答系统提供可借鉴的思路.
2. 背景知识
知识库是用于存储结构化事实信息的计算机系统.早期的知识库以关系型数据库(Relational DataBase,RDB)为主,将现实世界的实体、实体本身的属性、实体之间的联系以表格形式的关系模型来表示.近年来,以语义网络(semantic web)和知识图谱(knowledge graph)为根基的图数据库(Graph DataBase,GDB)成为知识库的研究主流,其中,实体、类别、属性值作为节点,分别以特定的关系或属性边相连.图1给出的图数据库实例展示了中国部分省份的相关信息,如三元组“(Jiangsu,capital,Nanjing)”表明江苏的省会是南京.典型的知识库包括WordNet[12],DBpedia[13],Freebase[14],Wikidata[15]等.
基于知识库中的结构化信息,知识库问答系统能针对用户给定的自然语言问句,给出简洁、准确的回答.目前主要有基于语义解析和基于信息检索这两类知识库问答方法.以问句“Which provinces border Jiangsu?”为例,基于语义解析的方法将该问句映射为结构化的语义表征,如λ演算(lambda calculus)表达式[16,17]λx.provincex∧borderx,Jiangsu,再将其改写为知识库查询得到答案,如SPARQL查询[18]SELECT?x WHERE{Jiangsu border?x . ?x type province. };基于信息检索的方法将图1所示的以主题实体(即Jiangsu)为中心的知识库子图中的每个节点都视作候选答案,学习问句和候选答案的向量表示,再通过排序模型计算二者之间的相似度,或者通过分类模型对候选答案进行分类,从而得到答案.
早期的基于信息检索的方法[4]以词袋(bag-of-words)模型表示问句,以候选答案及其关联子图内的实体和关系作为答案特征,并分别通过两个线性映射得到问句和候选答案的向量表示,再以向量点积作为相似度得分.随着深度学习的发展,基于信息检索的方法广泛使用神经网络模型学习问句和候选答案的向量表示[5,19~23].例如,Dong等人[5]提出多列卷积神经网络,从主题实体到候选答案的路径、候选答案的邻居子图、候选答案的类别这3个方面考虑候选答案的特征,并为问句同样学习了3个向量与之对应.Hao等人[20]通过长短时记忆网络[24](Long Short-Term Memory,LSTM)获得问句的表示,并利用交叉注意力(cross-attention)机制建模候选答案与问句之间的关联性.Sun等人[22,23]结合外部文本(如维基百科)和知识库子图,构建问句相关的子图,并利用图神经网络在该子图上更新候选答案的向量表示.部分工作[6,25~28]引入多跳推理(multi-hop reasoning)机制,迭代更新问句或候选答案的向量表示,从而更好地应对多关系问句.例如,Miller等人[6]提出键值记忆网络(key-value memory network),将问句关联的三元组存入键值记忆网络中,迭代计算存储的三元组与问句的关联性,并利用三元组信息更新问句的向量表示.
由此可见,基于信息检索的方法无需研究者了解问句语义表征和知识库查询语言的细节,较为便捷,但是可回答问句的类型受限,难以回答带有实体约束或函数算子的问句.如问句“Which is the largest province that borders Jiangsu?”需要对江苏省相邻省份的面积进行排序操作.而基于语义解析的方法生成的语义表征可以包含问句中的约束和算子,并利用知识库本身的查询引擎获得准确答案.本文主要介绍面向知识库问答的语义解析方法,对信息检索方法不做进一步展开.
语义解析是将自然语言句子映射为结构化语义表征,解析得到的语义表征通常可以在某个环境中被执行并获得相应的结果,如知识库问答中查询知识库获得问句的答案.除知识库问答外,语义解析技术在其他多种人机交互场景中也得到广泛应用,如机器人引导(robot instruction)、任务导向型对话(task-oriented dialogue)等.相较于这些场景,面向知识库问答的语义解析要求输出的语义表征中所有语义成分与知识库中的信息对应.图2给出了面向知识库问答的语义解析的一般流程:首先为问句选择具体的语义表征形式;然后根据该语义表征形式设计相应的语义解析方法,从而完成自然语言问句到其对应的语义表征的映射;最后将生成的问句语义表征改写为知识库查询,从知识库中获取问句的最终答案.
面向知识库问答的语义解析方法按照解析方式可以分为两类:枚举排序和编码解码.如图3所示,基于枚举排序的方法是通过特定文法或者人工设计的处理步骤枚举所有候选语义表征,再通过一个打分函数对枚举的所有候选排序,筛选高分候选输出.考虑到候选的搜索空间巨大,一部分工作采用迭代式枚举排序,每轮迭代基于上一轮筛选得到的语义表征子式进行扩展,再进入下一轮迭代.最终输出的语义表征被改写为相应的知识库查询.相比枚举排序这类方法依赖特定文法、人工规则或者模板,编码解码的方法采用基于编码器-解码器(encoder-decoder)架构的模型直接学习自然语言到语义表征的映射,首先利用编码器得到问句的向量表示,再利用解码器根据问句向量输出符号化的语义表征.
在语义表征到知识库查询的改写阶段,语义表征中的成分需要与知识库对应,即语义表征中的实体需要被链指到知识库中的对应实体,语义表征中实体间的关系需要被映射到知识库中对应实体间的关系.一部分工作在解析得到语义表征时已经完成与特定知识库的对应,因此可直接将其改写为知识库查询,这类语义表征被称为有根基的语义表征(grounded meaning representation).相比直接生成有根基的语义表征,一部分工作认为先将问句解析为知识库无关的通用表征能够实现解析模型在不同知识库上的迁移与复用,因为通用表征的实体和关系没有与特定知识库对应,所以称之为无根基的语义表征(ungrounded meaning representation).无根基的语义表征在改写为知识库查询时,往往通过结构修改、实体链指及关系映射等方式先获得有根基的语义表征,再将其改写为知识库查询.不同解析方式的实现方法和优缺点将在第4节和第5节进一步展开介绍.
在数十年的发展中,知识库问答领域涌现了大量的数据集.早期以关系型数据库为基准知识库的阶段,被广泛采用的问答数据集包括面向美国地理领域的GEO880(https://www.cs.utexas.edu/users/ml/nldata/geoquery.html)、面向工作领域的JOBS640(https://www.cs.utexas.edu/users/ml/nldata/jobquery.html)、面向旅行计划领域的ATIS[29]等.近年来,以图数据库为基准知识库的问答数据集成为知识库问答领域的主流.表1列举了近年来被广泛采用的以图数据库为基准的英文知识库问答数据集[2,25,30~44],分别介绍了各数据集名称、采用的基准知识库、数据集的样例规模、是否含有需要多个三元组查询或函数约束的复杂问句、每个问句的具体标注形式、样例中问句的来源.
在设计具体的语义解析模型前,研究者需要先确定采用何种语义表征作为模型的输出以表示问句的语义.现有方法采用了多种不同形式的语义表征.有些语义表征的表达能力强,能覆盖多数类型的自然语言问句,但结构复杂,构造困难;有些语义表征的结构紧凑,构造相对容易,但表达能力有所欠缺.选取合适的语义表征对提升解析模型的效果起着至关重要的作用,因此需要平衡好语义表征的表达完备性与构造便捷性,在覆盖更多类型的问句的同时,降低模型构造该语义表征的难度.如表2所示,目前知识库问答中常用的语义表征可分为3类,分别是λ演算及其衍生[16,17,45]、图状逻辑表达式[3,46~53]、程序语言[18,43,54~57].表2总结了这些常用语义表征的特点和相应的不足之处.下文分别介绍这三类语义表征,并对其进行了小结与讨论.
语义表征的表达完备性决定了可覆盖问句类型的范围,而构造便捷性影响了模型构造该语义表征的难易程度.在上述3类语义表征中,λ演算及其衍生和程序语言均具有较强的语义表达能力,其中函数-论元型的程序语言语义表征可通过更新自定义函数来增强其表达能力.而图状逻辑表达式受限于图结构,表达完备性较弱于其他两类语义表征,例如问句“Which province is larger,Jiangsu or Anhui?”所需的三目运算符sizeJiangsu>sizeAnhui?Jiangsu:Anhui较难通过图状逻辑表达式呈现. 虽然表达能力较弱,但图状逻辑表达式有更强的可读性,并且与问句本身的句法结构或者图数据库的拓扑结构具有一定的相似性,可以在问句的句法解析结果或者知识库子图上直接改造,降低了语义表征的构造难度.而λ演算虽然表达能力强,但是表述较为繁琐,增加了构造难度,因此λ-DCS在其基础上改进,使得表述更紧凑.程序语言式语义表征通常以嵌套结构表示子式和语义成分之间的关系,与问句句法结构及知识库拓扑结构差异较大,无法像图状逻辑表达式一样利用问句结构或知识库拓扑结构的信息,在生成嵌套结构时易出错.
因此,平衡好表达完备性和构造便捷性,是选择语义表征时需要考虑的主要问题,在覆盖更多类型的问句的同时,降低模型构造该语义表征的难度,从而提升模型的解析效果.
在选定了语义表征的具体形式后,研究者设计相应的语义解析方法将非结构化的自然语言问句转变为结构化的语义表征.当前的语义解析方法可以分为基于枚举排序的方法和基于编码解码的方法.本节主要介绍基于枚举排序的方法.
如图3所示,枚举排序类的方法先枚举所有可能的候选语义表征子式,再利用打分模型对枚举的所有候选排序,并输出高分候选.所有的候选均通过特定文法或者人工定义的处理步骤获得,为了减少候选语义表征的搜索空间,部分工作采用迭代式枚举排序,即束搜索(beam search),每轮迭代基于上一轮筛选得到的语义表征子式进行扩展,再进入下一轮迭代,从而完成对问句复杂语义的解析.在枚举产生的语义表征上,一部分工作会直接构造与特定知识库对应的有根基的语义表征;另一部分工作选择与特定知识库无关的无根基的语义表征,最后将其映射到特定知识库上.表3将基于枚举排序的语义解析方法按照枚举方式进一步分类,即依赖特定文法[1,30,58~62]和自定义处理步骤[2,3,33,34,46,47,49,53,63~87]列举了每种方式涉及的相关论文,概括介绍其主要特点.下文分别介绍这几类方法,并总结了枚举排序类方法的主要区别以及各自的优缺点.
综上所述,枚举排序这一类方法在应用时主要区别在两个方面:一个是特定文法、人工定义的处理步骤、或者模板库的不同,导致每轮迭代能枚举获得的候选语义表征子式不同,对方法本身的完备性也有不同的影响;另一个是打分函数设计多样,早期主要依赖以人工特征为输入的对数线性函数,随着深度学习的不断发展,卷积神经网络[3]、循环神经网络[71,72]、图神经网络[73]、预训练语言模型[70]等深度学习模型也得到广泛采用,打分函数考虑的特征信息愈发多样.
枚举排序这类方法的主要优点包括:(1) 可控性强,因为每轮迭代扩展得到的所有候选均符合规范,所以最终的语义表征是可执行的;(2) 可解释性强,因为解析的过程有确定性的语义表征子式或中间状态,所以每一步均可追溯.但不同的技术路线也展现出不同的特点.例如,基于模板填充的方法利用模板严格限定了最终表征的结构,模板的覆盖率决定了可回答问句类型的上限,使用固定模板库的方法泛化性较差,但增量更新时只需更新模板库,较其他方法更新组合规则、调整处理步骤会更容易;基于线图的方法通过词汇映射和组合规则约束生成子式,相比完全依赖文法规则的方法和使用固定模板库的方法,能灵活地应对语义组合复杂的问句;基于转移的方法在枚举阶段可调整处理步骤以覆盖更多类型的问句,可干预性强.
本节主要介绍基于编码解码的语义解析方法.相比枚举排序类方法依赖特定文法或自定义处理步骤,编码解码的方法采用基于编码器-解码器架构的模型直接学习自然语言到语义表征的映射,其中编码器将自然语言问句转变为低维稠密的向量表示,解码器根据编码器输出的问句向量输出符号化的语义表征.如表4所示,本文按照与知识库交互的方式将现有方法分为两类,分别是单次交互[43,88~103]与迭代交互[57,104~106].前者在测试阶段解码时不与知识库进行交互,只将最后的完整语义表征在知识库中执行,这种方式需要在训练阶段以完整的语义表征为标注数据;后者在解码阶段与知识库进行迭代交互,执行子式获取中间结果,并指导后续子式生成,这种方式适用于训练阶段只有最终答案作为标注的弱监督(weak supervision)场景.
编码解码的方法利用模型直接建模语义表征的生成过程,这类方法的优点在于不依赖复杂的文法规则,候选语义表征的获取相对灵活.但语义解析需要保证生成的语义表征符合规范,因此这类方法往往需要在解码过程中加入多种不同约束或者先验信息,如:引入非终止符改造标注的语义表征,形成嵌套树结构,辅助解码器深入理解语义表征的结构信息;引入字段检查,为每一步解码时提供前后一致且符合规范的候选字段.
同时,与知识库的交互也影响语义解析的结果.单次交互的方法在测试阶段只在生成最终语义表征后与知识库交互一次,得到最终答案.虽然知识库查询开销小,但是这类方法在每一步解码时,需以知识库的全部实体或关系作为候选词表,在大规模知识库下面临搜索空间过大的问题,并且由于解码出的实体和关系,实体和实体之间可能不相连,导致最终语义表征的执行结果可能为空.而迭代交互的方法虽然知识库查询开销大,但是能从知识库中获取子式的中间结果,指导后续子式生成,降低了搜索空间.从适用场景角度分析,单次交互的方法相对更适用于小规模知识库问答,并且需要以完整的语义表征作为标注,虽然标注成本较高,但模型在训练与测试阶段均比迭代交互的方法更高效;而迭代交互的方法相对更适用于大规模知识库问答,并且可以只以最终答案作为弱监督训练.
语义解析模型的训练往往依赖大量的标注数据,其中一部分工作需要完整的问句-语义表征对作为监督信号,另一部分工作允许只有问句的最终答案作为弱监督信号.但无论是何种监督方式,所需的数据标注都需要标注人员熟悉知识库的本体和实例,大量数据必然带来高昂的标注成本,如何在标注样本匮乏的低资源场景下利用现有数据,有效训练语义解析模型.也是近期受到关注的一个话题.本文在这一节分别从数据驱动和人机协同两个方面介绍近期工作的尝试.
低资源场景下的语义解析方法主要从数据驱动和人机协同这两个方向进行探索.在数据驱动方向上,现有工作分别从问句扩充、问句重采样以及领域迁移这三个角度出发.在问句扩充的角度下,现有方法利用归纳出的文法或训练出的问句生成模型,为解析模型提供更丰富且均衡的训练数据;部分工作亦通过众包的方式对人工构造的模板问句进行复述,从而获取自然语言问句,与当前数据集构造方式类似;在问句重采样的角度下,现有方法通过元学习和重采样技术为当前样例调整训练集分布,从而缓解数据集中样本分布不均衡,特定类型样本面临低资源困境的情况;在领域迁移的角度下,现有方法既要考虑到如何迁移不同领域间的共性知识,又要考虑如何低成本获取不能迁移的领域特定知识.而人机协同的方法将最能提升模型性能的样例提供给标注人员,根据反馈更新模型参数或模板库.
这两个方向各有优势,相比人机协同的方法,数据驱动的方法成本更低,例如通过在问句生成数据集上微调预训练语言模型,能迅速为解析模型提供大量训练样本,但提供的样本的质量不如人机协同的方法,效果提升可能没有人机协同的方法显著.因此,在模型初始表现较低时,可通过数据驱动的方法进行加强;在模型表现相对较高,更需要高质量数据或反馈时,可通过人机协同的方法进行加强.
通过上述比较分析可以看出,面向知识库问答的语义解析已经取得一定进展,但仍然存在没有克服的问题和值得深入研究的方向.
由于现实世界的知识模态多样、结构各异且更新迅速,单一知识库难以覆盖用户的信息需求,部分工作[19,22,23]借助开放文本辅助知识库问答模型的决策,但依旧未能有效利用大量结构化、半结构化、非结构化知识以及多模态信息,如常识知识库、社区问答库、图片、视频等.将多模态异构的知识有效整合,并且以统一的语义表征进行知识表示,可以有效支撑在不同模态和结构的知识上进行协同查询推理.
在实际场景中,用户往往围绕一个主题进行多次提问,在多轮问答场景中,单个问句常出现语义缺失,如实体指代不清、谓词缺失等,导致单轮语义解析模型无法准确理解问句的语义.现有工作[120,121]主要利用对话历史中已生成的语义表征的信息对后续问句的表征进行补全,因此如何根据对话状态构建前后语义表征字段之间的共指关联成为研究重点.而在关联置信度低的情况下,需要探索如何根据缺失的语义信息生成相应问句提供给用户,通过用户反馈来明确查询意图.
近期的语义解析工作通常采用深度学习模型,但深度学习模型往往因为鲁棒性不足而被诟病.近年来,在文本阅读理解中,模型的鲁棒性开始得到关注,主要对答案来源的文本加入噪音,从而增强问答模型的抗攻击能力[122,123].而在知识库问答领域,除了考虑知识库本身的噪音信息外,还需要考虑问句中的噪音对语义解析的影响,主要包括一词多义、拼写错误、介词短语引起的歧义、句式倒装等.增强语义解析模型对问句和知识库中的噪音的抗干扰能力是实现知识库问答系统落地的关键.
当前的语义解析方法往往是在训练数据较为充分的情况下进行训练,区别主要在标注数据是完整的语义表征还是只有最终的答案.但知识库问答系统落地时经常是面向特定领域的,缺乏标注数据.现有方法主要利用问句生成和重采样进行数据增强和分布调整、或者利用领域迁移或人机协同引入额外知识和反馈信号,尚缺乏对预训练-微调这一范式的探索,包括利用知识库本身信息、通用语言知识、跨领域语义解析模型,进行融入知识的语言模型预训练、低资源下目标领域的语义解析模型的预训练等.
面向知识库问答的语义解析技术将自然语言问句映射为计算机可读的结构化语义表征,是实现人机交互的重要手段.这一技术当前主要面临3个挑战,分别是如何选择合适的语义表征形式以表达问句的语义,如何解析问句的复杂语义并输出相应的语义表征,以及如何应对特定领域中数据标注成本高昂、高质量数据匮乏的问题.本文分析了知识库问答中常用的语义表征的特点与不足,然后梳理现有方法并总结分析其如何应对问句的复杂语义,接着介绍了当前方法在标注数据匮乏的低资源场景下的尝试,最后展望并讨论了面向知识库问答的语义解析的未来发展方向.