《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”,这个问题,用本文的策略无法找到一个匹配的查询图。

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

  1. Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base(笔记)

    introduction 组织世界上的事实并且把它们存储成结构化的数据逐渐变成开源域问答的重要资源,例如:DBPedia (Auer et al., 2007) and Freebase (Bolla ...

  2. 论文阅读—Relation-Aware Graph Attention Network for Visual Question Answering

    论文阅读-Relation-Aware Graph Attention Network for Visual Question Answering 一.标题 用于视觉问答的关系感知图注意力网络 二.引 ...

  3. 论文阅读“Embedding Graph Auto-Encoder for Graph Clustering”(TNNLS2022)

    论文标题 Embedding Graph Auto-Encoder for Graph Clustering 论文作者.链接 作者:Zhang, Hongyuan and Li, Pei and Zh ...

  4. 论文阅读:Adaptive Graph Convolution for Point Cloud analysis

    自适应图卷积用于点云分析 论文地址: https://arxiv.org/pdf/2108.08035. 代码地址: https://github.com/hrzhou2/AdaptConv-mast ...

  5. ICSE NIER 2017 论文阅读 - Production-Driven Patch Generation

    前言 这个是前天的文章,昨天.今天的文章都还没看的.很僵硬. 决定先补上这一篇,然后再读两篇SSBSE的文章. 简介 本文旨在阅读 ICSE NIER 2017 论文- Production-Driv ...

  6. 论文阅读:Retrieval-augmented Generation across Heterogeneous Knowledge

    跨异构知识的检索增强生成 NAACL 2022 论文链接 摘要 检索增强生成(RAG)方法越来越受到NLP社区的关注,并在许多NLP下游任务上取得了最先进的性能.与传统的预训练生成模型相比,RAG方法 ...

  7. 【论文阅读】Video Generation from Single Semantic Label Map-CVPR2019

    题目: Video Generation from Single Semantic Label Map 原文:https://arxiv.org/pdf/1903.04480v1.pdf pytorc ...

  8. 论文阅读—Adaptive Graph Encoder for Attributed Graph Embedding

    Adaptive Graph Encoder for Attributed Graph Embedding(属性图嵌入的自适应图编码器) 文章目录 Adaptive Graph Encoder for ...

  9. 论文阅读 Semantic Graph Convolutional Networks for 3D Human Pose Regression

    Semantic Graph Convolutional Networks for 3D Human Pose Regression 使用语义图卷积网络对三维人体姿态进行回归 Abstract ​ 在 ...

最新文章

  1. BrowserLog——使用Chrome控制台作为Log查看器
  2. php7+apache2.4配置
  3. php mssql image,linux+php连接mssql
  4. 计算机类公务员如何提升自己,大学毕业才发现:所学专业对考公务员如此重要,4类专业上岸率高...
  5. 神结合!一招玩转K8s和微服务治理
  6. 中国净水装置行业市场供需与战略研究报告
  7. jsp el表达式无法正常显示解决方法
  8. Matlab S函数求解二阶微分方程或二阶动态方程
  9. Redis key-value乱码问题
  10. 【腾讯云技术沙龙预告】云端数据库的设计之美
  11. 50欧姆 50Ω 同轴双端口衰减器(DC-40GHz ;2W---10KW)
  12. 《麦肯锡精英的48个工作习惯》书评
  13. 双网口以太网IO模块的优势
  14. OpenCV中LBPH人脸识别器识别人脸实战(附Python源码)
  15. Android Navigation Bar
  16. IDEA的使用大全(快捷键、TomCat、Maven......)
  17. ARM发布全新16纳米A72架构
  18. 算法的数值稳定性实验报告用c语言,数值计算实验教案.doc
  19. 计算机网络:划分子网和构造超网
  20. java毕业设计慢性病管理mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. 黑莓手机可以玩java_令我崩溃的黑莓手机开发 - Enjoy yourself,and don't care about others' thinking! - BlogJava...
  2. python svg转成eps/ps/png等格式文件
  3. 《C# 6.0 本质论》 - 学习笔记
  4. Word中的一些编辑技巧1
  5. 【微课制作软件】Focusky教程 | 设置鼠标单击不进入下一页面
  6. Microsoft Excel 快捷键 (keyboard shortcut - hotkey)
  7. 计算机会考程序与设计,高中信息技术算法与程序设计会考.doc
  8. 啥是对象的浅度克隆和深度克隆?
  9. 让在线测试仪真正发挥作用
  10. 光源的闪烁效应及闪烁的测量方法