感谢DataWhale分享,学习资源地址:
https://github.com/datawhalechina/team-learningnlp/tree/master/KnowledgeGraph_Basic
1.任务描述
今天的任务分两步,首先要搭建一个知识图谱(详见task03),然后启动问答测试(task04 task05详细讲),构建一个简单的基于 知识图谱 的对话系统。
今天主要是能跑通这两步,能让自己对整个任务有一个整体的认识。
任务的源码在这里:https://github.com/zhihao-chen/QASystemOnMedicalGraph
源码组成部分包括:
data:存放数据
img:存放readme里的图片
model:存放训练好的tfidf模型和意图识别模型
build_graph.py:构建图,详见task03
entity_extractor.py:抽取问句中的实体和识别意图,详见task04
search_answer.py:根据不同的实体和意图构造cypher查询语句,查询图数据库并返回答案,详见task05
2.搭建知识图谱环境
2.1.数据集
数据源:39健康网。包括15项信息,其中7类实体,约3.7万实体,21万实体关系。数据结构如图所示:
知识图谱实体类型
2.2.搭建过程
因为这次任务目标是先跑通,所以仅简略写下步骤。
要将数据导入Neo4j 图数据库,首先进入 build_graph.py 类中,在类MedicalGraph 中加入 本地Neo4j图数据库的账号和密码;
class MedicalGraph:
def __init__(self):
…
self.graph = Graph(“http://localhost:7474″, username=”neo4j”, password=”自己的”)
…
运行:
python build_graph.py
就开始进行数据导入了。由于数据量大,需要的时间很长,要1-2个小时。
终于好了,看下结果,我们有了3w多节点,20多万个关系。
3.启动问答测试
运行命令:
python kbqa_test.py
注意:其中一个库名称为ahocorasick,这个直接pip安装找不到,安装时要改为pyahocorasick. 但是程序里面用的时候,还是要改回ahocorasick.
还有遇到其他的包就碰到哪个装哪个啦。。。
最终的效果是这样
后续具体分析各个部分源码