Home

Awesome

QASystemOnMedicalGraph

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

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

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

项目效果

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

项目运行方式

运行环境:Python3 数据库:neo4j 预训练词向量:https://github.com/Embedding/Chinese-Word-Vectorshttps://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