OpenKG地址:http://openkg.cn/dataset/medicalgraph
开放许可协议:CC BY-SA 4.0 (署名相似共享)
贡献者:东南大学(王之畅,罗卓彦,朱启鹏,朱浩嘉,王湘源,吴天星)
面向家庭常见疾病的知识图谱涵盖了常见医疗相关信息,包括常见疾病、症状、治疗手段、常用药物、推荐食谱等方面的内容。在目前新冠疫情流行的大环境下,以医疗知识图谱为基础的问答系统旨在让大众足不出户即可对疾病的进行初步判断、用药以改善病情。这样对平民百姓来说缩短了看病的时间,对于医院来说减轻了医疗负担,最重要的是对于整个社会可以降低疫情传播的风险。
构造此图谱需要首先需要多种数据途径,第一种是专业医疗网站的相关数据,此处选择寻医百科(见图1)这个网站,作为图谱的数据基础。
图2 常见疾病基本信息
如图2所示,这个网站具有较好的结构化、半结构化信息,利于进行医疗信息的爬取,通过讨论,提前设计好本体,并由本体指导网页信息爬取。之后,为了更好的丰富图谱的内容,还选择了另一个医疗领域数据集:CHIP-2020-2中文医学文本实体关系抽取数据集。该数据集包含儿科训练语料和百种常见疾病训练语料,儿科训练语料来源于518种儿科疾病,百种常见疾病训练语料来源于109种常见疾病。近7.5万三元组数据,2.8万疾病语句和53种定义好的class,将对此数据集进行关系抽取,并且将抽取得到的三元组通过知识融合的方式增加到原先知识图谱中,最终基于此知识图谱形成医疗问答系统——家庭常见疾病医疗小助手。
总结以上内容,该知识图谱以寻医百科为数据基础,以疾病节点为中心,图谱共计包含62196个疾病、药品、食谱等实体和543673个相关三元组。图谱借助导入neo4j数据库形成图形查询界面,以帮助用户理解和挖掘疾病信息以及相关内容,也有助于进一步支持相关应用。图3展示了用户使用该知识图谱寻找常见疾病如感冒相关信息时的一个可视化界面。
图3 感冒节点的基本信息以及部分三元组
2、构建方法
该图谱的构建方法,主要分为以下几个部分:数据爬取,数据预处理,本体构建,知识图谱实例层构建,命名实体识别,关系抽取,知识融合。基于此知识图谱构建相应的模板,最终形成问答系统。下面将逐一介绍我们工作中采用的方法:
数据爬取中利用request爬取了11000个网页页面,通过书写相应的xpath语句解析并抽取提前设想好的本体中所需的对应实例的内容,在数据预处理时通过书写相关的正则表达式语句来进行特殊字符、无用字符的去除,获取最终信息,并将数据构造成字典信息,为之后形成知识图谱作铺垫。
本体构建中,采用protégé这个工具来构建,由于爬取的实体较多,无法很好的全部导入,考虑到protégé工具重在本体构建,所以将部分实体保存成csv文件,最终在protégé中书写相应的规则导入并形成本体,图4为该图谱本体的可视化:
图4 知识图谱本体可视化
图5 GlobalPointer模型框架
在知识对齐与更新中,先进行schema的筛选,先观察数据以知晓哪一些property是可以对齐的。筛选出其中可以对齐的property,如图6所示
图6 对齐的模式
之后便是进行知识的对齐,最基本的方法就是使用Jaccard相似度,因此,我们统计了不同Jaccard相似度阈值下的对齐实例的数量,当选择0.6到0.8之间的阈值时,这种方法是可行的。但这样的问题也很显著,很难控制选取一个比较好的阈值。因为在医学领域中很多对应相同实体的标签往往Jaccard相似度没有那么高,而反过来两个label相似的instance未必对应同一个病,所以我们基于[4]提出了一种半监督新的对齐方式,我们称其为set aligned,首先做一个基本的假设,标签完全一致的instance对应同一实体,先把两个数据集中label相同的instance对齐,放入same-entity。对于任意两个三元组,如果已经object已经对齐且两个三元组属于同已经对齐的property,给他们的subject的组合投一票。遍历所有至少有一票的instance对,如果两个instance的label大于MIN-JAC(基于Jaccard相似度的固定阈值),则接受这一对齐,如果对于某个instance,已经与另一个instance对齐,则对比其Jaccard相似度,选择Jaccard相似度大的那一对。也使用用同样方法对subject进行对齐,图7为具体操作过程。
图7 set align算法流程图
在问答系统设计方面,采取了模板匹配的手段。通过构造特定模板,进行问句意图表的设计,实体识别,实体链接,问句意图识别与槽位填充,意图实体转换cypher查询,答句拼接构造出问答系统,最终利用NoneBot框架将整个问答系统部署到腾讯QQ端(添加QQ号1941962388可进行测试),图8为问答系统整体框架:
图8 问答框架描述
3、成果总结
面向家庭常见疾病知识图谱由两个不同源的数据集构成,分别采用不同的方式进行,首先是从寻医百科中获取基础数据,然后通过事实抽取在另一数据集上获得数据,最终提出新的知识对齐方式将两者进行融合,并基于此知识图谱,编写相应模板,进行问答系统的构建,最终部署至腾讯QQ端,在测试中取得了不错的成果。该工作有三个主要贡献:(1)探索了特定领域的知识图谱构建的过程,并选取了其他的数据集进行事实抽取进而采用了一种新的知识对齐机制(2)构建了一个具有高数据质量的家庭常见疾病知识图谱。可以清楚地显示一些疾病的本身信息,及其相关的信息如常见药物,症状,推荐食谱,治疗手段等。(3)基于此图谱构建了一个初步的“家庭常见疾病医疗问答系统”,并部署上线,提供常见疾病咨询服务。
在未来的进一步版本更新过程中,我们将进一步丰富知识图谱的内容。
4、参考文献
OpenKG
OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。
点击阅读原文,进入 OpenKG 网站。