【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备

背景

上一个实践项目是:【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践。这个属于入门级的项目,可以了解一下neo4j的一些基本操作,以及简单的问答处理。下面进行第二个实践,也是对一个开源项目源码进行解读和改写,最终形成符合自己风格的一个项目。

该项目在github是挺受欢迎的,项目地址:https://github.com/liuhuanyong/QASystemOnMedicalKG。如果喜欢阅读源码的友友,可以直接阅读源码。

原项目简介

原项目基本内容

在我阅读这个项目时(2022-7-17),该项目的start数目大4.2k,fork达1.6k。从数据上来看,大家是比较认可该项目的。
在这里插入图片描述
当然,原作者也是很厉害的,是中国科学院软件研究的所刘焕勇老师。

该项目从无到有搭建一个以疾病为中心的一定规模医药领域知识图谱,并以该知识图谱完成自动问答与分析服务。适合一个初学人员了解该类项目的pipline过程。

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

  1. 基于垂直网站数据的医药知识图谱构建
  2. 基于医药知识图谱的自动问答

该项目的最终效果如下:
【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备_第1张图片
看看问答的内容,感觉还是挺好玩的。

原项目运行效果查看

这么好玩的东西,不得自己跑起来看看嘛。

先准备好neo4j数据,修改源码中build_medicalgraph.py连接neo4j的ip,用户名和密码。为了尽可能地少更改源码,这里选择按照比较早的py2neo版本,4.3.0版本。

然后就是执行这个脚本文件,将图谱数据写入到neo4j中。当然,在这个导入过程中是需要一些一些时间的,特别是将neo4j装到虚拟机上。

然后就是运行,执行chatbot_graph.py程序,然而事情并没有那么简单,(我是在windows上运行的):
【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备_第2张图片
使用pip直接装还不行。解决方法比较简单:conda install -c https://conda.anaconda.org/conda-forge pyahocorasick即可。当然,这个pyahocorasick是啥,怎么用暂时不做深入了解。除了build_medicalgraph.py需要修改neo4j链接之外,还需要在answer_search.py的AnswerSearcher类中修改。

运行的结果如下:
【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备_第3张图片
这个与开源项目问答结果一致,挺有意思。

原项目深入

该项目的技术架构如下:
【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备_第4张图片
其中涉及的各个模块也是现在当前进行问答的主要流程。只是在不同环节有不同的细分技术。例如question classifier,这个部分通常在不同性质的问答系统中有不同的叫法,通常也叫做意图识别,query parser就是query解析,这个不仅在问答中有重要的使用,在搜索中也是如此,如果深究的话,就单凭query parser就能够衍生很多知识,如query错误纠正,query改写等等。在知识搜寻中相关技术也比较多,有的会进行子图切分在图数据库中匹配,也有使用传统的规则匹配等方法去处理。

除此之外,单轮对话相对简单,如果涉及任务型对话的,则需要涉及填槽的工作以及对话管理等等。

虽然这只是知识图谱应用中的一小部分,在知识图谱构建也涉及很多内容。内容虽多,但做出来还是挺有意思,挺有意义的,下面我们就开从零去研究这个项目吧。

开发环境准备

这里先不考虑数据获取,schema构建,知识存储等等。这里先把我们的技术栈以及开发环境固定下来。

  1. 为了能够更加接近实际开发,我们还考虑将git引入进来进行版本管理(虽然没有涉及多人开发);我这里现在github上创建该项目,https://github.com/Htring/KGQAMedicine;
  2. 因为这里没有涉及模型训练,我依然采用程序解释器放在我的虚拟机上;
  3. 在虚拟机上再创建一个虚拟环境conda create -n chatbot python==3.8
  4. pycharm开发依然是首选,然后连接对应的虚拟环境;
  5. 图数据库依然采用的neo4j,并使用的是docker容器的安装方式;如果不了解如何安装的话,可以参考:【neo4j】docker容器化安装

当然,这里是符合我的开发习惯。也可以根据自己的习惯来,当然如果你也采用这种方式开发的并且有一些操作不懂的话,可以留言哦。

好了本节就到这里,下次再会。

你可能感兴趣的:(知识图谱,知识图谱,人工智能)