来源:NLPCC 2017

论文下载地址:http://tcci.ccf.org.cn/conference/2017/papers/2003.pdf

动机

开放领域的QA问题是一个被广泛研究的问题,而且目前这个问题并没有被很好地解决。在中文领域,相关的数据集并不多。而NLPCC开放了一个KBQA比赛,为中文KBQA提供了一个很好的数据集。本文使用了基于特征的方法来完成实体链接,并基于词向量对候选谓词进行初筛。之后,文章采用了深度CNN模型来重排实体-谓词对,从而找到最正确的实体-谓词。

贡献

文章的贡献有:

(1)提出了一种基于特征的实体链接方法;

(2)提出了一种基于词向量的候选谓词初筛方法;

(3)提出了一种基于深度CNN的谓词排序方法。

方法

⒈模型结构

首先人工构建特征,选取可能的实体指称。然后使用非监督的词向量,来选择候选的谓词。当得到实体-谓词对之后,采用deep-CNNs模型来重排它们。最后将所有的中间结果(打分)加权和,就得到最后的谓词,以及答案。另外,这里有个小trick,就是当一个问题经过解析,只有实体名,那么这个问题可能是关于这个实体的介绍,所以实体的谓词就为“introduce”,在知识图谱中得到这个实体的介绍信息并输出为答案。

⒉实体链接

NLPCC的KB中,实体是类似于“Li Na (Diving Athlete)”这样的,有实体名,也可能有扩展描述信息。实体指称是问题的一个子串,并且指称与实体名相同,或者与实体名的别名相同(NLPCC有文件提供了这个别名)。这里建立特征后,用GBDT去选择问题的所有子串中真正的实体指称子串。

这里首先使用正向最大匹配法(FMM,forwardmaximum matching)来进行切词后,再使用逆向最大匹配法(RMM,reverse maximum matching)来进行切词。RMM的基本原理与FMM基本相同,不同的是分词的方向与FMM相反。RMM是从待分词句子的末端开始,也就是从右向左开始匹配扫描,每次取末端m个字作为匹配字段,匹配失败,则去掉匹配字段前面的一个字,继续匹配。

当得到一个分词结果之后,句子中每一个分词视为一个候选实体指称,对每一个指称利用规则生成特征,在得到这些特征后,形成数值,并送到GBDT模型进行训练,从而分类出候选指称是黄金指称的概率Smen

⒊候选谓词识别

经过特殊分词(找到问句和谓词中所有具有意义的词/词组),利用下式来判断谓词是否能够问句中谓词模式的语义:

其中wpi表示谓词中第i个词,wqi表示问题中第i个词,lpi表示wpi的长度。即对谓词中的每个词,找到问题中语义最相近的词,并乘上谓词的某个词的长度,最后求平均。

对于该公式,又做了改进:

这里是反过来,对问题中每个词,找到谓词中语义最相近的词(aveq表示所有问题中所有词的平均词向量,这里代表无意义的停用词的词向量),并乘上问题的某个词的长度,最后求平均。

⒋深度CNN结构

深度CNN用来重排序实体-谓词对与问题的相似程度,从而进行精确筛选。如下图1所示是deep-CNN的结构。该模型用来计算谓词和问句(去掉实体指称)的语义相似度。模型中采用了两个卷积层,并利用了残差网络进行连接。经过最大池化后,问题的向量和谓词的向量进行按位乘后,再通过一个使用了dropout的全连接层(MLP),来得到最终的相似度。处理问题和谓词的卷积层的参数是共享的。每一个卷积层,卷积宽度不同(256个宽度为1的核、512个宽度为2的核、256个宽度为3的核),并对不同核得到的结果进行拼接。另外,相邻的卷积层之间有残差网络连接。

最终得到基于deep-CNN的相似度SCNN。将所有的得分相加,即得到一个实体-谓词对于问题的相似度的最终得分:Sfinal =Smen + Sf + SCNN * 2。最大得分的实体-谓词对应的宾语就是最终答案。

实验

实验用的数据集是NLPCC 2017的比赛用数据集,有知识库和问题-答案对,用于训练。知识图谱中有43M的SPO三元组,有14609+9870个NLPCC 2016的问题-答案对来训练。在训练CNN时,由于正负例极度不平衡,所以采用动态负采样算法来筛选负例,选择一个样本的概率如下式所示:

其中,rankepi表示上一次迭代后(每次训练都会取出一个样本,那么排名会发生变化),一个实体-谓词对的排名,排名越大,说明这个实体-谓词对与问题的相似度越低。这就是一个简单的生成对抗模型(generative adversarialmechanism),因为rank越大,说明这个实体-谓词对越不靠谱,也就是对于模型的分类效果来说提升很小(太容易区分了),所以选中作为负样本的概率越小。这样就有了一个对抗模型的思想在里面。

如图3所示,为模型的实体链接结果,效果与之前的工作差不多(99.04%)。

图3 实体链接模型性能对比

如图4所示,是候选实体-谓词对的识别情况。由图可见,效果比baseline的系统要好。

图4 候选实体-谓词对的识别情况

如图5所示,是系统的问答效果,可见集合了所有特征的系统效果最好。

图5 系统的问答效果

如图6所示,是本文系统与其他基线系统的性能对比。可见本文系统效果最佳。

图6 各系统在NLPCC KBQA比赛结果对比

总结

本文提出了一种复杂的中文KBQA模型,包含了基于特征的、GBDT分类的实体链接,基于词向量的候选谓词初筛,以及基于deep-CNN的实体-谓词重排序,最终得到了可以回答问题的实体-谓词对。对于CNN训练中的正负例不平衡问题,也提出了具有对抗生成思想的负采样算法。最终,文章提出的系统在NLPCC 2017比赛中获得第一名。文章中的许多方法都是在工程上易于实现的,可以借鉴到实际应用中。未来可以考虑将三元组的宾语的信息一并结合进来,用于实体-谓词的筛选。

论文笔记整理:花云程,东南大学博士,研究方向为知识图谱问答、自然语言处理。



OpenKG.CN

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

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

论文浅尝 | 面向单关系事实问题的中文问答模型相关推荐

  1. 论文浅尝 | 面向 cQA 的跨语言问题检索方法

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答. 来源:WWW2019 链接:https://dl.acm.org/citation.cfm?doid=3308558.3313502 本文 ...

  2. 论文浅尝 | 面向多语言语义解析的神经网络框架

    论文笔记整理:杜昕昱,东南大学本科生. 来源:ACL2017 链接:https://aclweb.org/anthology/P17-2007 论文训练了一个多语言模型,将现有的Seq2Tree模型扩 ...

  3. 论文浅尝 | 面向简单知识库问答的模式修正强化策略

    链接:http://aclweb.org/anthology/C18-1277 知识库问答研究旨在利用结构化事实回答自然语言问题,在网络中,简单问题占据了相当大的比例.本文提出在完成模式抽取和实体链接 ...

  4. 论文浅尝 | 面向自动分类归纳的端到端强化学习

    动机 术语层次在许多自然语言处理任务中扮演着重要角色.然而,大部分现有的术语层次是人工构建的,其覆盖范围有限,或者某些领域上不可用.因此,最近的工作集中在自动化的术语层次归纳(automatictax ...

  5. 论文浅尝 | 基于复杂查询图编码的知识库问答

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答. 来源:EMNLP 2018 链接:https://www.aclweb.org/anthology/D18-1242 文章表示,复杂问答所 ...

  6. 论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型

    笔记整理: 谭亦鸣,东南大学博士生 来源:NAACL'21 链接:https://aclanthology.org/2021.naacl-main.153.pdf 论文提出了一种新的知识图谱问答数据集 ...

  7. 论文浅尝 - ACL2020 | 用于关系三元组抽取的级联二进制标记框架

    论文笔记整理:王中昊,天津大学. 来源:ACL2020 链接:https://arxiv.org/pdf/1909.03227.pdf 摘要 从非结构化文本中提取关系三元组是构建大规模知识图的关键.然 ...

  8. 论文浅尝 | 面向跨语言实体对齐的知识图谱与实体描述协同嵌入方法

    来源: IJCAI2018 链接: https://www.ijcai.org/proceedings/2018/0556.pdf 动机 近年来,随着多语言知识图谱嵌入(Multilingual KG ...

  9. 论文浅尝 | 面向视觉常识推理的层次语义增强方向图网络

    论文笔记整理:刘克欣,天津大学硕士 链接:https://dl.acm.org/doi/abs/10.1145/3475731.3484957 动机 视觉常识推理(VCR)任务旨在促进认知水平相关推理 ...

最新文章

  1. 微软小动作气炸用户:装Win10系统,现在得被迫注册账号,脱机安装选项被悄悄删除...
  2. vscode如何用浏览器预览运行html文件
  3. VS2015占内存大吗?_手机是6GB运行内存,何为后台却显示3G内存?
  4. 【算法】算法秋招个人总结
  5. elementui 搭建布局页面路由_【项目实践】使用Vue.js和ElementUI快速实现后台管理系统的界面布局...
  6. C++ 使用 TinyXml 解析 XML 文件
  7. MQTT服务器搭建和测试步骤及遇见的问题
  8. python读取数据流_IOError:读取图像fi时数据流中断
  9. 深度报文检测 linux,DPI-深度报文检测(进阶)
  10. 如何学好游戏编程 一
  11. 51单片机开发板lcd1602不显示字符问题
  12. 论剑江湖服务器维护,楚留香629维护内容介绍 名剑天下论剑洗心见武深夜酒馆_游侠手游...
  13. Bitmap的加载和Cache
  14. 如何在阿里云物联网平台新增一个设备
  15. Bugku - 代码审计 | md5函数
  16. 5.cuBLAS开发指南中文版--cuBLAS中的Create()和Destroy()
  17. hook failed (add --no-verify to bypass)
  18. mysql数据库是的缩写_MYSQL数据库命名与其设计规范
  19. C#的多线程机制初探 (引自 http://www.daima.com.cn/info/234.htm ,在此感谢原作者)
  20. shell 对字符串去重并排序

热门文章

  1. 简单的脚本控制面试题
  2. 学习Duwamish7的MSDN说明及相关技术策略
  3. 在X32与X64下,每种数据类型占用的字节数
  4. java 对象 序列化 文件中_如何将一个java对象序列化到文件里
  5. 51单片机——SPI
  6. python爬虫爬图片教程_python爬虫实战之爬取京东商城实例教程
  7. mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息
  8. project ‘org.springframework.boot:spring-boot-starter-parent:2.1.4.RELEASE‘ not found
  9. IDEA上Debug调试全流程
  10. linux 6.2 期末考试题,redhat6.2-linux考试试卷(带部分答案)