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

使用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的知识图谱可视化

  • 8
    点赞
  • 6
    评论
  • 46
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页

打赏

辰溪0502

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值