知识图谱 之 python 操作neo4j (导入CSV操作)

tech2024-01-12  72

使用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操作。

知识图谱之python操作Neo4j导入CSV构建复杂的知识图谱

基于python的Django框架和Neo4j的知识图谱可视化

最新回复(0)