知识图谱——Python操作Neo4j导入CSV文件建立图谱
首先Neo4j是图数据库,最重要的就是结点和边的关系,每两个结点和边都可以看成三元组,主谓宾的关系,当然结点也是可以添加属性的,但是首先要有结点,在添加属性。本片文章就是用简单的方式一次性给大家讲解清楚。
简单起见,我们用西游记师徒四人为例子(手动写的,为了理解),来体现出本章要讲的操作
一、先把人物和关系罗列出来
注意,要将文件保存为.csv格式
二、要建立结点,只有有了结点才会有关系,和之后的属性等。代码如下:
from py2neo import Graph, Node, Relationship import csv fr= open("G:四人关系.csv", mode="r", encoding="gbk") # 如果路径是在工程目录下直接下相对路径,如果不在就写绝对路径 lst = [] node = [] for row in csv.reader(fr): lst_ = [] lst_.append(row[0]) lst_.append(row[1]) lst_.append(row[2]) lst_.append(row[3]) lst_.append(row[4]) lst.append(lst_) node.append(row[0]+ +row[1]) node.append(row[3]+ +row[4]) # print(lst) graph = Graph(bolt://localhost:7687,name="neo4j",password="******") node = set(node) # 消除重复结点 # 建立结点: for item in node: shiti,label = item.split() cypher_ = "CREATE (:" + label + " {name:" + shiti + "}) " graph.run(cypher_) # 建立关系 : for item in lst: cypher_ = "MATCH (a:" + item[1] + "),(b:" + item[4] + ") WHERE a.name = " + item[0] + " AND b.name = " + item[3] + " CREATE (a)-[r:" + item[2] + "]->(b)" graph.run(cypher_)
建立是先根据第1,2列、4,5列建立结点后,才根据第3列建立的关系,运行后,师徒四人的图谱就建立好了,效果如下图:
三、增加属性
和以上操作一样,现在EXCEL上写好属性,如图(只写了一点),自己做的时候把自己要的属性像这样写清楚:
代码和上面的一样,只是换了cypher语句:
from py2neo import Graph, Node, Relationship import csv fr= open("属性.csv", mode="r", encoding="gbk") lst = [] node = [] for row in csv.reader(fr): lst_ = [] lst_.append(row[0]) lst_.append(row[1]) lst_.append(row[2]) lst_.append(row[3]) lst.append(lst_) node.append(row[0]+ +row[1]) node.append(row[2]+ +row[3]) graph = Graph(bolt://localhost:7687,name="neo4j",password="******") for item in lst: cypher_ = "MATCH (a:" + item[1] + "{name:" + item[0] + "}) SET a." + item[2] + " = " + item[3] +"" graph.run(cypher_)
运行之后,点击结点就可以看到属性的信息啦。
上一篇:
JS实现多线程数据分片下载
下一篇:
关于深度学习高维矩阵的形象化理解