Task 2 基于医疗知识图谱的问答系统操作介绍

Datawhale 知识图谱组队学习 之 Task 2 基于医疗知识图谱的问答系统操作介绍

    • 一、引言
    • 二、运行环境
    • 三、搭建知识图谱
    • 四、启动问答测试
    • 五、代码目录介绍
    • 六、医疗知识图谱实体信息
    • 七、问题意图识别
    • 参考资料

一、引言

  • 该项目主要分为两部分:

    • 第一部分:搭建知识图谱。该部分的具体讲解将在 Datawhale 知识图谱组队学习 之 Task 3 Neo4j图数据库导入数据进行介绍;
    • 第二部分:启动问答测试。构建一个简单的基于 知识图谱 的对话系统,该部分的具体讲解将在 Datawhale 知识图谱组队学习 之 Task 4 用户输入->知识库的查询语句 和 Datawhale 知识图谱组队学习 之 Task 5 Neo4j 图数据库查询 进行分别介绍;
  • 本节的核心目标是 从 全局对项目的运行过程进行介绍和讲解;学习者能够跑通整个项目。

二、运行环境

  • python3.0及以上
  • neo4j 3.5.0及以上
  • jdk 1.8.0

三、搭建知识图谱

运行该过程,请确保已经安装好 neo4j 和 jdk

安装过程请参照:JDK+NEO4J安装及配置-----记录

运行 以下命令:

    python build_graph.py 

注:由于数据量比较大,所以该过程需要运行几个小时

运行介绍之后,打开浏览器进入网址:http://localhost:7474/browser/,可以看到我们导入的数据的知识图谱,如下:

Task 2 基于医疗知识图谱的问答系统操作介绍_第1张图片
Task 2 基于医疗知识图谱的问答系统操作介绍_第2张图片

图 1 知识图谱 展示图

四、启动问答测试

运行 以下命令:

    python kbqa_test.py

运行结果如下图所示:

Task 2 基于医疗知识图谱的问答系统操作介绍_第3张图片
Task 2 基于医疗知识图谱的问答系统操作介绍_第4张图片

五、代码目录介绍

  • data:存放数据
  • img:存放readme里的图片
  • model:存放训练好的tfidf模型和意图识别模型
  • build_graph.py:构建图,详见task03
  • entity_extractor.py:抽取问句中的实体和识别意图,详见task04
  • search_answer.py:根据不同的实体和意图构造cypher查询语句,查询图数据库并返回答案,详见task05

六、医疗知识图谱实体信息

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

Task 2 基于医疗知识图谱的问答系统操作介绍_第5张图片

1 知识图谱实体类型

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

2 知识图谱实体关系类型

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

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. QASystemOnMedicalGraph

你可能感兴趣的:(知识图谱)