① 本项目虽然是轻量级的,却是入门基于知识图谱的问答系统的一个好项目,整个项目可作为本科阶段的课程设计,建议收藏。
以下三篇文章可用于进一步学习。
基于知识图谱的古诗词问答系统(全网首篇+包复现)
基于知识图谱的古诗词问答系统(全网首篇+包复现+理论篇)
基于知识图谱的古诗词问答系统(全网首篇+包复现+实践篇)


一、项目概述

  至于什么是知识图谱,什么是问答系统,什么是基于知识图谱的问答系统,本篇文章并不打算回答。这些先验知识,可以在复现完本项目后再做进一步地了解和学习。本文章,主要为你从代码实践的角度,理解和学习知识图谱和问答系统。
  基于知识图谱的医药问答系统,来源于刘焕勇老师2018年(属实有点久远了,但用于入门级学习已经够了😁😁😁)的开源项目,在该项目中,刘老师已经回答了构建方案、系统架构等问题。本篇文章在刘老师的项目基础上,做了简单的调整和复现,以下展示部分效果图。

  图1:知识图谱的构建过程
知识图谱构建过程

  图2:问答框架
问答框架
  图3:医药知识图谱实体类型
医药知识图谱实体类型

  图4:医药知识图谱关系类型
医药知识图谱关系类型

  图5:医药知识图谱问答系统支持回答的问题类型
医药知识图谱问答系统支持回答的问题类型

  图6:医药知识图谱
医药知识图谱
  图7:基于知识图谱的医药问答系统
基于知识图谱的医药问答系统
基于知识图谱的医药问答系统

  在本文以下章节中,所有提到的相关文件可通过评论区留言或私信作者获取。本项目代码点击链接获取:基于知识图谱的医药问答系统
  💫项目源码:
  💫下载链接:https://pan.baidu.com/s/1mmDlrHf5lUQ4GSSb5gnWvg?pwd=1024

二、系统环境配置

2.1 集成开发环境(IDE)

  本项目的复现,主要在JetBrains PyCharm平台完成,使用的是其专业版本,当然社区版本也可以的。专业版本的获取方式主要是通过购买或者完成学生认证,当然通过关注微信公众号(火星软件安装🉑🉑🉑)也能够获取到专业版本,本文选取的是Pycharm 2024.1 的版本,安装过程按照其指引完成即可不必赘述。
  💫PyCharm:
  💫下载链接:https://pan.baidu.com/s/1heT20dwn44V63O-TzB9blQ?pwd=1024

2.2 Anaconda的安装

  由于本项目是轻量级的,所以不使用Anaconda也可以,但为了更好的管理项目环境包,建议使用Anaconda,本文使用的版本是23.11.0。
  安装的版本尽量选取近年稳定的,而不必一定选取最新版本,如果还没有使用过的小伙伴们,赶快点击博文——史上最全最详细的Anaconda安装教程按照其步骤下载安装就好了。

2.3 JDK与Neo4j的安装

  本系统依赖的知识图谱会存储在Neo4j中,Neo4j是一款优秀的NoSQL型图数据库,有社区版和企业版,安装社区版就能够满足个人开发中的绝大多数需求了,比如社区版中可存储图的节点数量在亿级,可存储的关系数量同样。安装Neo4j之前还需要安装JDK,因为Neo4j的部分功能依赖Java而实现。
  本文使用的JDK版本是17.0.9,使用社区版本的Neo4j的版本是5.15.0;安装教程按照博文——Neo4j安装+安装JDK(Windows超详细)里的步骤一步一步安装就好,而两个软件的安装包请点击下面链接获取。
  💫JDK:
  💫下载链接:https://pan.baidu.com/s/1ZMqcRVnN_5RYXH2OGat4wQ?pwd=1024

  💫Neo4j:
   💫下载链接:https://pan.baidu.com/s/12K1D-2lOU83B_SSfBXa48A?pwd=1024

三、项目复现流程

3.1 项目部署与环境搭建

  将第二章中提到的项目下载并解压到本地,然后安装项目依赖的环境。无论是PyCharm还是其他的IDE,直接将 requirements.txt 中的环境下载到你所需要的解释器。若有Anaconda,则将项目在终端打开,然后依次执行以下3条命令即可完成环境的安装。

command1: conda create -n medicine python=3.9
command2: conda activate medicine
command3: pip install -r requirements.txt

3.2 构建医药知识图谱

  在构建医药知识图谱之前,首先需要创建数据库 medicine ,然后在代码中更改部分配置。
  根据你安装 neo4j 的文件夹,在目录 \neo4j-community-5.15.0\conf 下找到 neo4j.conf 文件,按下图更改则可以创建数据库。更改完成后,在终端通过命令 neo4j restart 则可以在浏览器中看到创建好的 medicine 数据库。
创建数据库
  创建完数据库后,就可以向数据库中导入知识图谱的节点和关系了,笔者提供两种方法的导入。第一种是使用纯python的模式导入,但是耗费时间,完全导入约2个小时。第二种是将笔者备份的数据库直接恢复到你所创建的数据库中。按以下操作流程即可。
  第一种方法。打开项目文件 \KGQA_Medicine\create_medical_graph.py ,按下图更改 neo4j 的配置,然后直接启动该程序,静候佳音。待程序跑完,可在浏览器查看导入的知识图谱。
更改密码1
  第二种方法。通过下面的链接将笔者备份的 medicine 数据库保存并解压到本地,请记住解压的位置,后续会用到。然后找到Neo4j的安装目录下的 bin 文件夹,输入 cmd 进入系统终端,如下图所示。
  💫medicine 数据库:
  💫下载链接:https://pan.baidu.com/s/1V-2dIKEWUWm9XskaVK6xrA?pwd=1024
neo4j配置
   进入终端后,再输入命令(命令中 path 为 medicine.dump 存放的文件夹的绝对路径,根据实际情况更改即可)完成数据库的恢复,但前提是确保自己的 medicine 数据库处于关闭状态(终端输入 neo4j stop 关闭数据库)。

neo4j-admin database load --from-path=D:\medicine --overwrite-destination=true medicine

   最后在终端输入 neo4j start 命令启动数据库,就可以在浏览器查看整个数据库了。

3.3 项目启动

   完成以上步骤后,就可以启动本项目了。在项目文件 \KGQA_Medicine.py 中按下图更改 neo4j 的配置,若是在Anaconda的环境下,则在 medicine 虚拟环境下点击启动,就可以开始问答了。
neo4j更改2

四、项目总结

  首先特别感谢刘焕勇老师的开源项目,能够为我们提供该领域的入门级学习。
  源码里都有详细的注释,应该很好理解。但该项目仍存在诸多问题,例如知识库的构建较为久远,势必有关“新冠肺炎”的问题该系统无法回答;针对NLP,在NLG和NLU方面,该项目使用的工具和方法也比较古老。抛开这些问题不谈,整个项目对于新手入门来说,足矣。
  目前AIGC如此强大,基于知识图谱的问答系统是否还有存在的余地,这是一个仍值得商榷的问题。
  在复现本项目的过程中,有任何问题,都欢迎你在评论区留言或私信我。

参考文献

 ① 邵浩,张凯,李方圆等. 从零构建知识图谱: 技术、方法与案例[M]. 北京:机械工业出版社,2021.


文章推荐

🌞 基于知识图谱的古诗词问答系统 - 综述篇

🌞 基于知识图谱的古诗词问答系统 - 理论篇

🌞 基于知识图谱的古诗词问答系统 - 实践篇

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐