医疗知识图谱NLP项目,实体规模4.4万,实体关系规模30万

  • 2019 年 10 月 28 日
  • 筆記

本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,11类规模约30万实体关系的知识图谱。本项目将包括以下两部分的内容:
  1. 基于垂直网站数据的医药知识图谱构建
  2. 基于医药知识图谱的自动问答

项目最终效果

项目运行方式

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

详细方案

一、医疗知识图谱构建

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

2 脚本目录

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

1.3 医药领域知识图谱规模

1.3.1 neo4j图数据库存储规模

1.3.2 知识图谱实体类型

1.3.3 知识图谱实体关系类型

1.3.4 知识图谱属性类型

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

2.1 技术架构

2.2 脚本结构

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

2.3 支持问答类型

问答结果展示

总结

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