项目网站: http://ganswer.gstore-pku.com/
代码地址: https://github.com/pkumod/gAnswer
OpenKG发布地址: http://openkg.cn/tool/ganswer
研究组主页: http://mod.icst.pku.edu.cn
一、KBQA 任务简介
基于知识库的自然语言问答 (Question Answering over Knowledge Base, KBQA) 主要有两类方法框架,分别基于信息检索和语义解析。前者直接从知识库中获取候选答案后通过各种特征进行排序返回最优结果,答案通常不具备可解释性。后者则首先尝试理解给定问题的语义,将其转化为SPARQL查询等逻辑结构,再在知识库中进行查询从而得到问题答案。
图 1 展示了语义解析的基本流程,其中主要有两个难点,一是语义消歧(资源映射),即如何将自然语言问题中具备歧义的实体短语和关系短语对应到知识库中确定的实体和谓词上。例如短语 “PaulAnderson” 在知识库中可能有多个候选实体如 < Paul S.Anderson> 和 < Paul W. S. Anderson>,我们需要消除错误的歧义,找到正确的映射。二是查询构建(语义组合),即如何将映射后的实体和谓词拼接成一个完整的查询。
二、解决方案
针对第一个难点(语义消歧),现有的一些工作尝试在查询生成阶段就完全消除歧义,往往耗费时间计算较多的额外信息,将所有可能进行排序后找到理论上最好的查询,最终查询执行时却在知识库中找不到结果。另一些工作把每一个候选查询都执行一遍,将匹配到的答案集合大小作为排序特征,这样做更加费时,因为很多查询之间具备共享子图,有大量的重复计算。
与这些工作不同,我们提出了数据驱动的消歧方法。其基本思想是在查询生成阶段保留实体、谓词乃至结构的歧义信息,而在查询执行阶段根据匹配情况消除错误的候选。为此我们定义了一种新的逻辑结构语义查询图(SQG),使用问句中被检测为实体/类型/变量的短语作为图中的节点,把在 SPARQL 查询的同一条三元组中的主体和客体所对应的节点连接起来。每个 SQG 中的节点或边都对应一个候选列表,记录了该节点或边可能映射到的知识库中的实体/谓词。
实体/谓词的候选映射列表可以通过现有的实体链接/关系抽取算法获得,我们分别提出了基于词典和句法依存树的实体/关系识别、基于CNN神经网络的关系抽取等方法。
如图 2 所示,节点 V3(PaulAnderson) 对应的三个后选中,虽然 <Paul Anderson(actor)> 和 <Paul S. Anderson> 的得分较高,但在查询匹配阶段知识库中找不到与 SQG 匹配的包含这两个点的子图,所以我们将他们剔除(消歧),选择映射 <PaulW. S. Anderson>。
同时,我们针对 SQG 设计了高效的子图匹配算法来查找最终答案,避免相似查询之间的重复计算,大幅度地提高了问答系统的整体效率。
针对第二个难点(查询构建),大部分相关工作只能解析简单问题(即解析后的查询只包含一条语句,又称为“一跳问题”),少数工作可以解析复杂问题(多跳问题),但其只能将问题转换为预先定义好的唯一查询图结构,当问题对应其他结构时则不能解析。
我们提出了三种查询构建的方法,其中:
1) 关系优先的构建方法 (SIGMOD2014[1]) 先通过谓词复述词典识别问题中的关系(谓词),再通过启发式规则确定关系两边的节点(实体/疑问词)。一些相关工作中使用神经网络来进行关系抽取的方法往往将问题整体作为输入,只能输出一个识别出的关系从而不能回答多跳问题。而该方法通过句法依存树进行模板匹配能识别出多条关系从而可以回答多跳问题。其在 QALD-6 和 WebQuestions 测试集上 F1 得分分别为 0.55 和 0.312。
2) 节点优先的构建方法 (TKDE2018[2]) 先识别问题中的节点(实体/类别/变量)再通过句法依存树构造查询图结构,而后为图中各边分配候选谓词。该方法不但可以识别多关系,还可以处理隐式关系,并且不依赖于预先定义的图结构模板。其在 QALD-6 和 WebQuesitons 测试集上 F1 得分分别为 0.78 和 0.496。
3) 基于状态转换的构建方法 (EMNLP2018[3]) 使用序列标注模型识别句中节点后,在训练好的子图打分模型的监督下通过预定义的四种状态转换操作逐步生成语义查询图,最后使用多通道卷积神经网络 (MCCNN) 识别相应关系。该方法可以生成更复杂的查询图结构(例如带环的查询),在 QALD-6、WebQuestions 和 ComplexQuestions 测试集上 F1 得分分别为 0.80, 0.536 和 0.543。
三、gAnswer 开源项目
项目网站: http://ganswer.gstore-pku.com/
代码地址: https://github.com/pkumod/gAnswer
gAnswer 项目基于节点优先的构建方法[2]和 DBpedia 知识库实现了开放领域的事实类问答。给定自然语言问题,gAnswer 返回用户 top-k 的 SPARQL 查询及对应答案集合。其查询阶段无缝对接 gStoreRDF 图数据库查询引擎 (http://gstore-pku.com/)。目前 GAnswer 项目已在 Github 上开源。
GAnswer 参加了欧盟组织的 QALD-9 (https://project-hobbit.eu/challenges/qald-9-challenge/) 的评测比赛,并取得了第一名的成绩。
GAnswer 已被多个商业公司和学校研究团队应用,用于提供包括电影知识问答,古诗词问答和医疗知识问答等多个方面的面向知识图谱的自然语言问答服务。
[1] Lei Zou, Ruizhe Huang, Haixun Wang, Jeffrey Xu Yu,Wenqiang He, Dongyan Zhao: “Natural language question answering over RDF: agraph data driven approach”. SIGMOD Conference 2014: 313-324
[2] Sen Hu, Lei Zou, Jeffrey Xu Yu, Haixun Wang, DongyanZhao: “Answering Natural Language Questions by Subgraph Matching over KnowledgeGraphs”. IEEE Trans. Knowl. Data Eng (TKDE) 2018: 824-837
[3] Sen Hu, Lei Zou, Xinbo Zhang: “A State-transitionFramework to Answer Complex Questions over Knowledge Base”. Empirical Methodsin Natural Language Processing (EMNLP) 2018: 2098–2108.
OpenKG.CN
中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。
点击阅读原文,进入 OpenKG 博客。