【论文阅读】复杂问题问答的状态转移框架

2019-07-03

本文针对于复杂问题问答的工作,提出了一个状态转移框架和四种转移操作生成语义查询图SQG。与现有工作相比,本文的方法不依赖于人工定义的模板,针对复杂问题能够灵活的生成查询图,结构上不存在限制,在DBpedia和Freebase知识库上多个QA数据集取得了较好的结果。

论文地址:A State-transition Framework to Answer Complex Questions over Knowledge Base

论文来源:EMNLP 2018

论文简介

该论文主要研究如何解析回答复杂的自然语言问题。首先分析了复杂问题解析过程中的困难,然后提出了一个状态转移框架和四种转移操作将自然语言问题转化为语义查询图(semantic query graph (SQG) )从而能够使用现有的查询算法找到答案。与现有工作相比,本文的方法不依赖于人工定义的模板,针对复杂问题能够灵活的生成查询图,结构上不存在限制,在DBpedia和Freebase知识库上多个QA数据集取得了较好的结果。

问题介绍

复杂问题答案,其中问题对应于知识库中的多个三元组。之前的解决办法是理解复杂问题时使用预定义模式或模板,如使用依赖树模式将复杂问题分解为几个简单问题,依靠模板将自然语言句子翻译成预定义的逻辑形式。缺点是使用这些手工制作的模板覆盖所有真实案例是不可能的。

问题难点

  1. 多重或隐含的关系
  2. 多个或无实体
  3. 变量和共同引用
  4. 组合问题

本文模型

Node Recognition

  • 节点类型:entity node, type node,literal node, variable node
  • 识别方法
    • 使用序列标注的方法来识别各种类型节点,识别entity/type node效果不好
      • 实体node会出现比较复杂和比较长的情况不利于识别
    • 本文采用了两种方法结合
      • 针对entity/type nodes,采用entity linking algorithms
      • 针对variable/literal nodes,采用BLSTM-CRF model

SQG’s Structure Construction

贪心算法:考虑到每一步骤去查找搜索空间的时候,都是指数级别的搜索空间,因此我们无法通过枚举的方式来进行处理,文章采用了一种贪心的算法,一个好的中间状态倾向于有更大可能被访问,同时也会有更多的后续状态。

四种操作:

  • connect
    • 链接两个节点,当两节点之间的关系在知识库中存在这个关系
  • merge
    • 主要是为了解决一些共指的问题
  • expand
    • 解决query中存在隐含信息
  • fold
    • 解决冗余的关系,实现关系合并,从而匹配知识库中的关系

状态转移组合优化

显然,由于指数搜索空间,不可能枚举每个步骤中的所有可能的转换。因此,我们提出了一种贪婪的搜索算法。目的是一个更好的中间状态应该有更多的机会被访问并产生后续状态。由于每个状态都可以被视为部分SQG,我们使用对数线性模型(参见第3节)提出奖励函数来估计每个状态的可能性。优先级队列用于维持未访问状态的顺序。每回合我们选择具有最大正确性可能性的状态,并尝试每次操作的所有可能的转换。具体地,连接和合并操作尝试当前状态中的每对节点作为两个操作节点,而扩展和折叠操作尝试将每个节点作为操作节点。通过学习模型估计新生成的状态并将其推入优先级队列。请注意,不会添加重复数据状态。当找到完整的SQG QS并且QS不能生成任何更好的后续状态时,算法结束。

条件限制(减少搜索空间)

条件1(连接条件)当且仅当在问句 n 依赖关系解析树的 v1 v2 之间的最短路径中不存在其他节点 v 时,才能连接两个节点 v1 v2 。(使用Stanford CoreNLP dependency parser and coreference annotator)

条件2(条件合并)对于合并操作,两个操作节点中应该至少有一个变量 vv 应该是wh-word或代词,可以与其他节点共同引用。

条件3(条件扩展)对于扩展操作时,操作节点 u 应该是一个变量,而我们需要的是能够找到 u过渡字典 的隐藏信息。

条件4(条件折叠)对于折叠操作,我们要求至少一个连接边与操作节点没有关系候选或者对应关系的置信概率小于阈值τ。

Finding entity/relation candidates and matches of SQG

实体抽取

S-MART (Yang and Chang, 2015) for Freebase dataset and DBpeida Lookup4 for DBpedia dataset.

关系抽取

本文提出一种新型的改进的关系抽取模型Multi-Channel Convolutional Neural Network (MCCNN) ,来抽取两个节点之间的关系。模型分为三个通道:

first channel:simple path between $v_i$ and $v_j$ in the dependency tree Y (N) as input ,两节点之间依存句法树的信息。

second channel:the whole question sentence excluded all nodes ,整个句子除去所有节点外的信息,这里包含了所有的relation信息。

third channel:use $v_i $, $v_j$ and their types as input ,两节点以及其类型信息。

For $v_i$ = “Chinese” and $v_j$ = “actor”, the input is “Chinese-Country-actor-Actor”.

奖励函数

贪婪地选择具有最大γ(s’)的后续状态s’,其中γ()是获取特征并输出相应状态的奖励的奖励函数。在这项工作中,奖励函数γ()是一个用SVM排名损失训练的线性模型。

节点特征:所有候选的得分平均值,常量节点数与变量节点数

  • 将最高的confidence作为当前节点的confidence
  • 所有实体的平均confidence
  • 当前节点中constant nodes和variable nodes 的个数

边特征: 所以后续的得分平均值,边总数,有无关系短语数

  • 将最高的confidence作为当前边的confidence
  • 问句中所有的边的个数

匹配:查询图与知识图的匹配,考虑到折叠操作,对于不匹配的图给予低分,在所有可能操作都不能提升奖励得分时结束。

  • 当所有的后续状态的confidence都比较低的时候,会terminate

实验

生成训练数据

为了生成奖励函数的训练数据,给定问题$N = {w_1,w_2,…,w_n}$,我们首先通过现有实体链接系统检查所有可能的短语wij并获得候选实体列表$v_i = {e_1, e_2,…,e_m}$用于每个实体节点$vi$。如果两个实体节点$v_i$和$v_j$有冲突,即$vi$和$vj$共享一个或多个单词,我们保留较长的单词。我们用特殊标记替换每个实体节点$v_i$以表示实体$e_j$的类型,其中$e_j∈C_{v_i}$并且具有最大的置信可能性。然后,可以通过训练有素的节点识别模型来预测整个节点集V. $Q^S = {V,φ}$是初始状态。此外,我们通过使用BFS算法应用预定义的操作来进行状态转换。同时,如果启用条件机制,则仅考虑满足相应条件的状态。一旦我们得到一个新的$Q^S$,我们调用已经训练号的关系提取模型,以获得每个新边缘$\overline{v_iv_j}∈E$的关系候选列表,同时根据3.1节收集特征,并使用等式1计算排名分数(详见原文)。

数据集

条件比较实验

  1. 减少无效搜索节省SQG时间
  2. 减少搜索空间并避免局部最优

错误分析

可以看到其实S-MART等实体链接任务的可信度还是可以的,问题主要还是出现在关系映射和问题太复杂上面。有的问题既有count操作又有shortest等限制,针对这种问题还有很大的提升空间。

结论

在本文中,提出了一个状态转换框架,利用神经网络来回答复杂问题,这些问题基于四个原始操作生成语义查询图。我们训练BLSTM-CRF模型来识别包含来自问句的实体和变量的节点。为了提取这些节点之间的关系,提出了一个可以解决显性和隐性关系的MCCNN模型。与现有解决方案相比,作者的框架不依赖于手工制作的模板,并且在给定足够的训练数据的情况下有可能生成各种SQG。对多基准数据集的大量实验证实,该方法具有最先进的技术性能。

原文转自翁笔

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者,更多文章请访问想飞的小菜鸡