开放域知识库问答研究回顾
The following article is from PaperWeekly Author 舒意恒
公众号关注 “ML_NLP”
开放域问答的研究已经从复杂流水线系统进化到端到端深度神经网络。其中一些方法利用知识库中的信息进行作答,另一些特殊的方法通过融合知识库和文本信息二者进行作答。本文旨在回顾近年来开放域知识库问答或知识库-文本融合问答的重要工作。
论文标题:Open Domain Question Answering Using Early Fusion of Knowledge Bases and Text
论文来源:EMNLP 2018
论文链接:https://arxiv.org/abs/1809.00782
代码链接:https://github.com/OceanskySun/GraftNet
知识库和文本作为问答系统的数据源,各有优劣。前者的覆盖范围小,而利用信息的难度较低;后者的覆盖范围更大,而利用信息的难度更高。
Graft-Net 将 QA 任务转换为异构图上节点的分类任务执行,异构图中既包含来自于知识库的节点,也包含来自于文本的节点。
一些基于图传播的模型学习节点表示,然后执行节点分类,通过分类任务完成 QA。这类方法的基本过程是:
但是,作者的设定与之前的基于图的分类任务有两处不同:
第一个不同,图 包含异构结点。图中的某些节点对应于代表符号对象的 KB 实体,而其他节点则代表文本文档,它们是一段长度不定的文本序列。 第二个不同,在自然语言问题 上限制图中节点的表示。
1.1 结点初始化
1.2 异构更新
如图阐释了实体和文本文档的异构更新规则。
1.3 对问题的约束
上文所述的部分,与问题本身是无关的。作者通过两种方式引入对问题的依赖:通过对关系的关注以及通过个性化传播。
1.4 答案选择
1.5 通过事实缺失进行正则化
论文标题:PullNet: Open Domain Question Answering with Iterative Retrieval on Knowledge Bases and Text
论文来源:EMNLP 2019
论文链接:https://arxiv.org/abs/1904.09537
该文同样是考虑结合语料库和知识库二者构建问答系统。其重点是在语料库上补充了较大但不完整的知识库,以及需要例如多跳的方法进行推理的问题。
作者描述了一个集成框架 PullNet,用于(1)学习(从 KB 或语料库中)检索什么,以及(2)使用这种异构信息进行推理以找到最佳答案。PullNet 使用迭代过程来构造特定于问题的子图,该子图包含与问题相关的信息。
2.1 问题子图
2.2 迭代子图扩展和分类
概览 问题子图初始的顶点集是问题中提到的实体列表,边集为空。然后算法迭代地扩展,直到它包含可以回答问题的信息。
作为一个迭代搜索算法,PullNet 看起来似乎与 BFS 有点类似?这里其实一个节点被扩展是有条件的,并且这里不是在图上直接扩展来搜索,而是利用两个数据源获得一个实体结点的邻居节点。
Pull 操作 pull 操作要么从一个知识源检索信息,要么从事实或文档提取实体。
两个提取操作相对来说是比较简单的。pull_entities
操作需要输入一个文档节点,调用实体链接器,返回所有该文档节点中提到的实体。pull_headtail
操作需要输入一个事实节点,返回该事实的头实体和尾实体。
pull_docs
操作从语料库检索相关文档。作者使基于 IDF 的检索系统 Lucene,并且假设所有句子在索引之前都已经被实体链接。被检索到的文档被约束为链接实体 ,通过与 的 IDF 相似度进行排序。只有排序为 的文档被返回。pull_facts
操作从知识库检索关于 的 个事实。被检索到的事实要求其头实体或尾实体是 ,并基于事实和关系之间的相似度进行排序。问题通过 LSTM 获得向量表示,然后使用二者内积传递到 sigmoid 函数中作为相似度表示。分类操作classify
操作有两类,应用于问题子图的节点上。这两种操作只用于图上的实体节点,但它们基于由图 CNN 计算到的节点表示,因而非实体节点和边也影响了分类结果。子图构建过程中,classify-pullnodes
操作返回节点应该在下一迭代被扩展的概率,算法在每一迭代选择具有最高概率的 k 个节点。
子图完成后,classify_answer
预测一个实体节点是否是问题的答案。具有最高分数的节点被返回为最终答案。作者使用了和 GRAFT-Net 一样的 CNN 结构来做分类。
update
操作取前一迭代的问题子图,并通过加入新检索到的实体节点、文本节点和事实节点来更新。在文本节点和事实节点上执行 pull 操作时会衍生出一些新的边,而其他新边可能会将新添加的节点与上一个子图中已经存在的节点连接起来。2.3 训练
作者只通过问题-答案对来训练 PullNet,即回答问题所需的实际推理链是潜在的而不是显式的。因此,需要使用弱监督来训练上述分类器和相似性分数。
论文标题:Improving Multi-hop Question Answering over Knowledge Graphs using Knowledge Base Embeddings
论文来源:ACL 2020
论文链接:https://www.aclweb.org/anthology/2020.acl-main.412
代码链接:https://github.com/malllabiisc/EmbedKGQA
多跳 KGQA 需要对 KG 的多个边进行推理才能得出正确的答案。KG 通常是不完整的,缺少许多链接,这给 KGQA 尤其是多跳 KGQA 带来额外的挑战。
作者在该文中提出了 EmbedKGQA,在执行稀疏 KG 上的多跳 KGQA 方面特别有效。它放宽了从预先确定的邻域中选择答案的要求,而这是以前的多跳 KGQA 方法实施的约束。
3.1 知识图谱嵌入模块
3.2 问题嵌入模块
3.3 答案选择模块
4.1 知识库问答的常见数据集
MetaQA:一个大规模多跳 KGQA 数据集,有 1、2、3 跳的问题,包含电影领域四十万个问题。其中提供了一个有 13.5 万三元组、4.3 万实体、9 种关系的知识图谱。 WebQuestionSP:一个较小的 QA 数据集,包含 4.737 个问题,1、2 跳的问题。其中问题可以通过 Freebase 回答。 Complex WebQuestions:一个包含复杂自然语言问题的数据集。其中包含四种问题类型,组合(45%),连词(45%),比较(5%)和最高级(5%)。这些问题需要在知识库中进行多达 4 步的推理,而在语料库上则需要进行 2 步推理。
4.2 实验效果
上表实验数据来自于 EmbedKGQA 在 MetaQA 数据集上的实验。可以看出 GraftNet、PullNet 与 EmbedKGQA 在 2-hop 以内的表现都相当好,但是在知识库存在较多缺失链接的时候,EmbedKGQA 的优势显现出来。
仓库地址共享:
在机器学习算法与自然语言处理公众号后台回复“代码”,
即可获取195篇NAACL+295篇ACL2019有代码开源的论文。开源地址如下:https://github.com/yizhen20133868/NLP-Conferences-Code
重磅!机器学习算法与自然语言处理交流群已正式成立!
群内有大量资源,欢迎大家进群学习!
额外赠送福利资源!邱锡鹏深度学习与神经网络,pytorch官方中文教程,利用Python进行数据分析,机器学习学习笔记,pandas官方文档中文版,effective java(中文版)等20项福利资源
获取方式:进入群后点开群公告即可领取下载链接
注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商请自觉绕道。谢谢!
推荐阅读:
常用 Normalization 方法的总结与思考:BN、LN、IN、GN