知识图谱初体验-疾病自动问答
楔子
之前一直觉得知识图谱挺有意思,这两天忙里偷闲,在 GitHub 上看到了 liuhuanyong 大佬开源的项目,于是便发动 clone 大法搞下来玩了玩儿。有一说一,大佬流弊,但是文档不是很完善,给东哥这种知识图谱零基础的小白造成了些许困扰,好在 issue 区小伙伴的精彩评论拯救了我,于是便决定把这次游玩的经历记录下来,供像我一样的知识图谱零基础小白上手。
流程图
graph TB
st(开始)-->op1[克隆代码]
op1-->op2[安装python依赖]
op2-->op3[通过docker启动neo4j]
op3-->op4[向neo4j中导入节点和关系]
op4-->op5[启动对话机器人]
op5-->e(结束)
使用 git 克隆代码
代码仓库:https://github.com/liuhuanyong/QASystemOnMedicalKG
GitHub 上的项目介绍:
知识图谱是目前自然语言处理的热门方向,关于较全面的参考资料,可以查看我的 ccks2018 参会总结(https://github.com/liuhuanyong/CCKS2018Summary )。
与知识图谱相关的另一种形态,即事理图谱,本人在这方面也尝试性地积累了一些工作,可参考:(https://github.com/liuhuanyong/ComplexEventExtraction )。
关于知识图谱概念性的介绍就不在此赘述。目前知识图谱在各个领域全面开花,如教育、医疗、司法、金融等。本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含 7 类规模为 4.4 万的知识实体,11 类规模约 30 万实体关系的知识图谱。 本项目将包括以下两部分的内容:
- 基于垂直网站数据的医药知识图谱构建
- 基于医药知识图谱的自动问答
完整文档请参考项目主页的 README。
1 |
|
安装 python 依赖
1 |
|
通过 docker 启动 neo4j
本项目使用 neo4j 图数据库来存储实体和关系,因此需要本地安装启动一个 neo4j 数据库。看了看 neo4j 的安装手册,发现有官方的 docker 镜像,深爱 docker 的东哥顺手写了一个 docker-compose 文件,通过一行命令启动 neo4j,异常舒适。
如果你还没有安装 docker
,请参考以下链接:
- Windows 用户:https://hub.docker.com/editions/community/docker-ce-desktop-windows
- Mac 用户:https://hub.docker.com/editions/community/docker-ce-desktop-mac/
- Ubuntu 用户:https://docs.docker.com/engine/install/ubuntu/
如果你是 Linux 用户,还需要单独安装 docker-compose
命令:
1 |
|
docker-compose 安装文档:https://docs.docker.com/compose/install/#install-compose
在 docker 和 docker-compose 都安装好了以后,就可以通过 docker-compose 一键启动 neo4j 啦!把我写的docker-compose.yml
文件贴出来:
1 |
|
需要在 build_medicalgraph.py 和 answer_search.py 两个文件中,将 Graph 的 user, password 修改 NEO4J_AUTH
设置的值,且用户名必须为 neo4j,否则 neo4j 初始化时会报错:
1 |
|
在项目目录下新建目录 docker,然后把上面的代码复制粘贴到 docker 目录下的 docker-compose.yml 文件中,通过 docker-compose 命令就可以启动啦!是不是很方便?
1 |
|
用浏览器打开 http://127.0.0.1:7474/browser/ 就可以看到 neo4j 的管理界面
向 neo4j 中导入节点和关系
将build_medicalgraph.py
文件中的 main 函数修改为以下内容:
1 |
|
然后执行python build_medicalgraph.py
即可导入。但是这种导入方式耗时长,我第一次导入数据的时候花了大概一个多小时。
所以,我把我导入过的数据分享出来,大家可以直接下载使用,免除导入数据耗时长的烦恼。
下载地址:
- 百度网盘:https://pan.baidu.com/s/1gCdFJDB3JcLvTsJos3Xr6g 提取码:fj2g
- Google Drive: https://drive.google.com/open?id=1Ie3Gxl_0TweLCfh-3yjrIWHWQ8oBZLc-
将下载得到的压缩包解压,会得到 data、logs、import、plugins 三个文件夹,把它们都移动到 docker 目录内,然后再执行docker-compose up -d
即可启动。
启动对话机器人
直接通过python chatbot_graph.py
启动即可,效果截图: