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