论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering
论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering
本文解决KBQA中的子问题——Relation Detection(关系检测)。关系检测目的是给定一个问句,根据知识库来判断该问句目标的关系是什么。例如问句“中国的首都是哪里”,我们会先锁定问句的中心实体(主题词)是“中国”,其次检测这句话目标是问与“中国”这个实体具有“首都”关系的实体,因此类似于知识图谱的补全工作:(中国,首都,?)。因此关系检测即是从(中国,?,?)到(中国,首都,?)的过程。对于像SimpleQuestion这样的数据集,其为简单的问答,因此确定了(中国,首都,?)也就确定了整个三元组(中国,首都,北京)。如果对于WebQSP复杂问答,则可能会得到一些三元组(中国,首都,北京),(中国,首都,西安)…,但前提是每个三元组都会自带一些约束,比如时间约束。如何能够利用约束来解决复杂的关系检测时本文的研究重点。
一、简要信息
序号 | 属性 | 值 |
---|---|---|
1 | 模型名称 | HR-BiLSTM |
2 | 所属领域 | 自然语言处理 |
3 | 研究内容 | 知识库问答 |
4 | 核心内容 | Relation Detection, KBQA |
5 | GitHub源码 | https://github.com/StevenWD/HR-BiLSTM |
6 | 论文PDF | https://www.aclweb.org/anthology/P17-1053.pdf |
7 | 引用(GBT7714) | Yu M, Yin W, Hasan K S, et al. Improved Neural Relation Detection for Knowledge Base Question Answering[C]. meeting of the association for computational linguistics, 2017: 571-581. |
8 | 引用(BibTex) | @article{yu2017improved,title={Improved Neural Relation Detection for Knowledge Base Question Answering},author={Yu, Mo and Yin, Wenpeng and Hasan, Kazi Saidul and Santos, Cicero Nogueira Dos and Xiang,Bing and Zhou, Bowen},volume={1},pages={571–581},year={2017}} |
二、全文摘要翻译
关系检测是许多自然语言处理应用中非常重要的部分,例如知识库问答(Knowledge Base Question Answering)。本文我们提出一种分层的循环神经网络根据给定的问句识别出对应关系。我们的方法利用深度残差双向长短期记忆网络在不同层面上对比问句和关系,另外我们提出一个简单的KBQA系统将实体链接和本文提出的关系检测集成起来相互增强。我们实验结果表明我们的方法不仅可以在关系检测上获得突出的结果,而且更重要的是,其帮助我们在KBQA的两个任务上SimpleQuestions和WebQSP获得了最佳结果。
三、问题介绍与相关工作
3.1 介绍
知识库问答是指在给定一个问句以及知识库的条件下,生成一个KB查询方案,并从知识库中寻找目标答案。知识库问答目前分为两种形式:
- 以SimpleQuestions为典型的简单问答,是单路径问答模型(single-relation question)。即给定一个中心实体,检测出问句要寻找的关系后即可直接获得对应的答案。
- 以WebQSP为典型的复杂问答,寻找的通常是一条多关系路径(multi-relation question)。在这种情况下有可能要获得的答案需要多个三元组组成的路径,也可能出现多关系(one-to-many)问题,因此需要有约束。
知识库问答通常包括两个子任务,一个是实体链接,即给定的问句中的主题词要与知识库做链接,这里就需要有实体识别、实体链接、消歧等步骤。通常简单的方法是使用n-grams词袋模型。另一个子任务便是关系检测。其不同于传统的关系抽取是在少量预定义关系基础上进行的,关系检测通常面对的是庞大的关系空间(超过6000个关系类),且经常出现测试集中的关系在训练集中没有出现的情况,即unseen relations。作者统计测试集中14%的关系在训练集中从没有出现过,因此这是一个zero-shot问题。
因此本文着手解决的目标是:
(1)使用词级别的匹配准则来与关系进行匹配。如果直接使用整个关系名称作为匹配,则没有办法解决unseen问题,但如果使用词级别,则可以通过RNN或CNN将其表征起来,这样即便遇到没有见过的关系,也可以通过每个单词编码起来。
(2)同时结合词级别(word-level)和整个关系名称(relation-level)进行表征;
(3)使用深度BiLSTM进行问句与关系的匹配;
(4)使用残差训练方法训练。
另外作者又提出2阶段关系检测,主要目的是对问句的候选主题词(中心实体)进行排序:
(1)首先关系检测可以检测出当前问句较高置信度的关系,根据这些中心实体是否能够与这些关系相连,来对这些中心实体进行重排序(Re-ranking),并挑选一小部分。目标是解决那些模棱两可的实体。
(2)根据挑选的一小部分候选实体,再次进行关系检测,寻找到答案所在的路径。
3.2 相关工作
关系抽取是一种分类问题,通常是给定一个句子以及两个实体,来判断这两个实体是什么关系。通常这类问题的关系是预定义的,且规模很小,因此不会出现zero-shot问题。例如SemEval 2010 Task8 只有19个关系,TACKBP2015有74个关系,ACE2005则有11个粗粒度,32个细粒度的关系。
但是对于关系检测任务来说,关系数量大,且容易出现unseen问题。目前的两种解决方法是:
(1)使用预训练的关系表征,例如TransE模型可以获得关系向量。通过事先对所有关系进行预训练,则可以得到统一的向量表示。这一类可以提取关系的全局信息,但可能是稀疏的(有些关系名称可能出现次数很少)
(2)将关系名称拆分为一个个单词或者字母,因此关系检测变为序列匹配或排序问题(sequence matching and ranking),这一类可以捕捉局部信息,但忽略了全局信息。
另外与关系抽取不同的地方是,关系抽取拥有至少两个实体参数,因此完全可以通过实体信息来增强关系抽取,但对于关系检测任务,这一类信息便很难被利用,因为一个问句通常只包含一个中心实体,而且知识库中的实体包含多个类型,因此目前没有工作着手对实体类型用于关系检测。
四、方法
4.1 不同粒度上的关系表征
作者同时从word-level和relation-level对关系近表征。输入的是一个关系或关系路径:r={r1word,...,rM1word}∪{r1rel,...,rM2rel}r=\{r_1^{word}, ..., r_{M_1}^{word}\}\cup\{r_1^{rel}, ..., r_{M_2}^{rel}\}r={r1word,...,rM1word}∪{r1rel,...,rM2rel}。其中M1M_1M1表示所有关系的单词数量,M2M_2M2表示当前关系或关系路径中所有的关系名称。其次通过共享参数的Bi-LSTM进行表征,分别得到word-level和relation-level的隐状态矩阵 [B1:M1word:B1:M2rel][\mathbf{B}_{1:M_1}^{word}:\mathbf{B}_{1:M_2}^{rel}][B1:M1word:B1:M2rel],其中[:][:][:]表示拼接。最后分别将两个矩阵进行所有隐状态向量进行最大池化,得到最终的一个向量hr\mathbf{h}^rhr 。
4.2 不同层面的问句表征
使用两层的Bi-LSTM对问句进行表征,输入问句q={q1,...,1N}q=\{q_1, ..., 1_N\}q={q1,...,1N},第一层输出的隐状态向量为Γ1:N(1)=[γ1(1),...,γN(1)]\Gamma_{1:N}^{(1)}=[\gamma_1^{(1)}, ..., \gamma_N^{(1)}]Γ1:N(1)=[γ1(1),...,γN(1)]。第二层的输入是第一层的隐状态向量,输出则是Γ1:N(2)=[γ1(2),...,γN(2)]\Gamma_{1:N}^{(2)}=[\gamma_1^{(2)}, ..., \gamma_N^{(2)}]Γ1:N(2)=[γ1(2),...,γN(2)]。作者发现第二层的输入是脱离word级别的,因此可能会出现问题。
4.3 分层匹配
我们获得了Γ1:N(1)\Gamma_{1:N}^{(1)}Γ1:N(1)和Γ1:N(2)\Gamma_{1:N}^{(2)}Γ1:N(2),我们希望这两层的表征都可以与关系进行匹配。朴素的方法是分别将两层表征与关系表征hr\mathbf{h}^rhr计算相似度,然后得到的两个值进行加权求和。但作者发现这么做实验效果还不如只保留一层LSTM的结果,分析可能因为深层的LSTM会陷入局部最优解,因此很难训练。
为了更好能够训练,引入残差网络(Residual Networks)。作者提出两种策略:
(1)将两层的输出,按照每个时刻进行求和,即γi′=γi(1)+γi(2)\gamma_i'=\gamma_i^{(1)} + \gamma_i^{(2)}γi′=γi(1)+γi(2),然后得到的NNN个γ′\gamma'γ′取最大(最大池化)的作为问句的表征hq\mathbf{h}^qhq;
(2)分别对Γ1:N(1)\Gamma_{1:N}^{(1)}Γ1:N(1)和Γ1:N(2)\Gamma_{1:N}^{(2)}Γ1:N(2)应用一次最大池化操作,得到hmax(1)\mathbf{h}_{max}^{(1)}hmax(1)和hmax(2)\mathbf{h}_{max}^{(2)}hmax(2),则hq=hmax(1)+hmax(2)\mathbf{h}^q=\mathbf{h}_{max}^{(1)} + \mathbf{h}_{max}^{(2)}hq=hmax(1)+hmax(2)。
得到了问句的表示,则可以计算相似度:srel(r;q)=cos(hr;hq)s_{rel}(\mathbf{r;q})=cos(\mathbf{h^r;h^q})srel(r;q)=cos(hr;hq)。使用ranking loss训练:lrel=max{0,γ−srel(r+;q)+srel(r−;q)}l_{rel}=max\{0,\gamma-s_{rel}(\mathbf{r}^{+};\mathbf{q})+s_{rel}(\mathbf{r}^{-};\mathbf{q})\}lrel=max{0,γ−srel(r+;q)+srel(r−;q)}。
4.4 KBQA 系统
作者用现有的实体链接工具获得问句qqq的topK个候选实体,记做ELK(q)EL_K(q)ELK(q)。整个流程如图所示:
(1)首先使用原始的问句进行关系检测,获得对应每个关系(与ELK(q)EL_K(q)ELK(q)中所有候选实体所连接的)的得分,并按照得分从高到低排序获得前lll个关系(高置信度关系),记做RqlR_q^lRql。而候选的某一个中心实体eee所有相连的关系记做ReR_eRe,因此两者交集即为该候选实体所有得分较高的关系r∈Rql∩Rer\in R_q^l\cap R_er∈Rql∩Re。如果实体链接工具自身给予每个实体一个排序的得分是slinkers_{linker}slinker,则这个实体的最终得分表示为:
srerank(e;q)=αslinker+(1−α)maxr∈Rql∩Resrel(r;q)s_{rerank}(e;q) = \alpha s_{linker} + (1-\alpha) \max_{r\in R_q^l\cap R_e} s_{rel}(r;q)srerank(e;q)=αslinker+(1−α)r∈Rql∩Remaxsrel(r;q)
直观的理解就是问句的某一个候选中心实体,其得分则依据初始的实体链接工具的打分,以及与该实体所有相连的高置信度关系得分的最大值。因此我们可以对所有候选实体进行排序,选择最大的K′K'K′个(K′<<KK'<<KK′<<K),得到新的候选实体集合ELK′(q)EL_{K'}(q)ELK′(q)。
(2)其次在e∈ELK′(q)e\in EL_{K'}(q)e∈ELK′(q)上应用第二次关系检测,得到每个关系r∈Rer\in R_er∈Re的排序(因为对实体进行了排序和过滤,此时的关系r数量大大减少),但与第一次不同的是,输入的问句中将所有候选实体更换为标签“<e>”。得分记做srel(r;e,q)s_{rel}(r;e,q)srel(r;e,q)
(3)查询生成。根据实体排序的得分以及第二次关系检测得分,得到最终的得分:
直观理解就是在求某一个关系的得分时,这个关系连接的候选中心实体对应一个重排序的得分sreranks_{rerank}srerank,其次这个关系在第二次关系检测时(第(2)部分)的得分srel(r;e,q)s_{rel}(r;e,q)srel(r;e,q),两者加权求和。最后我们会得到一组这样的得分,从中选择最大的得分以及对应的候选实体、关系(关系路径)作为返回结果。
(4)约束检测。如上图,在复杂问题(b)上,通常需要考虑到约束条件。作者提出一种约束检测方法。其包含两个步骤:
- 子图生成(Sub-graph generation):我们通过前3个步骤得到了最大得分对应的关系或关系路径,因此其指向的尾实体就是答案实体。因此我们的做法是将这个答案实体所有邻接实体以及相连的关系组成一个子图。
- 子图链接(Entity-linking on sub-graph nodes):将这个子图与问句进行匹配,并计算匹配的得分,如果得分超过阈值,则将其中的约束结点(实体)添加到答案实体上。
五、实验
实验使用的两个数据集分别是SimpleQuestions和WebQSP:
(1)SimpleQuestions:简单问答,使用小型的FreeBase(2M)
(2)WebQSP:复杂问答,使用完整的FreeBase。使用S-MART作为实体链接。
下表展示了关系检测的效果。可以发现在两个数据集上,本文的方法HR-BiLSTM达到最优效果。同时消融实验表明基于word-leve和relation-level结合可以提升效果,使用双层LSTM和残差方法也可以提升关系检测效果。
另外也发现在WebQSP上关系检测的结果都很差,这也说明了大量的unseen关系对实验影响很大,也是未来解决问题的关键。
作者还将提出的KBQA系统与其他进行比较,如下表所示:
作者发现,如果去掉重排序或去掉约束检测,效果都会下降,说明重排序和约束检测很重要。
六、附录
附录部分对约束检测已经进行了详细的介绍,本文不做讲解。
论文解读:Improved Neural Relation Detection for Knowledge Base Question Answering相关推荐
- 论文翻译:《Improved Neural Relation Detection for Knowledge Base Question Answering》
该论文于2017年发表在ACL,主要讲了智能问答在sq和wq两个数据集上的性能提升,本人研究生方向为这个,故翻译此论文,希望对大家有用. 论文地址:Improved Neural Relation D ...
- Improved Neural Relation Detection for Knowledge Base Question Answering
Improved Neural Relation Detection for Knowledge Base Question Answering 2017 ACL SQ78.7 WebQSP63.9 ...
- 论文浅尝 | Improved Neural Relation Detection for KBQA
Yu M, Yin W, Hasan K S, etal. Improved Neural Relation Detection for Knowledge Base QuestionAnswerin ...
- 论文总结之对话生成《Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering》
11.Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering 本篇论文是ACL最新的20 ...
- 论文笔记Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signa
Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signals 引 ...
- 《Knowledge Base Question Answering via Encoding of Complex Query Graphs》论文笔记
Knowledge Base Question Answering via Encoding of Complex Query Graphs 这篇文章是上交和阿里于2018年发表在ACL上,主题依然是 ...
- 【KBQA综述-0】Complex Knowledge Base Question Answering: A Survey
Complex Knowledge Base Question Answering: A Survey(2021年10月) 前言 这是一篇对于复杂问题KBQA领域的详细综述,其工作主要集中在以下方面: ...
- Knowledge Base Question Answering via Encodin of Complex Query Graphs
Knowledge Base Question Answering via Encodin of Complex Query Graphs ACL 2018 CompQ 42.84 WebQ 52.6 ...
- 论文阅读笔记:BB-KBQA: BERT-Based Knowledge Base Question Answering
论文来自 Chinese Computational Linguistics 以下笔记只记录部分内容 abstract 大多数现有的方法都是基于模板的,或者是在特定任务的数据集上进行训练的.然而,手工 ...
最新文章
- 【OpenGL】五、Visual Studio 2019 配置 GitHub ( 提交代码 )
- 牛客题霸 [将字符串转化为整数] C++题解/答案
- leetcode1277. 统计全为 1 的正方形子矩阵(dp)
- JSP EL表达式使用
- 14001.petalinux开发环境搭建
- 防止 重复重建相同的表
- .net IO异步和Producer/Consumer队列实现一分钟n次http请求
- 三、系统分层和分割策略
- 倒计时_考研倒计时30天,拼了
- python源码中的学习笔记_第3章_range函数与循环结构
- php mpdf 乱码,PHPMPDF中文乱码如何解决
- win32-字体名称中文名和英文名的对照-c++
- odb 使用指南(二)Hello World
- 开放低代码的钉钉,能否普惠1700万企业?
- 谈一谈PAC学习理论
- mysql like 原理_MySql原理
- 用HTML和CSS做箭头
- 黄柳青:中国软件的致命缺陷是什么!
- 如何把很多照片拼成一张照片_怎样用手机将多张照片拼成一张组合图
- 设计模式之禅读书笔记—行为类模式