0


医疗知识图谱问答系统(python neo4j)

这是中科院软件所刘焕勇老师在github上的一个开源项目

地址:http:// https://github.com/liuhuanyong/QASystemOnMedicalKG

本项目构建了以疾病为中心的医疗知识图谱,实体规模4.4万,实体关系规模30万。并基于此,搭建起了一个可以回答18类问题的自动问答小系统。
本项目以neo4j作为存储,并基于传统规则的方式完成了知识问答,并最终以cypher查询语句作为问答搜索sql,支持了问答服务。

基于知识图谱的问答框架

基于知识图谱的问答系统应用知识

  1. 本体构建
  2. RDF 生成
  3. 问句解析
  4. SPARQL 查询
  5. 答案生成

本项目的问答系统完全基于规则匹配实现,根据问句中的关键词进行匹配,对匹配到的关键词分类问句,然后使用cypher的match去匹配查找neo4j,根据返回数据组装问句回答,最后返回结果。

医药领域知识图谱规模

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

支持问答的类型

问句类型中文含义问句举例disease_symptom疾病症状乳腺癌的症状有哪些?symptom_disease已知症状找可能疾病最近老流鼻涕怎么办?disease_cause疾病病因为什么有的人会失眠?disease_acompany疾病的并发症失眠有哪些并发症?disease_not_food疾病需要忌口的食物失眠的人不要吃啥?disease_do_food疾病建议吃什么食物耳鸣了吃点啥?food_not_disease什么病最好不要吃某事物哪些人最好不好吃蜂蜜?food_do_disease食物对什么病有好处鹅肉有什么好处?disease_drug啥病要吃啥药肝病要吃啥药?drug_disease药品能治啥病板蓝根颗粒能治啥病?disease_check疾病需要做什么检查脑膜炎怎么才能查出来?check_disease 检查能查什么病全血细胞计数能查出啥来?disease_prevent预防措施怎样才能预防肾虚?disease_lasttime治疗周期感冒要多久才能好?disease_cureway治疗方式高血压要怎么治?disease_cureprob治愈概率白血病能治好吗?disease_easyget疾病易感人群什么人容易得高血压?disease_desc疾病描述糖尿病
问答样例


项目实现

1.项目运行配置要求:要求配置neo4j数据库及相应的python依赖包

根据neo4j 安装时的端口、账户、密码,修改相应文件:answer_search.py 和build_medicalgraph.py 、neo4j

安装neo4j(neo4j 依赖java jdk 1.8版本以上),见文章:http://t.csdn.cn/UAu3Q

安装好neo4j后,登录网站http://localhost:7474/browser/

查看端口号和用户名

并修改相应python文件

** 2.知识图谱数据导入:python build_medicalgraph.py,导入的数据较多,需要几个小时。**

数据导入这一步会出现一些问题,要注意编码格式,包的正确安装等

安装 py2neo

直接使用pip install py2neo命令会默认安装最新版,可能使用会出现问题

推荐安装4.3.0版本:pip install py2neo==4.3.0 -i https://pypi.douban.com/simple

导入成功后即可查看

** 3、启动问答:python chat_graph.py**

安装

pyahocorasick
pip3 install pyahocorasick -i https://pypi.tuna.tsinghua.edu.cn/simple/


本文转载自: https://blog.csdn.net/Minor0218/article/details/126431184
版权归原作者 Minor0218 所有, 如有侵权,请联系我们删除。

“医疗知识图谱问答系统(python neo4j)”的评论:

还没有评论