技术动态 | 北京大学计算机所邹磊教授研究组开源面向 RDF 知识图谱的自然语言问答系统 gAnswer...

项目网站: 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查询等逻辑结构,再在知识库中进行查询从而得到问题答案。

640?wx_fmt=png

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 设计了高效的子图匹配算法来查找最终答案,避免相似查询之间的重复计算,大幅度地提高了问答系统的整体效率。


640?wx_fmt=png

针对第二个难点(查询构建),大部分相关工作只能解析简单问题(即解析后的查询只包含一条语句,又称为“一跳问题”),少数工作可以解析复杂问题(多跳问题),但其只能将问题转换为预先定义好的唯一查询图结构,当问题对应其他结构时则不能解析。

我们提出了三种查询构建的方法,其中:

1) 关系优先的构建方法 (SIGMOD2014[1]) 先通过谓词复述词典识别问题中的关系(谓词),再通过启发式规则确定关系两边的节点(实体/疑问词)。一些相关工作中使用神经网络来进行关系抽取的方法往往将问题整体作为输入,只能输出一个识别出的关系从而不能回答多跳问题。而该方法通过句法依存树进行模板匹配能识别出多条关系从而可以回答多跳问题。其在 QALD-6WebQuestions 测试集上 F1 得分分别为 0.55 0.312


640?wx_fmt=png

 

2) 节点优先的构建方法 (TKDE2018[2]) 先识别问题中的节点(实体/类别/变量)再通过句法依存树构造查询图结构,而后为图中各边分配候选谓词。该方法不但可以识别多关系,还可以处理隐式关系,并且不依赖于预先定义的图结构模板。其在 QALD-6WebQuesitons 测试集上 F1 得分分别为 0.78 0.496

640?wx_fmt=png

3) 基于状态转换的构建方法 (EMNLP2018[3]) 使用序列标注模型识别句中节点后,在训练好的子图打分模型的监督下通过预定义的四种状态转换操作逐步生成语义查询图,最后使用多通道卷积神经网络 (MCCNN) 识别相应关系。该方法可以生成更复杂的查询图结构(例如带环的查询),在 QALD-6WebQuestionsComplexQuestions 测试集上 F1 得分分别为 0.80, 0.536 0.543


640?wx_fmt=png

三、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/) 的评测比赛,并取得了第一名的成绩。

640?wx_fmt=png

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)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

640?wx_fmt=jpeg

点击阅读原文,进入 OpenKG 博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ 2287 田忌赛马(贪心)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. Accepted 代码1. 题目 1.1 题目链接 http://poj.org/problem?id2287 1.2 题目大意 双方各有n匹战斗力各异的马&#xff0c;分别派出来PK&#xff0c;假设对方先出牌&#xff0c;我方后出&#xff0c;求我方最多能胜…

Netty的实现原理、特点与优势、以及适用场景

高并发编程系列 高并发编程系列&#xff1a;NIO、BIO、AIO的区别&#xff0c;及NIO的应用和框架选型 高并发编程系列&#xff1a;ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 高并发编程系列&#xff1a;CountDownLatch、Semaphore等4大并发工具类详解 高并发编程系列&…

拒绝无脑吹!从ACL20看预训练缺陷

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 舒意恒、兔子酱以 BERT 为代表作的预训练模型的研究热度一直很高&#xff0c;到 0202 年了&#xff0c;预训练的研究依旧层出不穷&#xff0c;而且 ACL 2020 Best Paper 荣誉提名也选择了这一主题的研究…

论文浅尝 | AMUSE: 基于 RDF 数据的多语言问答语义解析方法

来源&#xff1a;ISWC 2017链接&#xff1a;https://link.springer.com/content/pdf/10.1007%2F978-3-319-68288-4.pdf本文主要关注基于RDF数据的多语言问答任务中&#xff0c;对不同语言问句的语义分析工作。作者提出一种基于DUDES(Dependency-based Underspecified Discourse…

贪心应用--汽车加油次数问题

文章目录1. 问题描述2. 解题思路3. 实现代码4. 测试结果1. 问题描述 已知汽车的油箱额定里程&#xff0c;到目的地的路途中各加油站距起点的距离&#xff0c;求如何加油&#xff0c;让加油的次数最少。 2. 解题思路 每次出发前检查下一个加油站有多远&#xff0c;车子能不能…

最全多线程经典面试题和答案

Java实现线程有哪几种方式&#xff1f; 1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、使用ExecutorService、Callable、Future实现有返回结果的多线程 多线程同步有哪几种方法&#xff1f; Synchronized关键字&#xff0c;Lock锁实现&#xff0c;分布式锁等…

论文浅尝 | Aligning Knowledge Base and Document Embedding Models

本文是我们于苏黎世大学合作的关注与知识图谱和文本对齐的论文&#xff0c;发表于ISWC2018.文本和知识图谱都包含了丰富的信息, 其中知识图谱用结构化的三元组表示信息&#xff0c;文本用自由文本形式表示信息&#xff0c;信息表示的差异给知识图谱和文本融合对齐造成了困难&am…

学会提问的BERT:端到端地从篇章中构建问答对

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 苏剑林机器阅读理解任务&#xff0c;相比不少读者都有所了解了&#xff0c;简单来说就是从给定篇章中寻找给定问题的答案&#xff0c;即“篇章 问题 → 答案”这样的流程&#xff0c;笔者之前也写过一些…

玩转算法面试-第四章查找值之leetcod相关笔记

查找问题 4-1,2 两类查找问题 1 查找有无&#xff1a;set 2 查找对应关系&#xff1a;map 常见的四种操作&#xff1a; insert&#xff0c; find&#xff0c; erase&#xff0c; change&#xff08;map&#xff09; 例题 leetcode 349 &#xff1a;给定两个数组&#xff0c;…

分治算法(Divide Conquer)

文章目录1. 分治算法思想2. 应用举例2.1 逆序度3. 分治思想处理海量数据1. 分治算法思想 分治算法的核心思想就是&#xff0c;分而治之&#xff0c;将原问题划分成n个规模较小&#xff0c;并且结构与原问题相似的子问题&#xff0c;递归地解决这些子问题&#xff0c;然后再合并…

史上最全Java多线程面试60题,含答案大赠送!

【BAT必考系列&#xff01;多线程60题】 多线程有什么用&#xff1f; 线程和进程的区别是什么&#xff1f; ava实现线程有哪几种方式&#xff1f; 启动线程方法start&#xff08;&#xff09;和run&#xff08;&#xff09;有什么区别&#xff1f; 怎么终止一个线程&#…

论文浅尝 | Interaction Embeddings for Prediction and Explanation

本文是我们与苏黎世大学合作的工作&#xff0c;将发表于WSDM2019&#xff0c;这篇工作在知识图谱的表示学习中考虑了实体和关系的交叉交互&#xff0c;并且从预测准确性和可解释性两个方面评估了表示学习结果的好坏。给定知识图谱和一个要预测的三元组的头实体和关系&#xff0…

商汤科技-数据运维工程师-提前批笔试题目汇总

2019年8月19日 问答题1&#xff1a;缺失值数据预处理有哪些方法&#xff1f;https://juejin.im/post/5b5c4e6c6fb9a04f90791e0c 处理缺失值的方法如下&#xff1a;删除记录&#xff0c;数据填补和不处理。主要以数据填补为主。 1 删除记录&#xff1a;该种方法在样本数据量十分…

秋招视频攻略!13个offer,8家SSP的Q神谈算法岗秋招技巧

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术大家还记得几个月前卖萌屋Q神推送的那期《13个offer&#xff0c;8家SSP&#xff0c;谈谈我的秋招经验》吗&#xff1f;据说Q神掌握了影分身的话&#xff0c;一毕业就能年薪600万&#xff0c;咳咳。。。ps&…

分治应用--最近点对问题 POJ 3714

文章目录1. 问题描述2. 解题思路3. 实现代码4. POJ 37141. 问题描述 二维平面上有n个点&#xff0c;如何快速计算出两个距离最近的点对&#xff1f; 2. 解题思路 暴力做法是&#xff0c;每个点与其他点去计算距离&#xff0c;取最小的出来&#xff0c;复杂度O(n2)采用分治算…

Java多线程系列(十):源码剖析AQS的实现原理

在并发编程领域&#xff0c;AQS号称是并发同步组件的基石&#xff0c;很多并发同步组件都是基于AQS实现&#xff0c;所以想掌握好高并发编程&#xff0c;你需要掌握好AQS。 本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程&#xff0c;让你对AQS的整体设计…

玩转二算法课的笔记-第一章

1 问题&#xff1a;对一组数据进行排序 回答&#xff1a;快速排序算法o(NLOGN)&#xff0c;错误。 关键词&#xff1a;思考 应该问面试官&#xff0c;这组数据有什么样的特征&#xff1f; 比如;有没有可能包含大量重复的元素&#xff1f; 如果有这个可能的话&#xff0c;三路快…

微软亚洲研究院NLC组招聘实习生!与一线研究员共探NLP前沿与落地!

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术MSRA-NLC组招人啦&#xff01;微软亚洲研究院&#xff08;MSRA&#xff09;自然语言计算组&#xff08;NLC&#xff09;招收长期实习生一名&#xff0c;与一线研究员共同进行自然语言处理领域的科研项目和落地…

分治应用--万里挑一 找假硬币

文章目录1. 问题描述2. 解题思路3. 代码实现1. 问题描述 n 个硬币中有1枚是假币&#xff0c;真假币唯一的区别是假币重量轻&#xff0c;如何快速找出假币 2. 解题思路 暴力做法&#xff0c;一个一个的称重&#xff0c;O&#xff08;n&#xff09;复杂度分治思路 将硬币等分…

Java多线程与并发系列从0到1全部合集,强烈建议收藏!

在过去的时间中&#xff0c;我写过Java多线程与并发的整个系列。 为了方便大家的阅读&#xff0c;也为了让知识更系统化&#xff0c;这里我单独把Java多线程与并发的整个系列一并罗列于此&#xff0c;希望对有用的人有用&#xff0c;也希望能帮助到更多的人。 以下为整个目录&a…