基于知识图谱的问答系统入门—NLPCC2016KBQA数据集

2019 年 1 月 8 日 PaperWeekly


作者丨郭雅志

学校丨北京化工大学

研究方向丨NLP、知识图谱、对话/问答系统


本人认为学习一样东西,直接上手跑实验是最有效提升的方法之一。看了那么多的理论介绍文章,抽象的说辞,最后还是似懂非懂。所以,直接上手数据集跑实验,与理论结合,能有更深刻的了解。同时也记录下学习 KBQA 的过程,也希望对同入门的同学有些帮助。


引言


本人最近在做 KBQA 相关的的工作,有些大致的了解和想法后希望能够在实验中学习更多。 


目前研究的 KBQA 暂时专注在简单知识库问答上:即根据一个问题,抽出一条三元组,生成 Sparql 语句,进而进行知识图谱查询返回答案。 


最终选择了 NLPCC2016KBQA 数据集,基线模型采用 BERT。


数据集介绍


NLPCC 全称自然语言处理与中文计算会议(The Conference on Natural Language Processing and Chinese Computing),它是由中国计算机学会(CCF)主办的 CCF 中文信息技术专业委员会年度学术会议,专注于自然语言处理及中文计算领域的学术和应用创新。 


此次使用的数据集来自 NLPCC ICCPOL 2016 KBQA 任务集,其包含 14,609 个问答对的训练集和包含 9870 个问答对的测试集。并提供一个知识库,包含 6,502,738 个实体、 587,875 个属性以及 43,063,796 个三元组。


知识库文件中每行存储一个事实(fact),即三元组 ( 实体、属性、属性值) 。各文件统计如下:



知识库样例如下所示:



原数据中本只有问答对(question-answer),并无标注三元组(triple),本人所用问答对数据来自该比赛第一名的预处理:


http://github.com/huangxiangzhou/NLPCC2016KBQA


构造 Triple 的方法为从知识库中反向查找答案,根据问题过滤实体,最终筛选得到,也会存在少量噪音数据。该 Triple 之后用于构建实体识别和属性选择等任务的数据集。


问答对样例如下所示:



数据集本身存在的问题


知识库实体间的歧义


以“贝拉克·奥巴马”为例,涉及该实体的问答对如下:



在知识库中查询包含该实体的三元组,结果如下(部分):



首先,知识库中存在“贝拉克·奥巴马”的多条实体,有可能是多数据来源的融合或其他原因,从而并不能完全保证信息的对齐。我们查看“妻子”这一属性,发现有的是“米歇尔·拉沃恩·奥巴马”有的是“米歇尔·奥巴马”,而我们问答对中给出的答案是“米歇尔·奥巴马”。因此当我们的模型检索到正确三元组时:



虽然在实体和属性都映射正确的情况下,最终答案仍可能被判定为错误。


问题中的实体歧义


以“博士来拜”为例,涉及该实体的问答对如下:



在知识库中查询包含该实体的三元组,结果如下(部分):



问句中的问题是:“博士来拜是什么年代的作品?“,涉及到”年代“这个属性,而这幅作品被不同时期的很多人创作过,我们无法从当前问句下得到要询问的是哪位艺术家的创作年代。


因此该问题的涉及的实体具有歧义性,同样的,当模型检索到我们认为的正确实体和正确属性后,依然有可能会被判定为错误答案。


在知识库中相关实体三元组数量过多的情况下,对检索模型的效果、效率也是个挑战。


在具有 4300W 条三元组的知识库中,同一个实体会检索出大量(几十、几百条)的相关三元组,而且在存在上述两个歧义性问题的情况下,识别的效果和效率都是很大的问题。


以上的两个问题在实体识别实验部分和属性抽取部分的影响较小,但在实体链接知识库检索最终答案三元组的部分会有较大的影响。


数据集预处理及实验结果


清洗训练数据、测试数据、知识库


过滤属性,去除‘-’,‘•’,空格等噪音符号,同时把每一行 lower() 转成小写。



分别保存为:train_clean.csv, test_clean.csv, nlpcc-iccpol-2016-clean.kbqa.kb。


构造开发集


原始训练集数量为 14,609,Shuffle 后抽出 2609 作为开发集,其余作为训练集,如下。



分别保存为:train_clean.csv, dev_clean.csv, test_clean.csv。


构造实体识别的训练集、开发集、测试集


构造实体识别数据集需要根据三元组-Enitity 反向标注问题,给 Question 打标签。由于我们希望从单问题中抽取单个实体,并未采用 BIO 的标注,直接采用 0/1 标注法,即 0 表示非实体,1 表示实体。


同时需要确保其实体完整出现在问题中,对于未出现的样例,我们直接删除忽略。错误样例如下所示:



过滤后的数据集信息如下:



过滤后的数据集样例如下所示:



分别保存为:entity_train.csv, entity_dev.csv, entity_test.csv。


基于 BERT+BiLSTM+CRF 模型的实验结果如下所示,其中 accuracy 是从 9556 个问句识别出完全匹配实体的准确率。



未完全匹配的实体样例如下,部分是识别错误,部分是同义词,部分是噪音问题。



构造属性抽取的训练集、开发集、测试集 


1. 构造测试集的整体属性集合,提取+去重,获得 4373 个属性 RelationList;


2. 一个 sample 由“问题+属性+Label”构成,原始数据中的属性值置为 1;


3. 从 RelationList 中随机抽取五个属性作为 Negative Samples。


数据集大小如下:



数据集 samples 如下:



分别保存为:relation_train.csv, relation_dev.csv, relation_test.csv。


之前构造的数据进行训练,在这个测试集上测试的结果。基于BERT的训练结果如下所示,其中 accuracy 是真正的准确率。



模型没有识别出的测试样例如下,可以看出缺少深度语义匹配的能力。



结束语


之后也会把相关代码和预处理数据开源到我的 Github 上:


https://github.com/supergyz




点击以下标题查看更多往期内容: 





#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。


▽ 点击 | 阅读原文 | 获取最新论文推荐

登录查看更多
70

相关内容

CCF自然语言处理与中文计算国际会议(NLPCC)是中国计算机联合会中文信息技术委员会(CCF-TCCI)的年会。NLPCC是一个在自然语言处理(NLP)和中文计算(CC)领域领先的国际会议。它是学术界、工业界和政府的研究人员和实践者分享他们的想法、研究成果和经验,并促进他们在该领域的研究和技术创新的主要论坛。官网链接:http://tcci.ccf.org.cn/conference/2019/
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
【阿里技术论文】AliMe KBQA:阿里小蜜中的结构化知识问答
专知会员服务
82+阅读 · 2019年12月14日
论文浅尝 | XQA:一个跨语言开放域问答数据集
开放知识图谱
25+阅读 · 2019年9月11日
论文浅尝 | 基于知识库的神经网络问题生成方法
开放知识图谱
19+阅读 · 2019年6月21日
论文浅尝 | 面向单关系事实问题的中文问答模型
开放知识图谱
28+阅读 · 2019年2月11日
论文浅尝 | 基于知识图谱子图匹配以回答自然语言问题
开放知识图谱
25+阅读 · 2018年6月26日
论文浅尝 | 基于知识图谱的子图匹配回答自然语言问题
开放知识图谱
27+阅读 · 2018年5月17日
肖仰华 | 基于知识图谱的问答系统
开放知识图谱
28+阅读 · 2017年9月18日
揭开知识库问答KB-QA的面纱3·向量建模篇
PaperWeekly
8+阅读 · 2017年8月23日
KBQA从入门到放弃—入门篇 | 每周话题精选 #08
PaperWeekly
14+阅读 · 2017年8月8日
揭开知识库问答KB-QA的面纱1·简介篇
PaperWeekly
6+阅读 · 2017年8月3日
Arxiv
4+阅读 · 2018年5月14日
VIP会员
相关资讯
论文浅尝 | XQA:一个跨语言开放域问答数据集
开放知识图谱
25+阅读 · 2019年9月11日
论文浅尝 | 基于知识库的神经网络问题生成方法
开放知识图谱
19+阅读 · 2019年6月21日
论文浅尝 | 面向单关系事实问题的中文问答模型
开放知识图谱
28+阅读 · 2019年2月11日
论文浅尝 | 基于知识图谱子图匹配以回答自然语言问题
开放知识图谱
25+阅读 · 2018年6月26日
论文浅尝 | 基于知识图谱的子图匹配回答自然语言问题
开放知识图谱
27+阅读 · 2018年5月17日
肖仰华 | 基于知识图谱的问答系统
开放知识图谱
28+阅读 · 2017年9月18日
揭开知识库问答KB-QA的面纱3·向量建模篇
PaperWeekly
8+阅读 · 2017年8月23日
KBQA从入门到放弃—入门篇 | 每周话题精选 #08
PaperWeekly
14+阅读 · 2017年8月8日
揭开知识库问答KB-QA的面纱1·简介篇
PaperWeekly
6+阅读 · 2017年8月3日
Top
微信扫码咨询专知VIP会员