本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。
知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,该类方法基于知识图对问题进行理解,并根据问题理解的结果从知识图谱中查找或推理出问题对应的答案。
知识图谱问答分为**基于语义分析的方法(Semantic Parser)和基于答案排序的方法(Information Retrieval)**两类。基于语义分析的方法是首先将输入问题转化为知识图谱能够理解和执行的结构化查询(即语义表示),然后在知识图谱上直接执行该结构化查询得到问题对应的答案。基于答案排序的方法是首先基于输入问题从知识图谱中快速找到少量答案候选,然后采用排序模型对不同答案候选进行打分,并选择得分最高的答案候选集合作为问题对应的答案。
基于答案排序的方法(Information Retrieval)
绝大多数基于语义分析的知识图谱问答需要带有语义(表示)标注的问题集合作为训练数据。这类数据需要花费的时间和成本很高,而且要求标注人员对语义表示有一定程度的理解。使用答案作为弱监督训练语义分析模型[10,13],能够在一定程度上缓解数据标注难度高、开销大和标注量有限问题,但按照答案选择出夹的正例语义分析(语义表示)候选存在一定的噪音,这在一定程度上也会对语义分析模型的质量造成影响。
基于答案排序(answer ranking)的知识图谱问答将该任务看成一个信息检索任务,即给定输入问题Q和知识图谱KB,通过对KB中实体进行打分和排序,选择得分最高的实体或实体集合作为答案输出。
具体来说,该类知识图谱问答方法主要包含下述四个模块:
- 问题实体识别。问题实体是指问题Q中提到的知识库实体,例如在Who founded Microsoft 这个问题中,Microsoft在知识图谱中对应的实体是该问题的问题实体。每个问题可能对应多个问题实体,该类实体的识别通常采用实体链接技术(把问题中的实体提及 链接到知识图谱中对应的实体上)完成。
- 答案候选检索。根据识别出来的一个问题实体,从知识图谱中查找与之满足特定约束条件的知识库实体集合,作为该问题的答案候选。最常用的约束条件是:在知识图谱中,与问题实体最多通过两个谓词相连(两条边)的知识库实体。该做法假设问题对应的答案实体和问题实体在知识图谱中的距离通常不会很远。
- 答案候选表示。由于每个答案候选无法直接与输入问题进行比较,该模块基于答案候选所在的知识图谱上下文,生成答案候选对应的向量表示。这样,输人问题和答案候选之间的相关度计算就转化为输入问题和答案候选对应的向量表示之间的相关度计算。具体方法的不同主要体现就在如何生成答案的向量表示上。
- 答案候选排序。 使用排序模型对不同答案候选进行打分和排序,并返回得分最高的答案候选集合作为输出结果。
下图给出基于答案排序的知识图谱问答方法的工作流程示意图,按照对答案候选的不同表示方法,本博客将介绍五种具体的方法,包括特征工程方法、问题生成方法、子图匹配方法、向量表示方法和记忆网络方法。
1. 基于特征的答案排序
基于特征工程的方法首先从问题中识别出问题实体(将问题中的实体提及链接到知识图谱中对应的实体),并根据问题实体在知识图谱中的位置,抽取与之通过不超过两个谓词(两条边)连接的实体作为答案候选集合。然后,使用一个特征向量表示每一个答案候选。最后,基于特征向量对答案候选集合进行打分排序,并输出得分最高的答案候选集合(答案可能是一个实体,也可能是多个实体(实体集合))。
每个答案候选对应的特征向量由N个特征组成,每个特征反映了输入问题与该答案候选在某个维度上的匹配程度,并通过组合问题特征和答案特征得到。
常用的问题特征包括:
- 疑问词特征(用表示)。该特征对应的特征值是问题中包含的疑问词。英文问句中常见的疑问词包括 Who、When、Where、What、Which、Why、Whom、Whose 和 How.疑问词特征通常指明了问题对应答案的类型,例如,以Who开头的问题对应的答案(类型)往往是人,以Where开头的问题对应的答案往往是地点。
- 问题实体特征(用表示)。该特征对应的特征值是问题中提到的问题实体,问题实体能够帮助问答系统在知识图谱中定位并抽取答案候选。一个问题中可能包含多个实体提及,因此对应的问题实体特征也可能是多个。
- 问题类型特征(用表示)。该特征对应的特征值是问题中的一个名词单词或短语,用来指明问题答案的类型。该类特征通常采用基于规则的方式从问题对应的句法分析树中抽取得到。
- 问题动词特征(用表示)。该特征对应的特征值来自问题的核心动词,用来指明问题提到的语义关系,该语义关系通与知识图谱中的谓词联系紧密。
- 问题上下文特征(用表示)。该特征对应的特征值是问题中出现的除了上述特征之外的单词或n元组(即 n-gram).
下表给出从问题 What is the name of Justin Bieber brother中抽取出来的一组问题特征及对应特征值。
常用的答案特征包括:
- 谓词特征(用表示)。该特征对应的特征值是知识图谱中连接答案候选实体和问题实体的谓词路径。该谓词路径是判别答案候选是否是问题对应答案的最关键因素。该特征通常与问题特征中的和对应。
- 类型特征(用表示)。该特征对应的特征值是答案候选实体在知识图谱中对应的类型。该特征通常与问题特征中的和对应。
- 上下文特征(用表示)。该特征对应的特征值是和答案候选实体在知识图谱中直接相连的谓词以及实体集合。该特征通常与问题上下文特征 对应。
下表给出基于问题实体 Justin Bieber在知识图谱中出现的位置(如下图所示),抽取出来的答案实体候选Jaxon Bieber对应的答案特征及答案特征值。
对问题特征和答案特征分别抽取完成之后,可以将二者中的特征进行两两组合,这样就生成一个特征向量。Yao 和 Durme 基于该特征向量训练二分类器[14], 用于判断该答案候选是否可以当做答案。Yao从问题中抽取1-gram和2-gram作为问题特征[15],从答案中选择作为答案特征,并组合生成特征向量训练打分器,并取得了很好的效果。
2. 基于问题生成的答案排序
基于问题生成的方法在完成问题实体识别和答案候选检索后,采用文本生成技术为每个答案候选(实体)生成一个自然语言问题,作为该答案候选对应的表示,通过计算输入问题和每个答案候选对应的生成问题之间的相似度,可以对答案候选集合进行打分和排序。由于问题生成本身是一个非常重要的研究课题,之后有机会会对该任务做详细的介绍。本小节以 Berant和 Liang提出的方法为例,介绍基于模板的问题生成方法在知识图谱问答中的应用[16],任何问题生成方法都可以替换基于模板的方法套用在该问答框架下。
给定输入问题Q和从Q中识别出来的问题实体e,将答案候选分为如下五类:
- 与问题实体e通过一条边(即谓词p)直接相连的答案候选。用p.e表示该答案候选对应的语义表示,例如,who directed Top Gun (谁执导的《Top Gun》)这个问题的某个答案候选对应的语义表示为 Directed.TopGun。
- 与问题实体e通过两条边(即谓词和)相连的答案候选。用表示该答案候选对应的语义表示,例如,where does Steve Balmer work 个问题的某个答案候选对应的语义表示为 Employment.EmployerOf.SteveBalmero
- 与问题实体通过两条边(即谓词和)相连,并且和另一个问题实体通过另外两条边(即谓词和)相连的答案候选。用表示该答案候选对应的语义表示,例如,who did Brad Pitt play in Troy (布拉德·皮特在《特洛伊》中扮演的谁)这个问题的某个答案候选对应的语义表示为 .
- 属于上述三类答案候选之一并且具有类型t的答案候选。用表示该答案候选对应的语义表示,其中z表示上述三类答案候选对应的语义表示之一,例如,what composers spoke French这个问题的某个答案候选对应的语义表示为Type.ComposerSpeakerOf.French.
- 计数类型的答案候选。用count(z)表示该答案候选对应的语义表示,count在答案候选集合的基础之上返回该集合中包含的实体数目。例如,how many ships were designed by Nat Herreshoff这个问题的某个答案候选对应的语义表示为.除计数操作外,其他一些特殊操作符,例如最大/最小、第一/第二、最高/最低等,也可以通过类似的方式生成问题。
在给定一个答案候选对应的语义表示后,Berant和 Liang采用基于模板的方式将答案候选的语义表示转化(生成)为一个自然语言问题[16]. 下表给出语义表示为p.e的答案候选对应的问题生成规则。
上表中,d(t)表示答案候选在知识图谱中对应的实体类型,d(e)表示问题实体,d§表示连接问题实体和答案候选的谓词。为了便于说明,这里给出 一个例子,问题 which city was Barack Obama born 对应的一个问题实体是 Barack Obama,基于该问题实体定位的一个答案候选是 Honolulu,由下图可见,该答案候选对应的语义表示为p.e,并且谓词p=PlaceOfBirth 对应的词性是 NP.因此可以采用上表中的第一条规则生成问题 what city is the place of birth of Barack Obama,其中d(t)=city,d(e)=Barack Obama。
在为每个答案候选生成对应的自然语言问题后,该方法使用关联模型(association model)和向量空间模型(vector space model)计算输入问题和生成问题之间的相似度[16]。
表示关联模型,该模型将输入问题Q和生成问题之间的每一个短语对看成是一个复述短语对,并通过训练数据学习复述短语对对应的权重向量. 表示向量空间模型,其中表示输入问题Q中第i个词对应的词向量,表示生成问题中第j个词对应的词向量,,W是待学习的参数矩阵。
3. 基于子图匹配的答案排序
基于子图匹配的知识库/知识图谱问答方法为每个答案候选(实体)从知识库/知识图谱中抽取一个子图(sub-graph),通过计算输入问题和每个答案候选对应子图之间的相似度,对答案候选集合进行打分和排序。
Yih等人首先从输入问题Q中定位问题实体[17].在下图中,问题 who was Barack Obama married to in 1992中提到的Barack Obama被抽取出来当做问题实体。
然后,答案候选抽取模块以该问题实体为起点,按照如下规则从知识库中选择答案候选:①和问题实体通过一个谓词(一条边)直接相连的实体可以作为一个答案候选;② 和问题实体通过两个谓词(两条边)相连,并且两个谓词之间是一个CVT节点的实体可以作为一个答案候选。上述答案候选抽规则基于如下假设:问题对应的答案实体在知识库中的位置应该和问题实体在知识库中的位置相隔不远(一跳或
两跳)。例如,下图中基于 Barack Obama这个问题实体能够抽取出来的答案候选包括:Honolulu、Politician、1961.08.04、Person、Chicago、1992. 10.03 和 Michelle Obama.前四个答案候选来自和问题实体相隔一跳的实体,后三个答案候选来自和问题实体相隔两跳的实体。
接下来,答案子图生成模块为每个答案候选实体从知识库中抽取出一个子图,作为对该答案实体的一种表示。每个答案子图通常包含如下几类信息。①问题实体和答案实体之间的谓词路径;②答案实体对应的实体类型;③和答案实体相连或者和谓词路径上的 CVT节点相连的实体。例如,答案候选Michelle Obama对应的子图如下所示:
如上图所示,1992.10.03这个节点之所以被加到子图中来,是因为问题中提到了 1992.
最后,答案候选排序模块计算输入问题和每个(候选)答案(实体对应)子图之间的相似度,用来对子图对应的答案候选进行打分。这背后的思路是:如果一个答案候选所在的知识库上下文(即答案子图)和问题的相似很高,那么该答案候选极有可能就是问题对应的答案。不同的特征可以用来计算问题和对应答案子图之间的相关度。例如,问题和核心路径之间的相似度特征。核心路径在这里特指问题实体
和答案候选实体之间的谓词路径。例如上图中是问题实体 Barack Obama 和答案候选实体 Michelle Obama 对应的核心路径。该相似度可以采用类似 CDSSM 方法[18-20]进行计算。此外,与核心路径上的实体直接连接并且出现在问题中的实体数目也是一个非常重要的特征,例如上例中的 1992. 一个子图中越多的实体出现在问题中,该子图对应的答案候选就越有可能是问题对应的答案。
4. 基于向量表示的答案排序
基于向量表示的方法[21,22]将输人问题Q和答案候选A分别表示为两个向量f(Q)和g(A),并在向量空间上计算Q和A的距离S(Q,T),用于对不同的答案候选进行打分。
表示问题向量,表示答案向量,表示转化矩阵(模型参数),用于将问题Q和答案候选A转化为对应的向量表示,k表示问题或答案向量的维数,该参数在训练模型之前预先设定好,表示全部单词、知识库实体和知识库谓词的总数,W中的第i行表示某个元素(单词、知识库实体或知识库谓词)对应的向量表示。表示问题对应的稀疏向量,该向量中每个位置的值表示对应的单词是否在Q中出现:出现设置为该词在Q中出现的次数(或者1),否则设置为0. 表示答案对应的稀疏向量,该向量可以采用如下三种方式表示:
- 单一实体表示法。该方法将中答案候选实体A对应位置的值设定为1,其他都是0.
- 路径表示法。该方法将中问题实体、答案候选实体以及连接问题实体和答案候选实体的谓词对应位置上的值设定为1,其他都是0.
- 子图表示法。该方法除了使包含路径表示法对应的信息外,还将知识图谱中和答案候选实体A直接相连的实体对应位置上的值设定为1.
上述三种不同的向量表示对应了答案候选在结构知识库中的上下文信息的不断增加,该上下文信息和输入问题能够匹配上的越多,那么该答案候选就越可能是正确答案。
给定训练数据该类问答方法通过最小化下述基于Margin的损失函数来学习模型中需要的参数(如上面的转化矩阵):
其中,表示训练数据中的一个问题及其对应的正确答案,表示对应的一个错误答案。该损失函数表达的含义是:问题和正确答案之间的向量距离应该比和任意一个错误答案之间的向量距离至少差m,m是预先设定好
的Margin.
Dong等人在上述工作的基础上[23],从三个不同的维度生成三个不同的答案向量,用于问题答案匹配:
表示A对应的答案路径(answer path)向量,每个答案候选对应的路径由答案候选实体和问题实体之间的谓词路径表示;表示A对应的答案上下文(answer context)向量,每个答案候选对应的上下文由和该答案候选、答案路径之间相连的全部实体和谓词组成;表示A对应的类型(answer type)向量,每个答案候选对应的类型由知识库提供。
5. 基于记忆网络的答案排序
基于记忆网络(memory networks)的问答模型[24-28]由记忆模块和问答模块两部分构成:记忆模块负责读取外部数据并将其转化为向量化的记忆单元集合;问答模块负责基于给定问题从记忆模块中存储的记忆单元集合中寻找与问题相关的信息,进而生成最终的答案。按照是否支持推理机制,记忆网络又分为单层(single-layer)和多层(multi-layter)记忆网络两类。
从单层记忆网络开始介绍,在单层记忆网络中,记忆模块负责读取一组输入数据并将每个输入数据转化为对应的输入记忆单元向量和输出记忆单元向量。(输入数据可以理解为知识图谱中的三元组的集合;也可以理解为段落上下文中的句子集合)。
每个表示第i个输入句子,表示中的第j个单词。A和C分别表示一个的参数矩阵(词嵌入矩阵),V表示记忆网络使用词汇表中包含的单词总数,d表示记忆单元向量的维数。词汇表中每个单词x对应一个整数标识符/索引,不同单词对应的标识符不同,这样就可以将每个单词x表示为一个稀疏向量,该向量在维度等于(单词x在词汇表中的位置索引)上的值是1,其他维度上的值是0(one-hot表示).这里,将每个输入数据分别表示为一个输入记忆单元和一个输出记忆单元的目的是将信息查找过程和答案生成过程分开对待。
在记忆模块完成对输入数据的读取和存储后,给定输入问题Q,神经网络模块通过如下步骤从记忆模块中搜寻问题对应/相关的信息并生成答案(工作流程示意图如下图所示)。
- 问题表示,将问题转化为对应的向量表示u:
和A、C类似,B表示一个的参数矩阵(词嵌入矩阵),表示单词对应的稀疏向量(one-hot)。 - 问题证据查找,计算u和记忆模块中每个输入记忆单元向量之间的相关度,并通过 softmax操作将该相关度(相似度得分)转化为一个概率(其实就是一个attention机制,输入问题的向量表示作为query,每个输入记忆单元向量作为key,query和每个key一次做计算(最简单的方式是直接做内积,如下式所示)得到分数,在通过softmax得到每个记忆单元对应的权重(概率)):
这步骤对应信息查找过程:从全部记忆单元中查找和问题相关的证据/信息。 - 输出向量生成,基于问题在输入记忆单元上的相关度概率/权重分布计算输出向量表示o:
该步骤对应答案生成过程:基于问题在全部输入记忆单元上的相关度概率/权重分布,在输出记忆单元上计算一个输出向量用于答案生成。(每个输出记忆单元向量作为value,和对应的权重进行加权求和,得到一个输出向量) - 答案生成,假设每个问题对应的答案一定来自输入数据,通过在词汇表上进行 softmax 操作就可以得到最终的答案输出:
W表示一个的参数矩阵,每行向量对应一个答案候选。
下图给出单层记忆网络的工作流程示意图。单层记忆网络对记忆单元仅进行一次查找操作,因此适用于回答单关系的问题。对于更复杂的多关系问题,则需要进行多次信息查找才能达到“推理”的效果。这就是多层记忆网络。
基于单层记忆网络的问答模型对记忆单元中存储的数据仅进行了一次查找操作,因此只适用于回答单关系的问题。对于更复杂的多关系问题,需要对知识数据进行多次查找才能达到推理效果,这就对应了多层记忆网络。
基于多层记忆网络的问答模型通过迭代的方式执行多次单层(记忆)神经网络:在第k次输出向量表示生成后,对第k+1次输入问题向量表示进行更新:
上面这个向量相加相当于使用上一次从记忆模块中查找出来的信息更新问题(表示),从而从记忆模块中找到更多的证据/信息用来完成推理。在最后一次迭代完成后,答案输出是:
下图给出基于多层记忆网络的问答模型工作流程示意图:
Miller等人提出基于“键值记忆网络”(key-valye memory network)的问答模型[29] (如下图所示).和记忆网络相比,键值记忆网络最大的特点是将外部输人数据分为“键”和“值”两部分,拿知识图谱为例,每个三元组中主语实体和谓词对应,宾语实体对应.输入记忆单元向量和输出记忆单元向量不再基于同一个输入数据计算,而是分别基于和计算:
如何定义和的向量表示Φ(·)有很多种不同的方法,这里就不再做过多介绍。
总结
这两篇博客系统介绍了两类知识图谱问答方法:基于语义分析的方法和基于答案排序的方法。
在基于语义分析的方法中,将自然语言转化成机器能够理解和执行的语义表示是最核心的任务。由于带有语义标注的数据集非常有限,再加上现有知识图谱的覆盖度还很低,目前的语义分析系统还无法在开放领域数据上取得令人满意的效果。因此,如何有效地构建带有语义分析的数据集,以及如何自动抽取高质量、高覆盖度的知识图谱,成为语义分析研究的关键。
在基于答案排序的方法中,计算输入问题和答案实体候选之间的相关性是最核心的任务。采用<问题,答案>对数据集直接训练该类问答模型能够在现有数据集上取得很好的效果,但这种方法需要较强的约束条件,并不像语义分析方法那样具有普适性。此外,在深度学习快速发展的今天,大多数知识图谱问答方法都采用神经网络进行黑箱式模型训练。如何使模型具有可解释性,如何在模型中加入推理机制,以及如何将神经网络/深度学习模型和已有语言学知识相结合,是目前的一个研究热点。
参考文献
[1] Mark Steedman.Surface Structure and Interpretation[M].The MIT Press,1996.
[2]Mark Steedman.The Syntactic Process[M].The MIT Press,2000.
[3]Luke Zettlemoyer,Michael Collins.Learning to Map Sentences to Logical Form:Structured Classification with Probabilistic Categorial
Grammars[C].UAI,2005.
[4]Tom Kwiatkowski,Luke Zettlemoyer,Sharon Goldwater,etc.Lexical Generalization in CCG Grammar Induction for Semantic Parsing[C].
EMNLP,2011.
[5]Yue Zhang,Stephen Clark.Shift-Reduce CCG Parsing[C].ACL,2011.
[6]Dipendra K.Misra,Yoav Artzi.Neural Shift-Reduce CCG Semantic Parsing[C].ACL,2016.
[7]Wenduan Xu.LSTM Shift-Reduce CCG Parsing[C].EMNLP,2016.
[8]Yoav Artzi,Kenton Lee,Luke Zettlemoyer.Broad-coverage CCG Semantic Parsing with AMR[C].EMNLP,2015.
[9]Siva Reddy,Mirella Lapata,Mark Steedman.Large-scale Semantic Parsing without Question-Answer Pairs[C].TACL,2014.
[10]Junwei Bao,Nan Duan,Ming Zhou,etc.Knowledge-Based Question Answering as Machine Translation[C].ACL,2014.
[11]Yuk Wah Wong,Raymond J.Mooney.Learning Synchronous Grammars for Semantic Parsing with Lambda Calculus[C].ACL,2007.
[12]Junhui Li,Muhua Zhu,Wei Lu,etc.Improving Semantic Parsing with Enriched Synchronous Context-Free Grammar[C].EMNLP,2015.
[13]Jonathan Berant,Andrew Chou,Roy Frostig,Percy Liang.Semantic Parsing on Freebase from Question-Answer Pairs[C].EMNLP,2013.
[14]Xuchen Yao,Benjamin Van Durme.Information extraction over Structured Data:Question Answering with Freebase[C].ACL,2014.
[15]Xuchen Yao. Lean Question Answering over Freebase from Scratch [C].NAACL,2015.
[16]Jonathan Berant,Percy Liang.Semantic Parsing via Paraphrasing[C].ACL,2014.
[17]Wen-tau Yih,Ming-Wei Chang,Xiaodong He.etc.Semantic Parsing via Staged Query Graph Generation:Question Answering with
Knowledge Base[C].ACL,2015.
[18] Jianfeng Gao,Patrick Pantel,Michael Gamon,etc.Modeling interestingness with deep neural networks[C].EMNLP,2014.
[19] Yelong Shen,Xiaodong He,Jianfeng Gao,etc.A Latent Semantic Model with Convolutional-Pooling Structure for Information Re-
trieval[C].CIKM,2014.
[20] Yelong Shen,Xiaodong He,Jianfeng Gao,etc.Learning Semantic Representations using Convolutional Neural Networks for Web
Search[C].WWW,2014.
[21]Antoine Bordes,Jason Weston,Sumit Chopra.Question Answering with Subgraph Embeddings[C].EMNLP,2014.
[22]Antoine Bordes,Jason Weston,Nicolas Usunier,etc.Open Question Answering with Weakly Supervised Embedding Models[C].ECML-
PKDD,2014.
[23]Li Dong,Furu Wei,Ming Zhou,etc.Question Answering over Freebase with Multi-Column Convolutional Neural Networks[C].ACL,2015.
[24]Jason Weston,Sumit Chopra,Antoine Bordes.Memory Networks[C].ICLR,2015.
[25]Antoine Bordes,Nicolas Usunier,Sumit Chopra,etc.Large-scale Simple Question Answering with Memory Network[C].ICLR,2015.
[26]Sarthak Jai.Question Answering over Knowledge Base using Factual Memory Networks[C].NAACL,2015.
[27] Jason Weston,Antoine Bordes,Sumit Chopra,etc.Towards AI Complete Question Answering:A Set of Prerequisite Toy Tasks
[C].arXiv,2015.
[28]S.Sukhbaatar,A.Szlam,J.Weston,etc.End-To-End Memory Networks[C].NIPS,2015.
[29]Alexander Miller,Adam Fisch,Jesse Dodge,etc.Key-Value Memory Networks for Directly Reading Documents[C].arXiv,2016.