QASystemOnMedicalKG/README.md
2018-10-05 17:39:36 +08:00

6.4 KiB
Raw Blame History

QABasedOnMedicaKnowledgeGraph

self-implement of disease centered Medical graph from zero to full and sever as question answering base. 从无到有搭建一个以疾病为中心的一定规模医药领域知识图谱,并以该知识图谱完成自动问答与分析服务。

项目介绍

知识图谱是目前自然语言处理的一个热门方向本人参加了ccks2018会议并得到一些收获可以查看我的ccks2018参会总结(https://github.com/liuhuanyong/CCKS2018Summary )。
与知识图谱相关的另一种形态,即事理图谱,本人在这方面也尝试性地积累了一些工作,可参考:(https://github.com/liuhuanyong/ComplexEventExtraction )
关于知识图谱概念性的介绍就不在此赘述。目前知识图谱在各个领域全面开花如教育、医疗、司法、金融等。本项目立足医药领域以垂直型医药网站为数据来源以疾病为核心构建起一个包含7类规模为4.4万的知识实体11类规模约30万实体关系的知识图谱。 本项目将包括以下两部分的内容:

  1. 基于垂直网站数据的医药知识图谱构建
  2. 基于医药知识图谱的自动问答

项目最终效果

话不多少,直接上图。以下两图是实际问答运行过程中的截图: image

image

项目运行方式:

1、配置要求要求配置neo4j数据库及相应的python依赖包。neo4j数据库用户名密码记住并修改相应文件。
2、知识图谱数据导入python build_medicalgraph.py导入的数据较多估计需要几个小时。
3、启动问答python chat_graph.py

以下介绍详细方案

一、医疗知识图谱构建

1.1 业务驱动的知识图谱构建框架

image

1.2 脚本目录

prepare_data/datasoider.py网络资讯采集脚本
prepare_data/datasoider.py网络资讯采集脚本
prepare_data/max_cut.py基于词典的最大向前/向后切分脚本
build_medicalgraph.py知识图谱入库脚本   

1.3 医药领域知识图谱规模

1.3.1 neo4j图数据库存储规模 image

1.3.2 知识图谱实体类型

实体类型 中文含义 实体数量 举例
Check 诊断检查项目 3,353 支气管造影;关节镜检查
Department 医疗科目 54 整形美容科;烧伤科
Disease 疾病 8,807 血栓闭塞性脉管炎;胸降主动脉动脉瘤
Drug 药品 3,828 京万红痔疮膏;布林佐胺滴眼液
Food 食物 4,870 番茄冲菜牛肉丸汤;竹笋炖羊肉
Producer 在售药品 17,201 通药制药青霉素V钾片;青阳醋酸地塞米松片
Symptom 疾病症状 5,998 乳腺组织肥厚;脑实质深部出血
Total 总计 44,111 约4.4万实体量级

1.3.3 知识图谱实体关系类型

实体关系类型 中文含义 关系数量 举例
belongs_to 属于 8,844 <妇科,属于,妇产科>
common_drug 疾病常用药品 14,649 <阳强,常用,甲磺酸酚妥拉明分散片>
do_eat 疾病宜吃食物 22,238 <胸椎骨折,宜吃,黑鱼>
drugs_of 药品在售药品 17,315 <青霉素V钾片,在售,通药制药青霉素V钾片>
need_check 疾病所需检查 39,422 <单侧肺气肿,所需检查,支气管造影>
no_eat 疾病忌吃食物 22,247 <唇病,忌吃,杏仁>
recommand_drug 疾病推荐药品 59,467 <混合痔,推荐用药,京万红痔疮膏>
recommand_eat 疾病推荐食谱 40,221 <鞘膜积液,推荐食谱,番茄冲菜牛肉丸汤>
has_symptom 疾病症状 5,998 <早期乳腺癌,疾病症状,乳腺组织肥厚>
acompany_with 疾病并发疾病 12,029 <下肢交通静脉瓣膜关闭不全,并发疾病,血栓闭塞性脉管炎>
Total 总计 294,149 约30万关系量级

1.3.4 知识图谱属性类型

属性类型 中文含义 举例
name 疾病名称 喘息样支气管炎
desc 疾病简介 又称哮喘性支气管炎...
cause 疾病病因 常见的有合胞病毒等...
prevent 预防措施 注意家族与患儿自身过敏史...
cure_lasttime 治疗周期 6-12个月
cure_way 治疗方式 "药物治疗","支持性治疗"
cured_prob 治愈概率 95%
easy_get 疾病易感人群 无特定的人群

二、基于医疗知识图谱的自动问答

2.1 技术架构

image

2.2 脚本结构

question_classifier.py问句类型分类脚本
question_parser.py问句解析脚本
chatbot_graph.py问答程序脚本

2.3 支持问答类型

总结

、本项目完成了从无到有以垂直网站为数据来源构建起以疾病为中心的医疗知识图谱实体规模4.4万实体关系规模30万。并基于此搭建起了一个可以回答18类问题的自动问答小系统,总共耗时3天。其中数据采集与整理1天知识图谱构建与入库0.5天问答系统组件1.5天。总的来说,还是比较快速。
2、本项目以业务驱动构建医疗知识图谱知识schema设计基于所采集的结构化数据生成(对网页结构化数据进行xpath解析)。
3、本项目以neo4j作为存储并基于传统规则的方式完成了知识问答并最终以cypher查询语句作为问答搜索sql支持了问答服务。
4、本项目可以快速部署数据已经放在data/medical.json当中本项目的数据如侵犯相关单位权益请联系我删除。本数据请勿商用以免引起不必要的纠纷。在本项目中的部署上可以遵循项目运行步骤完成数据库搭建并提供搜索服务。
5、本项目还有不足关于疾病的起因、预防等实际返回的是一大段文字这里其实可以引入事件抽取的概念进一步将原因结构化表示出来。这个可以后面进行尝试。

If any question about the project or me ,see https://liuhuanyong.github.io/