博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答
阅读量:4204 次
发布时间:2019-05-26

本文共 1608 字,大约阅读时间需要 5 分钟。

640?wx_fmt=png

链接:https://arxiv.org/pdf/1804.03317.pdf

概述

当前大部分的 kbqa 方法为将 kb facts 与 question 映射到同一个向量空间上,然后计算相似性. 但是这样的做法会忽视掉两者间原本存在的单词级别的联系与交互. 所以本文提出一种网络结构 ARSMCNN,既利用到语义的信息, 又利用到单词级别的交互.

模型

640?wx_fmt=png

作者提出一种称为 attentive recurrent neural network with similarity matrix based convolutional neural network 网络结构,同时运用 attentive rnn 以及 cnn 来得到 question 与 kb facts 之间的相似度从而给出匹配得分. 上图为完整的流程示意图.

首先假设⼀个三元组(subject, relation, object)为⼀个 fact, 并且当 subject 与 relation 确定后,答案也会被确定下来.从而可以将问答任务分为两个阶段: entity detection 与 relation detection.

1) Entity Detection

640?wx_fmt=png

⾸先利用 bilstm 训练模型,输入一个问句,如果是关键词则标记为 1,否则标记为 0. 然后将标记为1的词拿出来进行 entity dectction. 作者提出了一种选取 entity candidates 的方法, 大致分为四个步骤:

a) 将标记为 1 且距离小于等于 1 的单词拼接成一个句子 s,如果有多个,则取长度最长的那一个.
b) 在知识库中寻找能够完美匹配的实体, 如果找到,则返回实体集合,如果没有则进行下一步.
c) 基于在 s 中最有可能存在 entity mention 的假设, 可以通过 s 生成知识库中的对应实体 x. 所以, 以 s 为中心通过expand或者 narrow 最多两个单词来构成s’,然后利用s’取寻找 entity. 如果找到了则返回实体集合,否则进行下一步
d) 如果仍然没有找到 match, 则利用 S 中的每个单词来寻找包含该单词的实体. 保证两者有最大公共子串.

经过实验作者发现进入到第四步的概率仅为 0.2%

2) Relation Detection

640?wx_fmt=png

首先将问句中的实体用<s>替换, 然后进过两个部分进行match score的计算.

a) semantic level:

利用 attentive rnn 作为 encoder compare 的框架, 将 question 作为输入到 bigru中,并于 relation 做一个 attention:

640?wx_fmt=png

然后利用 p 和 r 计算 match score:

640?wx_fmt=png

b) literal level:

640?wx_fmt=png

将单词映射到 embedding 空间后,先计算相似矩阵:

640?wx_fmt=png

随后对这个相似矩阵进行卷积运算:

640?wx_fmt=png

然后在两个方向上做最大池化

640?wx_fmt=png

(其中的d1,d2分别为问句和 relation 的长度)

最后再经过一个全联接层得到literal层面上的 match socre:

640?wx_fmt=png

c) 将两个层面的得分综合起来作为最后的match socre:

640?wx_fmt=png

训练过程中使用 margin ranking loss, 保证正确的relation与问句的匹配得分比负例要高:

640?wx_fmt=png

实验结果:

在simple question上做实验:

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

笔记整理: 陈佳奥,浙江大学本科生, 研究方向为 KB-QA, NLP。


OpenKG.CN

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

640?wx_fmt=jpeg

转载须知:转载需注明来源“OpenKG.CN”、作者及原文链接。如需修改标题,请注明原标题。

 

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

你可能感兴趣的文章
【一天一道LeetCode】#116. Populating Next Right Pointers in Each Node
查看>>
【一天一道LeetCode】#117. Populating Next Right Pointers in Each Node II
查看>>
【一天一道LeetCode】#118. Pascal's Triangle
查看>>
【一天一道LeetCode】#119. Pascal's Triangle II
查看>>
【unix网络编程第三版】ubuntu端口占用问题
查看>>
【一天一道LeetCode】#120. Triangle
查看>>
【unix网络编程第三版】阅读笔记(三):基本套接字编程
查看>>
同步与异步的区别
查看>>
IT行业--简历模板及就业秘籍
查看>>
JNI简介及实例
查看>>
DOM4J使用教程
查看>>
JAVA实现文件树
查看>>
Drools 规则引擎
查看>>
OLTP和OLAP区别
查看>>
JMeter最常用的三种类型的压力测试
查看>>
Hibernate HQL 语法大全(上)
查看>>
深入Java事务的原理与应用
查看>>
CSS单位和CSS默认值大全
查看>>
交大我来了--周末再见了
查看>>
网页中flash wmode属性
查看>>