笔记整理 | 谭亦鸣,东南大学博士生。


来源:EACL‘21

链接:https://www.aclweb.org/anthology/2021.eacl-main.300.pdf

概述

知识图谱问答过程一般包括实体链接,多跳推理等步骤,传统方法将各个步骤作为模块单独处理,并流程化实现问答过程,这种方式显然会在流程中形成错误积累。这些步骤(或者说挑战)之间往往存在关联,因此通过一个end2end学习过程力,它们的解决方案也可以相互增强。这篇文章提出了一个基于BERT的神经机器翻译模型CQA-NMT来解决这些挑战,在LOCA和MateQA两个数据集上的实验验证表明了方法的有效性。

贡献

作者表示本文的贡献如下:

1、提出一个多任务模型,将解析自然语言问题的所有任务共同处理。并且可以解决一些新的类型的KGQA挑战。

2、提出使用基于神经机器翻译的方法用于挖掘问题相关的数量不定的relation。

3、研究表明每个自然语言问题解析的子任务之间存在互补性,这种特性将最终反映在提升问答效果上。

4、CQA-NMT能够预测包含在知识子图中的关系,并且帮助预测子图的拓扑结构,实现一个神经网络在知识图谱上的组合推理。

5、在MateQA的结果取得了SOTA

KGQA中的任务

作者首先对KGQA任务中包含的各种任务进行说明:

实体链接标注 自然语言问题中的一些n-gram(n元文法,实际可以视为短语或者字段)与知识图谱中的实体id所对应。实体链接标注的目标是识别这些n-gram并建立与实体id的对应关联。

答案类型标注 每个问题对应的答案实体都有一个实体类型的标签(来自知识图谱),目标就是识别某问题对应答案的类型。

关系序列和拓扑标注(或者路径标注,多跳推理) 由问题中的关系和实体连接起来形成的查询图反映了整个问题描述信息构成的查询路径,这些路径在知识图谱中构成从链接实体到答案实体的可达路径(不一定是最短路径)。

问题类型标注 在知识图谱问答中包含许多类型的问题,例如可以用单个三元组回答的简单问题,或者一些事实查询图结构更复杂的问题,亦或是一些需要聚合操作的问题(计数,交并集等),或者一些是非问(布尔类型)。

接着,针对上述这些任务,作者列出其中包含的关键挑战(对应的例子可以在图1找到):

不完整的实体mention

问题中包含的实体描述往往无法与图谱中完整的命名实体完全匹配(question 8)

协同词义消歧

实体mention的链接目标有时候需要借助其他实体帮助消除歧义(question 7)

避免预期之外的匹配

实体mention链接的对象需要是与问题内容相关的预期对象,但是单纯的字符匹配可能引起图谱中的匹配对象跟问题无关(question 9)

重复实体

知识图谱中可能存在多个具有相同命名的实体

关系名误匹配

问题中的关系描述与图谱中标准的关系描述往往差别甚大(question 2,4,6)

隐含关系

问题中可能存在一些没有被明确提及,但推理中需要使用到的关系信息(question 4)

图3给出了CQA-NMT模型的结构和流程,本质上它还是一个encoder-decoder结构,但是涵盖了包括:1. 抽取实体mention然后链接到KG;2.通过游走(推理)生成需要的谓词(关系)序列;3. 预测问题类型;4. 确定答案类型并输出答案;等全部问答任务。

下面分别就多任务模型的各个模块进行说明:

实体mention识别模块

如图4所示,通过使用BERT编码器的隐状态,作者建立了一个序列标注任务模块做实体识别,该模块输入词序列,输出标签序列。本文通过联合了实体类型以及跨度来增强CQA-NMT,softmax层的输出为:

其中,i表示第i个词(位置),h是隐状态。

实体链接模块

实体识别输出了这些:实体词序列(多个)+实体类型标签(对应多个);接下来是将它们链接到图谱上,这里作者使用的是序列匹配+PageRank。通过使用三种序列匹配算法并且投票的方式挑选出候选实体,然后使用pageRank从流行度的角度选出图谱中的实体与问题中的实体mention做链接。

路径预测模块

这一部分的工作是生成问题对应的谓词序列,这里使用到的是一个基于transformer的解码器,也就是把谓词序列视作翻译的解码目标。在这里,作者不限制生成谓词的数量,因为当整个问题的内容解码完成后,生成也就终止了。

问题类型和答案类型预测模块

这两个部分很显然都可以看作分类任务,因此作者同样是使用到实体识别部分的隐状态作为特征,然后预测问题类型和答案类型:

训练的目标则是最大化以下条件概率:

即联合了实体类型,路径以及问题类型还有答案类型一起的最大化概率。

实验部分

首先是数据方面,本文作者使用到了两个问题集:MateQA和LOCA。前者相对更流行一些,属于典型的多关系问答数据集(最多三跳),不过该数据集不包含问题和答案类型标签,所以作者在这里是定义了一个默认的label。后者的问题类型可以见图1。两者的统计信息都收录在表1。显然LOCA具有更少的训练样本,更多的问题类型,也就有更高的难度。

评价指标方面,对于不同的子任务,作者使用了不同的方法,实体识别和实体类型(F值),问题类型,路径预测以及答案类型(Accuracy)。

实验结果

问答的总体结果如表2

一方面,从这个结果来看,多任务方法取得了作者预期的收益,整体结果优于对比方。其中,NTM数据CQA-NMT在2-hop上效果稀碎,作者认为是zero-shot导致的(3-hop上却又有80+,这里没有进一步做出解释)

LOCA的整体结果低于MateQA,相对更具有挑战性。

各个子任务的效果见表3:

这张表说明了多任务联合确实体现出了预期的互补性,各个子任务得到了共同提升。


OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

点击阅读原文,进入 OpenKG 网站。

论文浅尝 | 利用机器翻译和多任务学习进行复杂的知识图谱问答相关推荐

  1. 论文浅尝 - EMNLP | 通过元强化学习实现少样本复杂知识库问答

    笔记整理 | 谭亦鸣,东南大学博士生 来源:EMNLP 2020 链接:https://www.aclweb.org/anthology/2020.emnlp-main.469.pdf 本文关注聚合型 ...

  2. 论文浅尝 | PairRE: 通过成对的关系向量实现知识图谱嵌入

    笔记整理:黎洲波,浙江大学硕士,研究方向为自然语言处理.知识图谱. 研究背景 知识图谱因其在问答.语义解析和命名实体消歧等任务取得了良好的效果而受到广泛关注,而大部分知识图谱都存在不全和缺失实体链接的 ...

  3. 论文浅尝 | 利用多语言 wordnet 上随机游走实现双语 embeddings

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识图谱问答. 来源:Knowledge Based System 链接:https://www.sciencedirect.com/science/a ...

  4. 论文浅尝 | 利用问题生成提升知识图谱问答

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答. 来源:NLPCC2019 链接:http://tcci.ccf.org.cn/conference/2019/papers/183.pdf ...

  5. 论文浅尝 | 利用知识-意识阅读器改进的不完整知识图谱问答方法

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答. 来源:ACL2019 链接:https://www.aclweb.org/anthology/P19-1417/ 本文提出了一种融合不完整 ...

  6. 论文浅尝 | 利用指针生成网络的知识图谱自然语言生成

    论文笔记整理:谭亦鸣,东南大学博士,研究方向为知识图谱问答. 来源:Neurocomputing 382: 174-187 (2020) 链接:https://www.sciencedirect.co ...

  7. 论文浅尝 | 利用 KG Embedding 进行问题回答

    论文笔记整理:吴杨,浙江大学计算机学院,知识图谱.NLP方向. http://research.baidu.com/Public/uploads/5c1c9a58317b3.pdf 动机 本文主要针对 ...

  8. 论文浅尝 | 利用推理链进行视觉问题回答

    论文笔记整理:吴杨,浙江大学计算机学院,知识图谱.NLP方向. http://papers.nips.cc/paper/7311-chain-of-reasoning-for-visual-quest ...

  9. 论文浅尝 | 利用冻结语言模型的多模态少样本学习

    笔记整理 |  李磊,浙江大学硕士,研究方向为自然语言处理 链接:https://arxiv.org/abs/2106.13884 动机 大规模的自回归语言模型(如GPT)在预训练阶段学习到了大量的知 ...

最新文章

  1. 2020人工神经网络第一次作业-参考答案第三部分
  2. 思考出真知之日出日落第一部-公司篇?
  3. Android关于Theme.AppCompat相关问题的深入分析
  4. C++ 编译,运行过程 详解。
  5. 用c语言编写数码管的显示函数,各位大神,如何用C语言实现在数码管上实现1234同时亮...
  6. 计算机视觉与深度学习 | 基于Faster R-CNN的目标检测(深度学习Matlab代码)
  7. centos eclipse 安装
  8. 每日程序C语言43-链表原地逆置
  9. 服务器软RAID和LVM的实现
  10. MySQL 基础 ———— 变量
  11. Java笔记-AnnotationConfigApplicationContext在Spring中的例子
  12. 基于参考点的非支配遗传算法-NSGA-III(一)
  13. Vue中插槽slot的使用
  14. Markdown写作入门
  15. 书单丨被强化学习一次次伤害?本书单带你一步步入门!
  16. 【人脸识别】基于matlab二值膨胀差分和椒盐滤波教室内人数统计【含Matlab源码 251期】
  17. 王道考研操作系统笔记(第四章)附:王道考研408所有PPT和思维导图
  18. MV88DE3010之ffmpeg与m3u8
  19. Win11怎么不让软件联网?Win11禁止某个软件联网的方法
  20. JS将sql的dateTime格式数据例如:Wed Sep 30 00:00:00 CST 2020 字符串转换成2020-09-30 00:00:00时间格式

热门文章

  1. CPU怎么认识代码的?
  2. Linux内核编程广泛使用的前向声明(Forward Declaration)
  3. winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...
  4. QT —— 应用程序发布
  5. python子进程修改父进程内变量_如何将父变量传递给python中的子进程?
  6. 十四、CSS 3新特性详解(二)——2D转换(transform)、动画(animation)、动画序列
  7. 数据库和ORMS:使用SQLAlchemy与数据库通信
  8. LeetCode 1954. 收集足够苹果的最小花园周长(数学)
  9. Scala 入门1(变量、分支循环、函数)
  10. LeetCode 1679. K 和数对的最大数目(哈希)