【读书笔记】基于知识库的问答:生成查询图进行语义分析

【导读】将DBPedia和Freebase这样的大规模知识库组织并存储在一个结构化的数据库,这已成为支持开放领域问题问答的重要资源。 KB-QA的大多数方法基于语义解析,其中问题被映射到其形式表示(例如,逻辑形式),然后被翻译成KB查询。 问题的答案可以很容易地通过查询语句得到。语义解析还提供了对问题的更深入的理解,不仅可以得到答案,而且可以为开发人员提供易于解释的信息以进行错误分析。本文通过应用实体链接系统和匹配问题和谓词序列的深度卷积神经网络模型,大大优于以前的方法,并在WEBQUESTIONS数据集上实现了52.5%的F1度量值。

【ACL2015 论文】

Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base

▌模型简介


大多数传统的语义分析方法在很大程度上与知识库分离,因此在适应像问答系统这样的应用程序时面临着一些挑战。例如,当逻辑形式使用与KB中定义的谓词不同的谓词时,通用含义表示可能具有本体匹配问题。即使代表性语言与知识基础模式密切相关,从KB中的大词汇量到发音中描述的关系中找到正确的谓词仍然是一个难题。

本文提出了一个语义分析框架,在形成输入问题的解析时,更加紧密地利用知识库。本文首先定义一个查询图,它可以直接映射到λ演算(一种函数式编程语言)中的逻辑形式,并且在语义上与λ-DCS(Lambda Dependency-Based Compositional Semantics)紧密相关。然后将语义分析缩减为查询图形生成,制定为具有分阶段状态和动作的搜索问题。每个状态都是查询图形表示中的候选解析,每个动作定义一种增长查询图的方式。语义解析的表现力因此由适用于每个状态的一组合法行为来控制。具体来说,我们将这些行为分为三个主要步骤:在问题中查找根实体,找到答案和根实体之间的主要关系,以及用描述答案所需属性的附加约束扩展查询图,或者答案与问题中其他实体之间的关系。

这种阶段性设计的一个关键优势是,将KB中的实体和谓词部分联系起来,并在整个解析过程完成之前,专注于最可能找到正确的查询图的方向,来提高搜索效率。

▌知识库


知识库是由主-谓-宾组成的三元组

的集合,其中

是实体,p是二元谓词。这种形式的知识图经常被称为是知识图谱,下图显示了在FreeBase数据库中关于FamilyGuy(一部喜剧动画)的知识图,椭圆形的是实体,实体之间的线即为谓词。

▌查询图


给定知识图,执行逻辑形式查询就相当于找到可映射到查询的子图,然后解析变量的绑定。为了捕捉这种直觉,我们在图表表示中将λ-演算的一个受限子集描述为我们的查询图

查询图由四种节点构成:

• 确定的实体(gounded entity):知识库中实际存在的实体

• 存在变量 (existential variable):知识库中未指定是哪个的一个或一组实体,可以看成是中间变量

• 变量:知识库中未指定是哪个的一个或一组实体,即问题最终的答案

• 聚合函数:对实体的一些属性进行数值运算,以达到筛选答案的作用。

和知识图谱一样,查询图的节点也由知识库中的谓词相连接。

下面的查询图对应了一个查询,在“Family Guy”这部喜剧动画中,第一位为“Meg Griffin”这个角色配音的演员是谁?:

其中圆角矩形中的“Famil Guy”和“Meg Griffin”代表确定的实体,圆形中的y代表存在变量,灰色圆形中的x为变量,它是最终的答案,菱形中的argmin为聚合函数,它限制了答案的范围,很显然,为Meg Griffin配过音的角色并不止一个。与上述查询图等价的-演算为

▌查询图生成


查询图生成的过程大致可分为三步:

选择其中一个主题实体作为根节点

确定一条从根节点到唯一一个变量(答案节点)的有向路径,路径上可以由一个或者多个存在变量,这条路径被称为核心推理链。核心推理链上除了根节点为实体外其他的都只能是变量。

一个或多个实体或者聚合节点通过谓词和核心推理链上的变量连接起来,包括答案节点。

在上图的查询图中,"FamilyGuy"是根实体,FamilyGuy->y->x这条路径被称为核心推理链,y->MegGriffin 这条链确定了角色,y->argmin 这条链限制了需要是最早配音的角色。

给定一个问题,我们可以将查询图的生成过程看成是一个基于状态和动作的搜索问题。

给定状态集合

,集合中每个状态代表{: 空图,

:仅含有一个根实体的集合,

:加入核心推理链的状态,

:加入限制条件的状态和动作集合

,每个动作代表,加入根实体节点,加入核心推理链,加入限制条件和聚集节点。

状态变化的过程可以由下面的自动机表达:

接下来简要介绍建立查询图的过程:

  • 选择根实体

这一步的主要目的是从问题的描述中选择出合适的根实体,为了将知识库中的实体与问题中的描述对应起来,我们使用了一个链接系统评估相似的程度。对于知识库中的一个实体 ,系统首先确定该实体的名称和别名,创建词库。然后将特定的问题中所有连续的字序列,将它们作为词库中可能出现的名词,然后将它与词库中可能匹配的实体配对,根据相似度排名。前十的实体才会被考虑作为根实体。下图是“Family Guy”这部喜剧动画中,第一位为“Meg Griffin”这个角色配音的演员是谁?这个查询中可能作为根实体的两种方案。

  • 确定核心推理链

因为已经确定了根实体,我们只要构造预期的答案与根实体之间的关系就可以得到推理链。

下图显示三种针对上述问题的推理链:

确定核心推理链的过程和知识图谱中建立实体时间的关系是一样的,我们要评估{cast-actor,writer-start,genre}这三个序列哪个最接近问题中"FamilyGuy"和”Who“的关系。这个问题可以约减为求语义相似性的神经网络。

神经网络的结构如上图所示,首先使用词哈希将一个词变成以“#”字母三元组,作为分割的三元组,如“Who”可变成"#-w-h","w-h-o","h-o-#",然后使用卷积层将字母三元组投影成具有上下文信息的特征向量,然后使用池化将特征变为固定长度,最后通过一个卷积层输出非线性语义特征。

这相比于embedding方法有两个优势, 首先,词哈希控制了输入的长度,并且适用于较大的词汇量,其次,有卷积和最大池化的深度网络有更好的表达能力更好。

  • 加约束条件

有了核心推理链的查询图已经能够从知识库中检索出确定的实体作为问题的答案了,但是为了使答案更加准确,还需要在核心推理链的基础上加上一些限制。

如下图所示, 是在的基础上增加了charactor(y,MegGriffin)这个限制。而很多时候,限制是在所有满足条件的实体中进行进一步的筛选,如到,这种筛选不是实体的定性比较,而是通过计算或比较实体的某些数值属性得到的,如下图中比较开始为Meg Griffin配音的时间,来得出是谁最先为她配音这个结果。

▌学习奖励函数


奖励函数

是在给定状态和操作的集合s之后,评判这个查询与问题对应好坏的函数。我们使用log-linear模型学习这个函数。

  • 特征选择

在训练的过程中特征的选择至关重要,在学习的过程中,我们选择以下与状态相关的数作为特征:

根实体 : 问题中的描述与根实体的相似度分数。

核心推理链: 上述CNN模型中输出的语义特征。

限制和聚集:检查问题中的词是否与查询图中的实体或者性质相关,可以采用相关的比例作为一维特征。

整体:从数据库中检索得到的作为候选答案的实体的数量、查询图的节点数等。

▌总结


在本文中提出了一个使用知识库来回答问题的语义分析框架。我们将查询图定义为可以直接映射到逻辑的表示。语义解析被简化为查询图生成,这是一个分阶段的搜索问题。在实体连接系统和深度卷积神经网络模型的帮助下,我们的系统在WEBQUESTIONS数据集上的表现优于以前的方法。在未来,我们希望扩展我们的查询图来表示更复杂的问题,并探索更多的特性和模型来匹配约束和聚合函数。应用其他结构-输出预测方法对图形生成进行研究。

参考链接:

https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/ACL15-STAGG.pdf

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-03-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林欣哲

自然语言处理--文本处理

自然语言处理的目的是让机器试图理解和处理人类的文字。通常来说,人的语言是冗余的,含有歧义的,而机器是准确的,无歧义的,要让机器理解,这之间存在一个转换的问题。 ...

3688
来自专栏Duncan's Blog

Personalized Search论文阅读笔记-08年SIGIR

对于这样允许大众分类的应用,如何满足用户在搜索时尽可能准确地返回用户所需要的资源是一个有意思的问题。因为如果像传统的搜索方法仅通过查询关键词去匹配搜索结果,返回...

1203
来自专栏机器之心

业界 | 微软提出基于程序图简化程序分析,直接从源代码中学习

1703
来自专栏AI研习社

告别选择困难症,我来带你剖析这些深度学习框架基本原理

无论你喜欢或不喜欢,深度学习就在这里等着你来学习,伴随着技术淘金热而来的过多的可选项,让新手望而生畏。

1743
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

13行代码实现最快速最高效的积分图像算法。

  研究图像到一定程度的人,应该都对积分图像有所了解,大家在百度或者google中都可以搜索到大量的相关博客,我这里不做多介绍。用积分图也确实能解决很多实际的问...

4138
来自专栏Python小屋

Python计算电场中两点间的电势差

根据组合数定义,需要计算3个数的阶乘,在很多编程语言中都很难直接使用整型变量表示大数的阶乘结果,虽然Python并不存在这个问题,但是计算大数的阶乘仍需要相当多...

811
来自专栏大数据挖掘DT机器学习

时间序列预测全攻略(附带Python代码)

原文作者:AARSHAY JAIN 36大数据翻译,http://www.36dsj.com/archives/43811 时间序列(简称TS)被认为是分...

1.9K7
来自专栏iOSDevLog

机器学习研究和开发所需的组件列表

Here is a list of components that are needed for the successful machine learning...

982
来自专栏iOSDevLog

Scikit-Learn教程:棒球分析 (一)

一个scikit-learn教程,通过将数据建模到KMeans聚类模型和线性回归模型来预测MLB每赛季的胜利。

1802
来自专栏应用案例

关于机器学习,这可能是目前最全面最无痛的入门路径和资源!

之前搞机器学习的那帮人都喜欢用Python,所以Python慢慢就积攒了很多优秀的机器学习库,所谓的库,你就理解为别人封装好的一些具有某些功能的模块,我们可以通...

2987

扫码关注云+社区