基于知识图谱的问答系统入门之

您所在的位置:网站首页 奥巴马妻子全名 基于知识图谱的问答系统入门之

基于知识图谱的问答系统入门之

2023-12-13 18:08| 来源: 网络整理| 查看: 265

本人认为学习一样东西,直接上手跑实验是最有效提升的方法之一。 看了那么多的理论介绍文章,抽象的说辞,最后还是似懂非懂。 所以,直接上手数据集跑实验,与理论结合,能有更深刻的了解。 同时也记录下学习KBQA的过程,也希望对同入门的同学有些帮助。 目录: 1、引言 2、数据集介绍 3、数据集本身存在的问题 4、数据集预处理及实验结果 5、KBQA整体流程 6、结束语 引言

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

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

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

数据集介绍

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

此次使用的数据集来自NLPCC ICCPOL 2016 KBQA 任务集,其包含 14 609 个问答对的训练集和包含 9 870 个问答对的测试集。 并提供一个知识库,包含 6 502 738 个实体、 587 875 个属性以及 43 063 796 个 三元组。知识库文件中每行存储一个事实( fact) ,即三元组 ( 实体、属性、属性值) 。各文件统计如下:

训练集:14609 开发集:9870 知识库:43063796

知识库样例如下所示:

"希望之星"英语风采大赛|||中文名|||“希望之星”英语风采大赛 "希望之星"英语风采大赛|||主办方|||中央电视台科教节目中心 "希望之星"英语风采大赛|||别名|||"希望之星"英语风采大赛 "希望之星"英语风采大赛|||外文名|||Star of Outlook English Talent Competition "希望之星"英语风采大赛|||开始时间|||1998 "希望之星"英语风采大赛|||比赛形式|||全国选拔 "希望之星"英语风采大赛|||节目类型|||英语比赛

原数据中本只有问答对(question-answer),并无标注三元组(triple),本人所用问答对数据来自该比赛第一名的预处理https://github.com/huangxiangzhou/NLPCC2016KBQA。构造Triple的方法为从知识库中反向查找答案,根据问题过滤实体,最终筛选得到,也会存在少量噪音数据。该Triple之后用于构建实体识别和属性选择等任务的数据集。

问答对样例如下所示:

《机械设计基础》这本书的作者是谁? 机械设计基础 ||| 作者 ||| 杨可桢,程光蕴,李仲生 杨可桢,程光蕴,李仲生 ================================================== 《高等数学》是哪个出版社出版的? 高等数学 ||| 出版社 ||| 武汉大学出版社 武汉大学出版社 ================================================== 《线性代数》这本书的出版时间是什么? 线性代数 ||| 出版时间 ||| 2013-12-30 2013-12-30 ================================================== 数据集本身存在的问题 知识库实体间的歧义

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

谁是贝拉克·奥巴马的妻子? 贝拉克·奥巴马 ||| 妻子 ||| 米歇尔·奥巴马 米歇尔·奥巴马

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

贝拉克·奥巴马(美国现任总统) ||| 别名 ||| 贝拉克·奥巴马 贝拉克·奥巴马(美国现任总统) ||| 姓名 ||| 贝拉克·侯赛因·奥巴马 贝拉克·奥巴马(美国现任总统) ||| 妻子 ||| 米歇尔·奥巴马 ...... 贝拉克·奥巴马 ||| 主要成就 ||| 1996年伊利诺伊州参议员 美国第56届、57届总统 2009年诺贝尔和平奖获得者 时代周刊年度风云人物2008、2011 任期内清除本·拉登 贝拉克·奥巴马 ||| 代表作品 ||| 《我相信变革》《我父亲的梦想》《无畏的希望》 贝拉克·奥巴马 ||| 妻子 ||| 米歇尔·拉沃恩·奥巴马 ...... 贝拉克·奥巴马(美国第44任总统) ||| 血型 ||| ab 贝拉克·奥巴马(美国第44任总统) ||| 学院 ||| 西方学院 贝拉克·奥巴马(美国第44任总统) ||| 妻子 ||| 米歇尔·拉沃恩·奥巴马

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

贝拉克·奥巴马(美国第44任总统) ||| 妻子 ||| 米歇尔·拉沃恩·奥巴马

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

问题中的实体歧义

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

博士来拜是什么年代的作品? 博士来拜 ||| 年代 ||| 1461年 1461年

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

博士来拜(曼特尼亚画作) ||| 别名 ||| 博士来拜 博士来拜(曼特尼亚画作) ||| 中文名 ||| 博士来拜 博士来拜(曼特尼亚画作) ||| 类别 ||| 油画,壁画 博士来拜(曼特尼亚画作) ||| 年代 ||| 1461年 博士来拜(曼特尼亚画作) ||| 作者 ||| 曼特尼亚 ...... 博士来拜(维登画作) ||| 别名 ||| 博士来拜 博士来拜(维登画作) ||| 中文名 ||| 博士来拜 博士来拜(维登画作) ||| 类别 ||| 油画 博士来拜(维登画作) ||| 年代 ||| 1455年 博士来拜(维登画作) ||| 作者 ||| 维登 博士来拜(维登画作) ||| 属地 ||| 慕尼黑画廊藏 ...... 博士来拜(达·芬奇画作) ||| 别名 ||| 博士来拜 博士来拜(达·芬奇画作) ||| 中文名 ||| 博士来拜 博士来拜(达·芬奇画作) ||| 类别 ||| 油画 博士来拜(达·芬奇画作) ||| 年代 ||| 1481-1482 博士来拜(达·芬奇画作) ||| 作者 ||| 达芬奇 博士来拜(达·芬奇画作) ||| 现藏 ||| 佛罗伦萨乌菲兹美术馆 博士来拜(达·芬奇画作) ||| 规格 ||| 246 x 243 厘米

问句中的问题是:“博士来拜是什么年代的作品?“,涉及到”年代“这个属性,而这幅作品被不同时期的很多人创作过,我们无法从当前问句下得到要询问的是哪位艺术家的创作年代。因此该问题的涉及的实体具有歧义性,同样的,当模型检索到我们认为的正确实体和正确属性后,依然有可能会被判定为错误答案。

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

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

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

数据集预处理及实验结果 清洗训练数据、测试数据、知识库

过滤属性,去除‘-’,‘•’,空格等噪音符号;

同时把每一行lower()转成小写。

上下车人次 -统计年度- 上下车人次统计年度 • 陆地 陆地 作 者 作者 i s b n isbn

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

构造开发集

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

训练集:12000 开发集:2609 测试集:9870

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

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

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

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

firefo os的许可证是什么啊? firefox os 我想知道明基tx501投影机的特性是什么啊? 明基 tx501 我想知道凤仪亭被叫做什么啊? 凤仪亭址 1984年萨拉冬季奥运会的参赛人员是多少啊? 1984年萨拉热窝冬季奥运会 飚王诱惑 sfd042(2gb)的宽度是多少毫米? 飚王诱惑 sfd042(2gb) 大安大王庙的古建筑群的相关记载出自哪里? 大安大王庙古建筑群 “佛吉尼亚”潜艇的控制装置是什么? “弗吉尼亚”潜艇

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

训练集:11883 开发集:2571 测试集:9556

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

长 1 城 1 x 1 1 1 0 1 的 0 输 0 入 0 接 0 口 0 是 0 什 0 么 0 ? 0

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

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

accuracy 0.96

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

【识别错误】动物地鸠属是属于什么目呀? 地鸠属 动物地鸠 【同义词】《鲁迅全集》这本书是什么时候出版的呀? 《鲁迅全集》 鲁迅全集 【同义词】我想知道永安镇机场叫什么名字? 永安镇 永安镇机场 【同义词】海尔kfrd-35gw/03me-s4空调是什么类型的? 海尔kfrd-35gw/03me-s4 海尔kfrd-35gw/03me-s4空调 【问题噪音】你知道辛夷花粥管治疗什么吗? 辛夷花粥 辛夷花粥管 构造属性抽取的训练集、开发集、测试集

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

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

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

数据集大小如下:

训练集:12000*(1+5) 开发集:2609*(1+5) 测试集:9870*(1+5)

数据集samples如下:

你知道计算机应用基础这本书的作者是谁吗? 作者 1 你知道计算机应用基础这本书的作者是谁吗? 儿女 0 你知道计算机应用基础这本书的作者是谁吗? 应用大小 0 你知道计算机应用基础这本书的作者是谁吗? 节日意义 0 你知道计算机应用基础这本书的作者是谁吗? 最低气压 0 你知道计算机应用基础这本书的作者是谁吗? 时长 0

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

基于BERT的训练结果如下所示

accuracy:0.95

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

0.01970141 0.9802986 304不锈钢管可以用于什么范围啊? 应用范围 1 0.9996922 0.00030779938 无尘玻璃打砂机是说什么内容的啊? 正文 1 0.99984515 0.00015485194 猩猩还有什么别的名字吗? 品种 1 0.9963929 0.003607082 河床竞技俱乐部组织了什么比赛啊? 联赛 1 0.99984705 0.00015298015 榉是什么类型的? 亚纲 1 0.9998454 0.00015459256 你知道香港有什么明星吗? 地域名人 1 0.99984837 0.0001516119 复兴歌是在什么时候流行的? 采用 1 0.9983584 0.0016415163 台北联营公车218路线是在什么地方开始的? 路线资讯 1 KBQA整体流程

完成实体识别模型和属性抽取模型后还需检索模型进行知识库检索,才算完整的KBQA。

KBQA流程: 1、输入问句 2、通过实体识别模型检测问句中的实体,得到mention 3、通过检索模型在知识库中检索mention,得到候选集(K个候选实体的所有三元组) 4、通过属性抽取模型在候选集中挑选最合适的属性,得到唯一三元组 5、输出答案 知识库建立索引

由于知识库数据量庞大,而且需要多次检索知识库,因此需要建立索引提高效率。

而同一实体的三元组分布在知识库中不同位置,因此需要对每个实体记录多个始末片段。

行号 三元组 22591789 联想s320 ||| 别名 ||| 联想s320 22591790 联想s320 ||| 中文名 ||| 联想s320 22591791 联想s320 ||| 上市时间 ||| 2008年 22591792 联想s320 ||| 网络频率 ||| gsm/gprs;900/1800mhz 22591793 联想s320 ||| 重量 ||| 100 克 22591794 联想s320 ||| wap上网 ||| 支持飞笺 41117728 联想s320 ||| 别名 ||| 联想s320 41117729 联想s320 ||| 产品类型 ||| 手机 41117730 联想s320 ||| 3g网络 ||| gsm 41117731 联想s320 ||| 电池容量 ||| 820mah 41117732 联想s320 ||| 存储卡 ||| 支持最大容量为4gb mirco sd存… 41117733 联想s320 ||| 暂无 ||| 暂无

最终通过遍历知识库,记录每个实体的名称、开始位置、结束位置,记录结果如下:

联想s320 22591789 22591794 41117728 41117733 英汉互译每日通 29607701 29607708 无水港 2092039 2092043 工程材料与成型技术 14055336 14055340 报信 26475602 26475606 《太空嬉哈族》 39914687 39914693

总数为650 5059,保存为index.csv

识别测试集得到mentions

通过训练好的实体识别模型,识别测试集中的问题,输出所有mentions,保存为testset_predict_answer.txt。数量为9870,如下所示

计算机应用基础 计算机应用基础 高等数学 戴维斯 高等数学 高等院校素质教育“十二五”规划教材 mc 检索知识库

将上述9870个mention,进行知识库检索,寻找符合以下规则的三元组:

(此方法待改进) if mention与索引中的实体完全匹配 选取该实体 elif mention in entity 选取该实体 else 选取字符串编辑距离最小的实体 return 实体相关的所有三元组 属性选择+输出答案

此时,每个测试集中的question都有检索得到的候选三元组

把question+relation放入之前训练好的属性抽取模型

对每个三元组打分,排序,输出topK个答案

整个KBQA完成!

结束语

以上内容为KBQA的整体流程,从这个过程中加深了对KBQA的理解和认识。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3