在之前的博客里面已经完整安装和启动了neo4j数据库了,今天想找一点时间学习使用一下neo4j这个图数据库,从网上搜了一点人物关系的数据,因为在图数据库中,节点就是实体,边就是关系,所以这里想简单使用人物关系数据来构建一下图数据库模型,具体的实现如下所示:
#!usr/bin/env python
# encoding:utf-8
from __future__ import division
"""
__Author__:沂水寒城
功能: Python操作neo4j实践图数据库使用
"""
import os
import sys
import json
from py2neo import Graph,Node,Relationship
reload(sys)
sys.setdefaultencoding('utf-8')
##连接neo4j数据库
graph=Graph(
'http://localhost:7474',
username='neo4j',
password='neo4j'
)
#清除图数据
graph.delete_all()
#创建结点
with open('data.txt') as f:
data_list=[one.strip().split('###') for one in f.readlines() if one]
have_list=[]
node_list=[]
map_dict={}
for one_relation in data_list:
P1,P2,relation,weight=one_relation
if P1 not in have_list:
have_list.append(P1)
one_node=Node('sougou',name=P1)
node_list.append(one_node)
map_dict[P1]=one_node
if P2 not in have_list:
have_list.append(P2)
one_node=Node('sougou',name=P2)
node_list.append(one_node)
map_dict[P2]=one_node
for one_node in node_list:
graph.create(one_node)
#创建关系
for one_relation in data_list:
P1,P2,relation,weight=one_relation
one_link=Relationship(map_dict[P1],relation,map_dict[P2])
one_link['count']=weight
graph.create(one_link)
print(graph)
使用到的部分数据截图如下所示:
运行结束后,打开浏览器,输入:http://localhost:7474 回车就可以查看图数据库里面的数据了,部分数据截图如下:
neo4j数据库中部分数据库类型截图如下所示:
初步使用,感觉知识图谱如果做得足够好,是非常有希望超过AI所能达到的效果的。