zhihao-chen / QASystemOnMedicalGraph

该项目是基于医疗领域知识图谱的问答系统。实现比较简单。
1.27k stars 333 forks source link

QASystemOnMedicalGraph

该项目是基于医疗领域知识图谱的问答系统。实现比较简单。

从无到有搭建一个医疗领域知识图谱(知识图谱规模较小),并基于此知识图谱搭建问答系统实现自动问题解析和回答。

本文参考:https://github.com/zhihao-chen/QASystemOnMedicalKG

项目效果

以下两张图是系统实际运行效果: 系统运行效果图

项目运行方式

运行环境:Python3 数据库:neo4j 预训练词向量:https://github.com/Embedding/Chinese-Word-Vectors或https://pan.baidu.com/s/14JP1gD7hcmsWdSpTvA3vKA

1、搭建知识图谱:python build_grapy.py。大概几个小时,耐心等待。 2、启动问答测试:python kbqa_test.py

医疗知识图谱

数据源:39健康网。包括15项信息,其中7类实体,约3.7万实体,21万实体关系。

本系统的知识图谱结构如下:

知识图谱结构

1.1 知识图谱实体类型

实体类型 中文含义 实体数量 举例
Disease 疾病 14336 乙肝,癫痫
Alias 别名 8877 小儿褐黄病综合征,广疮
Symptom 症状 5622 手足烦热,四肢麻木
Part 发病部位 82 手部,上肢
Department 所属科室 82 感染科,外科
Complication 并发症 3201 落枕,流感
Drug 药品 4625 西黄胶囊,司帕沙星
Total 总计 36825

1.2 知识图谱实体关系类型

实体关系类型 中文含义 关系数量 举例
ALIAS_IS 别名是 52578 癫痫 别名是 羊角风
HAS_SYMPTOM 症状有 62105 乙肝 症状有 肝功能异常
PART_IS 发病部位是 26660 乙肝 发病部位是 肝
DEPARTMENT_IS 所属科室是 33867 乙肝 所属科室是 传染科
HAS_COMPLICATION 并发症有 25183 乙肝 并发症有 肝硬化
HAS_DRUG 可用药品 35914 乙肝 可用药品 恩替卡韦分散片
TOTAL 总计 210018 约210018对关系

1.3 知识图谱疾病属性

疾病属性 中文含义 举例
age 发病人群 老人,小孩
insurance 是否医保 医保
infection 是否传染 有传染性
checklist 检查项目 肝功能检查
treatment 治疗方法 药物治疗、心理治疗
period 治愈周期 一周
rate 治愈率 0.1%
money 费用 1000-2000元

问题意图识别

基于特征词分类的方法来识别用户查询意图

意图类型 中文含义 举例
query_disease 查询疾病 肝肿大是什么病
query_symptom 查询症状 慢性乙肝有什么表现
query_cureway 查询治疗方案 肚子一直痛怎么办
query_checklist 查询检查项目 乙肝需要做哪些检查
query_department 查询所属科室 乙肝去哪个科
query_rate 查询治愈率 乙肝能治好吗
query_period 查询治愈周期 乙肝多久能治好
disease_describe 查询疾病所以属性 慢性咽炎

总结

1、本项目构建简单,通过本项目能了解KBQA的工作流程。

2、本次通过手工标记210条意图分类训练数据,并采用朴素贝叶斯算法训练得到意图分类模型。其最佳测试效果的F1值达到了96.68%。选用NB的原因是通过与SVM训练效果比较后决定的。

3、不足之处:

希望各位不吝赐教,任何建议请联系我。 邮箱:andrew_czh@163.com