【论文阅读】Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases

《Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases》

论文来源:ACL2020

论文链接:https://www.aclweb.org/anthology/2020.acl-main.91.pdf

论文代码:https://github.com/lanyunshi/Multi-hopComplexKBQA

 

摘要

关于基于知识库回答复杂问题的先前工作通常分别解决两类复杂问题:带约束的问题和具有多跳关系的问题。在本文中,我们同时处理这两种类型的复杂性。观察到早期把约束合并到查询图中可以更有效地修剪搜索空间,我们提出了一种改进的分段查询图生成方法,该方法具有更灵活的查询图生成方法。我们的实验清楚地表明,我们的方法在三个基准KBQA数据集上达到了最先进的水平。

1. Introduction

在简单问题上有很多的KBQA研究。所谓简单问题,就是问题实体和答案实体之间只包含了一个单关系。但是实际的问题一般会比较复杂,最近也有一些工作来研究复杂KBQA。

问题的复杂性分两种:(1)带约束的单关系问题。举个例子“Who was the first president of the U.S.?”,问题实体“U.S.”和答案实体之间有个单关系“president_of”,但是也发现“first”这个约束需要满足。针对这类复杂问题,提出了一种分阶段的查询图生成方法,该方法首先确定一个单跳关系路径,然后对其添加约束条件,形成查询图。(2)带有多跳关系的问题。举个例子“Who is the wife of the founder of Facebook?”,问题实体“Facebook”和答案实体之间存在两跳关系 ,“wife_of”和“founder_of”。为了回答这类多跳问题,我们需要考虑更长的关系路径才能得到正确的答案。这里的主要挑战是如何限制搜索空间,即减少要考虑的多跳关系路径的数量,因为搜索空间随着关系路径的长度呈指数增长。一个想法是使用束搜索(beam search),建议在扩展关系路径时只考虑最佳匹配关系而不是所有关系。然而,将这两种复杂性结合起来处理的工作很少。

在本文中,同时处理复杂KBQA的约束和多跳关系。本文提出通过允许较长的关系路径来修改分段查询图生成方法。本文不是在建立关系路径后添加约束,而是同时合并约束和扩展关系路径。在两个KBQA数据集上,本文实现了SOTA的效果。

2. Method

2.1 Preliminaries

本文的方法灵感主要来自于分阶段查询图方法。一个查询图有四种类型的节点,如下图1所示:

grounded entity:阴影矩形框,表示知识库中现存的固定的实体;

existential variable :无阴影矩形,存在变量,不固定的实体;

lambda variable:圈,不固定的实体,表示答案实体;

aggregation function:菱形,聚合函数,在实体集上操作的argmin 和count函数。

一个查询图应该有一个lambda变量来表示答案,至少有一个固定的实体,以及零个或多个存在变量和聚合函数。上图1表示的是问题“Who is the first wife of TV producer that was nomiated for The Jeff Probst Show?”的查询图。其中CVT节点是用于n元关系的Freebase中的一种特殊虚拟实体。

分阶段的查询图总结如下:

1)从问题中找到的固定实体(称为主题实体)开始,标识将主题实体链接到lambda变量的核心关系路径;现有的工作考虑的核心关系路径是包含一个单关系的。

2)在步骤1中标识的核心关系路径上,加上问题中找到的一个或多个约束。一个约束由一个带关系的固定实体或者聚合函数组成。

3)利用步骤1和步骤2生成的所有候选查询图,通过测量它们与问题的相似性来对它们进行排序。常通过神经网络模型(如CNN)来实现相似度度量。

4)在知识库上执行排名最高的查询图以获取答案实体。

2.2 Motivation

      当我们直接应用2.1中的现有方法来做带约束的多跳KBQA时,我们面临的主要挑战是包含多个关系跳的问题(如图1中的示例)无法处理,因为现有的工作只考虑具有单跳(或带有CVT节点的两个跳)的核心关系路径。如果我们做一个简单的修改,允许核心关系路径更长,搜索空间会突然变得更大。例如,在ComplexWebQuestions数据集中,如果我们允许核心关系路径至多3跳,平均每个问题将有大约10000个核心关系路径,这在计算上花销太大。
      最近关于多跳KBQA的研究通过束搜索beam search来解决这个问题,即在生成(t + 1)-hop关系路径之前只保留top-K个t-hop关系路径。然而,这种方法在生成关系路径时忽略了约束。问题中的约束有助于缩小搜索空间,并且引导核心路径朝正确的方向生成。
      以图1中的问题为例。给定一个部分核心关系路径(Jeff Probst Show,nominated for,y1,nominater,y2),如果我们要在y2扩展这条路径,我们将需要考虑与y2连接相关的知识库中的所有关系,其中包括被提名Jeff Probst Show的所有实体。但是,如果我们先在y2上加上约束(is a, TV producer),那么我们只需要考虑那些与被提名为The Jeff Probst Show.的与TV producers相关的关系。

      因此,本文提出了一种改进的分阶段查询图生成方法,该方法不需要等到每个核心关系路径被完全生成后才附加一个约束。这种更灵活的生成查询图的方法,再加上一个束搜索机制和一个语义匹配模型来指导剪枝,探索了一个更小的搜索空间,同时仍然保持很高的机会找到正确的查询图。

2.3 Query Graph Generation

      形式上,本文的方法使用束搜索来迭代生成候选查询图。我们假设第t次迭代产生一组K个查询图,表示为Gt。在第(t+1)次迭代中,对于每一个g∈Gt,我们应用{extend,connect,aggregate}三个操作中的一个使g多增长一条边和一个节点。我们对所有g∈Gt都这样做所有适用于每个g的动作。让G′t+1表示所有结果查询图的集合。然后我们使用一个评分函数(在第2.4节中解释)将G′t+1所有查询图进行排序,并将其中的top-K放在Gt+1中。我们继续迭代,直到没有g∈Gt+1比任何g∈Gt的得分高。也就是说,下一次迭代生成的图,没有一个比当下迭代中任何一个查询图得分高,就停止迭代。

     本文允许以下操作来扩增查询图。图2显示了这些操作(action)的示例。

(1) extend操作将核心关系路径再扩展一个R中的关系,R是知识库关系的集合。如果当前查询图只包含一个主题实体e,则extend操作会在KB中找到一个链接到e的关系r,并用r来扩展路径,并使得r的另一端成为lambda变量x。如果当前查询图有lambda变量x,extend操作将x更改为存在变量y,通过对KB执行当前查询图来查找KB中所有连接y的实体,找到连接这些实体之一的关系r,最后在查询图里将r连到y上,r的另一端成为新的lambda变量x。

(2)除了当前核心关系路径开头的主题实体外,问题中经常会发现其他固定实体。connect操作将这样一个固定的实体e连接到lambda变量x,或者连接到与x相连的存在变量上,也就是CVT节点(本文只考虑与lambda变量相连的存在变量)。要决定使用哪个关系r来链接e和x,我们可以通过执行当前查询图来找到x的所有bindings,然后找到这些实体之一和e之间存在的关系。

(3)使用一组预定义的关键字从问题中检测出aggregate 函数。聚合操作将检测到的聚合函数作为新节点附加到lambda变量x或连接到作为CVT节点的与x相连的存在变量上。
        本文的方法的新颖之处在于,extend操作可以在connectaggregate操作之后进行,这是以前的方法所不允许的。

2.4 Query Graph Ranking

       在第t次迭代结束时,我们通过为每个图g∈G′t导出一个7维特征向量Vg,并将这些向量输入到一个全连接层中,后接一个softmax得到p(g | Q),来为G′t中的候选图排序。
       Vg的第一个维度来自一个基于BERT的语义匹配模型。具体地说,我们通过遵循构造g所采取的操作顺序,并将每个步骤中涉及的实体和关系的文本描述按顺序添加到序列中,从而将g转换为token序列。存在变量和lambda变量被忽略。例如,图2(a)所示的查询图被转换成以下序列:(the,jeff,probst,show,nominated,for,nominated)。(角注中提到,本文把问题也变成token序列,并且把查询图token序列和问题token序列拼接成一个序列,用特殊token [CLS]把它们分开,BERT处理两个序列通常就是这样。然后本文用标准的BERT模型来处理整个序列,并在顶层得出一个分数。本文在学习过程中微调了预训练的BERT参数。)
       Vg的其他6个维度如下:第一个维度是查询图中所有固定实体的累计实体链接分数。第二个是查询图中出现的固定实体的数量。第三到第五个分别是查询图中实体类型、时间表达和最高级的数量。最后一个特性是查询图对应的答案实体的数量。

2.5 Learning

      为了训练模型,本文使用成对的问题和它们的正确答案,而不使用任何ground truth查询图。遵循Das等人的框架,本文使用REINFORCE 算法以端到端的方式学习策略函数pθ(g | Q),其中θ是要学习的参数集,包括要更新的BERT参数和7维向量Vg的全连通层参数。我们使用预测答案相对于ground truth答案的F1分数作为reward。

3 Experiments

3.1 Implementation Details

        我们的方法要求从问题中识别实体,并将其链接到知识库中相应的entries。对于命名实体链接,我们对ComplexWebQues数据集使用现有的链接工具。对于实体类型链接,我们利用训练问题及其答案来学习链接模型。对于时间表达式和最高级链接,我们只需使用正则表达式和最高级单词列表。最高级的单词被手动映射到两个聚合函数:argmax和argmin。
       我们用BERT基模型初始化ranker中的BERT模块。其他参数随机初始化。对于BERT模型中的超参数,我们将dropout率设置为0.1,隐藏大小为768。层数和多注意头的数目分别设定为6和12。我们使用Freebase的最新版本作为所有数据集的知识库。对于束搜索,我们将束大小K设置为3。

3.2 Datasets

        我们使用三个数据集来评估我们的方法:ComplexWebQuestons(CWQ)、WebQuestionsSP(WQSP)和ComplexQuestions(CQ)。我们把CWQ作为主要的评价数据集,因为CWQ具有多跳关系和带约束的复杂问题的比例比较高,如表1(a)所示。例如,CWQ中超过30%的问题具有2跳关系和约束,而WQSP中只有0.5%。请注意,我们不能为CQ数据集收集类似的统计信息,因为它不提供ground truth查询图,但我们观察到CQ中的主要问题具有1-hop关系。

        表1(b)里是跟一些baseline的对比结果。前三个Yih,Bao,Luo是现存的分段查询图生成方法,不能解决多跳问题。第四个Lan是处理约束并考虑多跳关系路径,但既不使用波束搜索也不使用约束来减少搜索空间。第五个Chen使用波束大小为1的波束搜索来处理多跳问题,但不处理约束。第六个Bhutani将复杂问题分解为简单问题,在CWQ的Prec@1指标上SOTA。第七个Ansari由问题token by token地生成查询程序,并在WQSP上实现了SOTA。从表1(b)可以看出,本文的算法在CWQ的prec@1和F1指标上都效果最好。在其他两个数据集上也SOTA,证明了鲁棒性。

3.5 Ablation Study

       为了更好地理解模型,本文还进行了消融研究。为了验证我法的有效性并不是由于使用了BERT,我们用LSTM代替了BERT。我们可以在表1(c)中看到,基于LSTM的方法仍然可以优于先前的技术水平。这说明本文的模型的有效性不仅仅是因为使用了BERT。还测试了方法的三个版本,每个版本都删除了一个操作,以了解是否所有三个操作都是必需的。结果也显示在表1c中。可以看到聚合作用是最不重要的作用,而extend作用是最重要的作用。然而,需要将这三个动作结合起来,以达到最佳性能。

3.6 Error Analysis

(1)排序错误。65%的error来自于查询图的误预测。一些关系即使人来判断也很难识别。比如本文模型把“Who was VP for Nixon?”的关系误预测为“profession” ,正确的关系是“vice president”。在没有外部知识并且训练数据里没有的情况下,很难理解VP这个缩写。

(2)主题链接错误。有27%的错误是由于实体或表达链接错误造成的。比如“What guitar does Corey Taylor play?”,具有约束类型“guitar”,但在链接过程中未检测到它。

(3)查询图生成的局限性。比如“What jobs did John Adams have before he was president”,这个问题,用本文的策略无法找到一个匹配的查询图。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值