知识图谱 之 python 操作neo4j (导入CSV操作)
使用python操作neo4j首先我们要先安装一个库 :pip install py2neo安装py2neo后我们可以使用其中的函数对neo4j进行操作。首先我们要知道 Neo4j是图数据库。其中最重要的就是结点和边(关系),结点之间靠边联系在一起,每个结点也有属于自己的属性。也就是说我们在用pyhton操作Neo4j的时候只需要创造出节点(Node )和边(Relationship ),如果有需
使用python操作neo4j首先我们要先安装一个库 :pip install py2neo
安装py2neo后我们可以使用其中的函数对neo4j进行操作。
首先我们要知道 Neo4j是图数据库。其中最重要的就是结点和边(关系),结点之间靠边联系在一起,每个结点也有属于自己的属性。
也就是说我们在用pyhton操作Neo4j的时候只需要创造出节点(Node )和边(Relationship ),如果有需要可以再给结点附上一些属性。
注意: 在我们用python的时候我们必须启动Neo4j 如图所示
下面我们就创建三个结点,每个结点有两个属性,两结点之间有一个关系。
from py2neo import Graph, Node, Relationship
# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", username="root", password='123456')
graph.delete_all() #清除neo4j中原有的结点等所有信息
# 创建结点
node1 = Node('person', name = 'chenjianbo') #该结点语义类型是person 结点名字是chenjianbo 也是它的属性
node2 = Node('major',name = 'software') #该结点语义类型是major 结点名字是software 也是它的属性
node3 = Node('person',name = 'bobo') #该结点语义类型是person 结点名字是bobo 也是它的属性
#给结点node1 添加一个属性 age
node1['age'] = 18
#给结点node2 添加一个属性 college
node2['college'] = 'software college'
#给结点node3 添加一个属性 sex
node3['sex'] = '男'
#把结点实例化 在Neo4j中显示出来
graph.create(node1)
graph.create(note2)
graph.create(note3)
# 创建关系
maojor = Relationship(node1, '专业', node2)
friends = Relationship(node1, '朋友', node3)
maojor1 = Relationship(node3, '专业', node2)
#把关系实例化 在Neo4j中显示出来
graph.create(maojor)
graph.create(maojor1)
graph.create(friends)
我们运行完以后在Neo4j中看下下
导入CSV
通常我们使用知识图谱的时候它们的关系都是确定好的,只要我们导入就可以了,所以这次我们导入一个CSV格式的文件。这是我从学者网上爬取的一些人物的基本信息。它们的信息如下:
其实就是把我们的CSV文件读取出来,然后保存在list里面通过循环的方式一一的建立结点和关系
from py2neo import Graph, Node, Relationship
import pandas as pd
import csv
# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", username="root", password='123456')
graph.delete_all()
with open('D:\\Python\\neo4j-community-4.1.1\\import\\华南师范大学.csv', 'r') as f:
reader = csv.reader(f)
data = list(reader)
print(data[1])
#['0', '汤庸', '教授/学者网创始人', '华南师范大学', '计算机科学与技术', 'www.scholat.com/ytang']
for i in range(1,len(data)):
node = Node('person',name = data[i][1],id = data[i][0],level= data[i][2])
relation = Node('major',name = data[i][4])
relation1 = Node('univer',name = data[i][3])
relation2 = Node('url',name = data[i][5])
graph.create(node)
graph.create(relation)
graph.create(relation1)
graph.create(relation2)
major = Relationship(node,'方向',relation)
univer = Relationship(node,'学校',relation1)
url = Relationship(node,'网址',relation2)
graph.create(major)
graph.create(univer)
graph.create(url)
最终的效果如图所示:
这只是一个简单的方法来构造知识图谱,当数据比较复杂的时候这样构建就会显得不是那么合理。简单的就先说到这里,随后我们会写一个导入比较复杂的CSV文件来用python操作。
更多推荐
所有评论(0)