1 导入相关的包
import csv
import py2neo
from py2neo import Graph, Node, Relationship, NodeMatcher
2 连接neo4j知识图谱数据库
g = Graph('http://localhost:7474', user = 'neo4j', password = 'neo4j')
3 导入数据并构建知识图谱
with open('triples.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for item in reader:
if reader.line_num == 1:
continue
print('当前行数', reader.line_num, '当前内容:', item)
start_node = Node('Person', name=item[0])
end_node = Node('Person', name = item[1])
relation = Relationship(start_node, item[3], end_node)
g.merge(start_node, 'Person', 'name')
g.merge(end_node, 'Person', 'name')
g.merge(relation, 'Person', 'name')
- 效果图:

4 查询操作
g.run("Match (p:Person{name: '贾宝玉'})-{k: 丫鬟}-(r)") return(p,k,r);")
- 效果图:

g.run("""match (p1:Person {name:"贾宝玉"}), (p2:Person{name:"香菱"}), \
p=shortestpath((p1)-[*..10]-(p2)) return p;""")
- 效果图:

企业级项目的步骤
- 运用自然语言处理方法(用深度学习或者机器学习实现)从非结构化数据中提取结构化数据,存入数据库;
- 将结构化数据提取出来,编写代码进行处理,展现为一张较大的知识图谱;
- 从用户输入的一些数据,比如问答系统,推荐系统情境中,提取其中的实体和关系;
- 转化所为知识图谱的查询语句,提取和用户输入相关的实体和关系;
- 再次通过自然语言处理技术将提出到的实体和关系,转化为可读的形式(图或者自然语言),呈现给用户。