查看原文
其他

知识库问答的复杂问题研究回顾

舒意恒 PaperWeekly 2022-03-17


©PaperWeekly 原创 · 作者|舒意恒

学校|南京大学硕士生

研究方向|知识图谱


本文尝试回顾近年来知识库问答(Question Answering over Knowledge Bases, KBQA)领域中对于一种特殊的问题类型,即复杂问题(complex questions)的相关研究。复杂问题相比简单问题而言,一般涉及多个知识库事实,并可能包含多个各类约束。相关论文常使用 WebQuestionsSP、ComplexWebQuestions 等数据集进行实验。

本文将从以下方面介绍关于复杂问题的一些研究:

  • 问题分解方法
  • 基于依赖的方法
  • 查询图编码与相似度计算
  • 查询图生成与排序


问题分解方法

在研究复杂问题前,KBQA 中的简单问题已有一些研究。将复杂问题拆分为简单问题进行回答是一个相当直观的思路。

论文标题:Learning to Answer Complex Questions over Knowledge Bases with Query Composition
论文来源:CIKM 2019
论文链接:https://dl.acm.org/doi/abs/10.1145/3357384.3358033

该文提出一种回答复杂问题的方法,称为 TextRay,使用新颖的分解-执行-联合(decompose-execute-join)的方法来回答复杂问题。

上图显示了使用简单查询回答复杂问题的系统的设计。其中包含一些关键步骤。给定一个自然语言问题 ,系统生成一个计算计划(Computation Plan),它用来描述一个匹配的查询 如何被分为部分查询 。然后,基于计算计划,它找到候选的部分查询。
例如,在下图中,对于一个连接的问题, 的候选可以按计算计划 a ) 中的连接查询同时被收集。

另一方面,在计算计划 b ) 中 的搜索可以从 的答案获益。给定部分查询的候选项,算法将计算这些候选项与问题的语义相似度 。每个部分查询的最佳的 个候选被执行,它们的答案有助于找到后续查询的候选,依此类推。
以这种方式,多个完整查询的派生从简单查询候选中生成。最后执行总分最高的查询,以找到复杂问题的答案。

该系统需要一个用于计算部分查询候选项的语义相似性的模型。可以使用一组问题-答案对来离线学习模型。学习从一组候选查询中猜测一个较好的候选查询需要一组(问题 - 部分查询)对的正例和负例。

系统基于隐式监督(即,部分查询派生的任何完整查询是否可以生成该问题的标记答案)生成这些示例。由于这种隐式监管可能容易受到虚假查询的影响,因此它在评估候选查询时将简单轻量级的领域知识作为先验知识结合在一起。综上所述,该文的重点是查询组合语义匹配
实验
作者在 ComplexWebQuestions 和  WebQuestionSP 两个数据集上进行实验,并取得较大的提升。

论文标题:Complex Question Decomposition for Semantic Parsing

论文来源:ACL 2019

论文链接:https://www.aclweb.org/anthology/P19-1440.pdf


在该工作中,作者提出一种新颖的分层语义解析(Hierarchical Semantic Parsing, HSP)方法,该方法利用复杂问题的可分解性进行语义解析。该模型是基于分解-集成的思想,以三阶段的解析架构设计。

在第一阶段,作者提出了一个问题分解器,可以将一个复杂的问题分解为一系列子问题。在第二阶段,作者设计了一个信息提取器来导出这些问题的类型和谓词信息。在第三阶段,作者将先前阶段生成的信息进行整合,并为复杂问题生成逻辑形式。

该模型以层次语义解析的机制和可微的方式结合了 seq2seq 的范式,可以通过端到端方式训练。
两类中间表示

为了更好地建模和泛化逻辑形式,该模型使用两种类型的中间表示:分解表示(decomposed representation, DR)和语义表示(semantic representation, SP)。

  • DR 包含分解后的简单问题

  • SR 包含原始复杂问题的关键信息,包括问题类型和问题中的谓词

两种表示的示例如下表,其中子问题中的 #entity 表示占位符,真实的单词是通过另一个子问题的答案填充的。

每个训练样本是一个四元组,其中包含(原问题,标记答案,分解表示,语义表示)。
模型基本结构
模型的基本结构是一个解析单元。一个解释单元包含一个编码器网络和一个解码器网络,基于 Transformer 的多头注意力编码器/解码器。它的输入包含两部分,输入序列额外信息。它的输出是被解析的目标序列。输入序列和目标序列都是可读的文本,而额外信息是向量序列,它表示某种辅助信息编码。

分层语义解析

分层解析是一个多阶段解析过程。上图阐述了典型的三阶段,每个阶段的过程类似于上文所述的基本架构。其优化目标是最小化给定问题出现答案的条件概率与真实概率二者之间的交叉熵。
实验
作者在 ComplexWebQuestions 进行了实验。值得注意的是,与 HSP 对比的模型不是其他的语义解析模型,而是 seq2seq 模型。


基于依赖的方法
复杂问题无论其复杂性如何,都是由自然语言中简单的短语或句子以某种方式构成的。分析复杂问题中各个成分的依赖关系有助于回答复杂问题。

论文标题:Automated Template Generation for Question Answering over Knowledge Graphs

论文来源:WWW 2017

论文链接:https://dl.acm.org/doi/10.1145/3038912.3052583


模板是知识库问答中,简化输入语句的语义解析并生成可解释答案的结构化查询的重要方法。在该文中,作者介绍了称为 QUINT 的算法,一种仅根据用户问题及其答案自动学习查询模板的系统。此外,QUINT 能够利用语言组合来回答复杂的问题,而无需为整个问题提供任何模板。

词汇

要将问题词汇连接到 KG 中的语义项,我们需要一个词典 。该词典由谓词 和类型 组成。作者使用远程监督构建
对于 ,作者在语料库上提取类似 “” 的模式,其中 是实体, 是一个短语。
对于 ,作者在注解的语料库上进行提取。其中一个参数是实体,其他参数是名词短语。例如,“e and other np”,我们将 np 􏰈→ c 添加到 中,表示 e 的类型是 c.

模板

下图展示了学习和后续使用模板并利用知识库回答自然语言问题的过程。模板是在训练时生成的(下图左侧),在测试时被使用(下图右侧)。训练阶段的输入是问答对,即问答对是用于学习构建模板的。

文本的依赖性分析树是有向的有根树,其结点对应于文本标记,边表示表示结点之间的语法关系。文本模板基于文本的依赖解析。作者的动机是依赖解析(1)可以捕获文本 token 之间的长距离依赖关系,它有助于回答组合性的问题;(2)它提供了极大的灵活性,允许 QUINT 在实例化查询模板时跳过不相关的标记。

具体而言,模板是如何构建的?简言之,QUINT 首先用 NER 方法识别和消岐语句中的实体,QUINT 从在 KG 中找到的包含答案和所识别实体的最小子图生成查询,保留 F1 最高的查询。

接着 QUINT 为每个查询中的答案变量结点连接答案实体的每一个类型约束,将查询中的实体跟语句中的唤起词用边连接,用整数线性规划(ILP)删除有歧义和多余的边同时增加语义对齐注释,最后将这个子图中的复合名词替换为名词标注,用词性标注(POS)实现泛化,形成模板。
实验

作者在 WebQuestions、Free917、ComplexQuestions 三个数据集上进行实验。在 WebQuesitions 上直接使用 F1 作为评价指标,没有达到 SOTA 效果。Free917 上的评价指标是正确回答的准确率,进行标准答案集进行评价。

在 ComplexQuestions 上同样使用了平均 F1 作为评价指标。

论文标题:SPARQA: Skeleton-based Semantic Parsing for Complex Questions over Knowledge Bases

论文来源:AAAI 2020

论文链接:https://arxiv.org/abs/2003.13956

代码链接:https://github.com/nju-websoft/SPARQA


作者认为,许多现有方法都利用类似于依赖的语法解析。但是,产生这样的形式化表达的准确性不能满足足够长的复杂问题。在本文中,作者提出了一种新颖的骨架语法来表示一个复杂问题的高级结构。

这种专用的基于 BERT 的解析算法的粗粒度形式化表达有助于提高下游细粒度语义解析的准确性。此外,为了使问题的结构与知识库的结构保持一致,文中提出一种多策略方法结合句子级和单词级语义。

骨架解析

骨架语法本质上是依赖语法的一个选定子集,用于专门表示复杂问题的高级结构。这种专用的粗粒度表示形式由于其简单性而可能具有准确的解析算法,有助于提高下游细粒度语义解析的准确性。

一个问题句子的骨架是一个有向树,其中的结点是句子中的文本片段,边表示文本之间的关系。具体来说,文本片段是从另一个判断中的关键字(headword)附加的。

文本片段表示短语级别的语义单元。作者在短语结构语法中考虑四种类型的文本片段:从句,名词短语,动词短语和介词短语。但这种类型划分只是为了读者理解,框架解析器并不需要标记文本片段的类型。

附属关系表示文本片段之间的依赖。作者考虑了标准依赖语法中的七种常见关系:形容词从句,其子类型相对从句修饰符,名词修饰符,其子类型所有格替代,连词,开放式补语,以及状语从句修饰符。

骨架具有树结构。当确定骨架语法的粒度并定义文本片段和附属关系的类型时,我们要提供的这种树结构的关键特征是:通过迭代地删除其叶节点,每次迭代中剩余的文本片段始终包含一个格式最完善的句子,直到达到一个简单句子为止,这样就不可能进一步拆分。这种高级结构有助于将复杂问题的主干与其他部分区别开来。

算法主要过程如图所示。

其中包含四个过程可简述如下。

  • Split:决定一个自然语言问题   是否需要进一步拆分。
  • TextSpanPrediction:预测下一个从 中拆分出来的文本片段,输出的文本片段称为
  • HeadwordIdentification:从 附属的剩余的 中识别关键词(headword),这一步从剩余的 中得到文本片段
  • AttachmentRelationClassification:该过程确定从剩余 中的 的附属关系 。作者将 和剩余的 视为馈入模型的两个句子,该模型将七个预定义的附属关系之一输出为
多策略评分

句子级评分器通过挖掘和匹配句子/查询模式来利用从问题到形式化查询的已知映射。通过将实体提及替换为虚拟 token 来获得问题的模式。

单词级评分器基于词袋。作者训练了一个新的神经网络对落地的形式化查询进行评分。问题和形式化查询经过嵌入层,以向量形式表示,然后在相似度矩阵的基础上分别对二者计算一层线性层,获得评分。
实验

作者在 GraphQuestions 和 ComplexWebQuestions 两个数据集上进行实验。

其消融实验证明了骨架解析方法和评分方法二者的有效性。文本片段预测和关键词识别两个步骤的准确率相比于句子分割和附属关系分类更低。

查询图编码与相似度计算

查询图编码的相关工作,并不关注于查询图的生成过程。其基本思路是对问题和查询图进行编码,以向量表示二者,并设计语义相似度模型以向量表示计算问题和查询图的相似度。

论文标题:Knowledge Base Question Answering via Encoding of Complex Query Graphs
论文来源:EMNLP 2018
论文链接:https://www.aclweb.org/anthology/D18-1242.pdf
代码链接:https://github.com/FengliLin/EMNLP2018-KBQA

作者将应用于复杂问题的查询结构编码为统一的向量表示形式,捕获复杂问题中各个语义成分之间的交互。

该模型的架构如上图所示。作者首先用 token 替换查询图中使用的所有实体(或时间)的提及。为了对复杂的查询结构进行编码,将其分为从应答结点(answer node)到焦点结点(focus node)的谓词序列,称其为语义成分。
语义组成表示

为了对语义成分进行编码,我们要考虑谓词 id谓词名称的顺序。如上图所示,第一个语义成分的 id 序列是 {contained_by},谓词名称序列是每个谓词的规范名称的串联,即 {“ contained”,“ by”}.

给定一个单词序列,首先使用词嵌入矩阵将原始序列转换为词嵌入。然后通过单词表示的平均,得到单词序列的表示。

给定一个 id 序列,作者直接将它作为一个整体单元,并使用嵌入矩阵在路径层面直接将它翻译为一个向量表示。使用路径层面嵌入的原因是:1)id 序列的长度不超过 2,这是由生成方法决定的;2)不同的谓词序列的数量大致等同于不同谓词的数量。

在得到单词序列和 id 序列二者的向量表示之后,通过逐元素(element-wise)的相加可得到语义组成的最终向量表示。
问题表示

对问题的编码是在全局和局部两个层面上,以捕捉每个组件的语义信息。

全局信息的获取将整个 token 序列作为输入。使用同样的词嵌入矩阵,将 token 序列转换为向量的序列。然后通过双向 GRU 编码 token 序列。前向和后向的最终隐藏状态拼接起来,以表示全局信息。

问题的局部信息编码,是利用依赖解析表示答案和焦点结点之间长距离的依赖。问题中是没有直接的答案的,答案是用问题中的 wh-单词表示的,作者提取了从答案节点到问题中焦点结点的依赖路径。作者使用了另一个双向 GRU 层来产生依赖层次的向量表示,同时捕捉语法特征和局部的语义特征。

获得表示问题的全局信息和局部信息编码后,使用逐元素相加可获得最终的问题表示。

语义相似度计算

给定有多个语义组件的查询图,现在逻辑形式和问题都被投射到一个共有的向量空间中,表示不同方面的隐式特征。作者在语义组件的向量上使用了最大池化,得到整个查询图的组合式语义表示。类似地,对问题向量关于每个语义组件计算最大池化。最终,我们可以计算查询图和问题之间的相似度分数:

再次值得注意的是,该语义匹配模型与查询图的候选生成方法无关,因此它可以被用于其他现有的语义解析框架。类似地,我们来看下一篇关于查询图语义建模的方法。

论文标题:Modeling Semantics with Gated Graph Neural Networks for Knowledge Base Question Answering
论文来源:COLING 2018
论文链接:https://www.aclweb.org/anthology/C18-1280.pdf

该文同样关注于复杂问题的语义分析。作者探索使用门控图神经网络对语义解析的图结构进行编码。

问题句子的表示是通过词嵌入与深度卷积神经网络学习得到,如下图左侧所示。

对于查询图,门控图神经网络(Gated Graph Neural Networks, GGNN)通过基于相邻节点和关系迭代更新图节点的表示来处理查询图。作者采用 GGNN 进行语义解析,以学习语义图的矢量表示。作者表示该文应该是首个将 GGNN 应用于语义解析和 KBQA 的工作。

GGNN 是一种循环神经网络。重复进行固定次数的循环,其门控机制类似于 GRU。

在计算得到问题表示和图表示后,作者直接使用二者向量表示的余弦作为二者的相似度。
实验

作者在 WebQuestionsSP-WD 和 QALD-7 两个数据集上进行实验,相比现有模型获得一定提升。

查询图生成与排序

查询图或问题的逻辑形式是多数语义解析方法的最终产物。除了精心设计规则,使算法生成最适合问题的一些查询图的思路以外,还可以通过大量生成候选查询图,并使用精心设计的排序方法找到最符合问题含义的查询图。

论文标题:Learning to Rank Query Graphs for Complex Question Answering over Knowledge Graphs
论文来源:ISWC 2019
论文链接:https://arxiv.org/abs/1811.01118

在该文中,作者对神经查询图排序方法进行了实证研究,以解决 KG 上复杂问题的回答任务。作者对六个不同的排序模型进行了实验,并提出了一种新颖的基于自注意的槽位匹配(slot matching)模型,该模型利用了查询图的固有结构。

槽位匹配模型

作者使用了多个模型进行实验,在此主要介绍作者提出的新颖的槽位匹配模型。作者认为现有的方法将问题和查询的核心链(core chain)都编码为各自的向量表示形式,这迫使两个序列进行复杂的转换,可能会阻碍获得最佳性能。

为了减缓这个问题,作者提出一个更结构化的编码方式,将核心链分为跳,并根据每一跳创建问题的多个表示称为槽位(slot),然后分别比较这些槽位。也就是说,问题的表示和核心链的表示不是两项分离的表示。

首先,问题通过 BiLSTM 编码。对于核心链的第 跳,作者定义一个可训练的槽位注意力向量 ,作为查询向量计算注意力权重。然后利用槽位注意力向量计算槽位特定的问题表示,将单词向量添加到嵌入中, 然后使用对应的标量注意力汇总。

核心链是通过分别表示每一跳的另一个 LSTM 表示的,并添加了跳跃连接(skip connection)。

这样得到了不同槽位的问题表示和核心链的表示,将它们拼接。

问题和核心链的相似度计算如下:

而关于比较函数 com(·),作者使用了两种实现:

其中,FF 指的是前向层。

实验

该模型在 DBpedia 知识图谱上的两个 QA 数据集上表现优于其他模型此外。实验表明从较大的那些 QA 数据集迁移到较小的数据集产生了实质性的改进,有效地弥补了训练数据的缺乏。

论文标题:Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases
论文来源:ACL 2020
论文链接:https://www.aclweb.org/anthology/2020.acl-main.91.pdf
代码链接:https://github.com/lanyunshi/Multi-hopComplexKBQA

该文尝试分别处理两种类型的复杂性:具有约束的问题和具有多跳关系的问题。作者通过观察发现,尽早将约束合并到查询图中可以更有效地修剪搜索空间,作者提出了一种改进的分阶段查询图生成方法,该方法具有更灵活的生成查询图的方式。

在查询图生成的每一步,包含三种预定义的操作:扩展、连接、聚合。

这里我们主要讨论对于候选的查询图,作者使用了七维向量进行排序。对于获得的七维向量,通过 REINFORCE 算法选择出能生成正确答案的查询图。

七维向量的每一维分别是:

  • 基于 BERT 的语义匹配模型;具体而言,通过遵循构造查询图所采取的动作序列并将每个步骤中涉及的实体和关系的文本描述顺序添加到序列中,将查询图转换为 token 序列。

  • 查询图中所有对齐实体的累计实体链接分数。

  • 查询图中已对齐的实体的数量。

  • 查询图中实体类型的数量。

  • 查询图中时间表达式数量。

  • 查询图中最高级数量。

  • 查询图中表示答案的实体数量。

需要注意的是,个人认为查询图并不是一个序列结构,序列化后通过 BERT 计算语义分数是否合理值得研究。


小结

本文从四个思路出发,回顾了 KBQA 中关于复杂问题的部分研究。由于篇幅所限,许多细节尚未展开,且现有的复杂问题研究并非局限于本文所讨论的思路。

对于复杂问题,个人认为如果避开使用语义解析的方法,难以对一个问题有较准确的分析。而语义解析方法主要讨论如何利用形式化查询。

其中我们可以看到,分解的思路是避免直接处理复杂问题,而是可以通过先处理简单的问题处理复杂问题。基于依赖的方法,它对问题有一定理解能力,其目标是直接生成最符合给定问题的查询图。

另外,即使没有依赖解析方法,也可以生成大量候选查询图然后通过合理方式进行排序。此外,独立于查询图的生成方法,一些研究者关注于对查询图进行编码,然后结合设计好的相似度计算方法,找到与问题最相似的查询图。

PS:最近正非常活跃地关注于 KBQA 的研究,希望有机会能与感兴趣的小伙伴们交流~



更多阅读





#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存