当前位置:   article > 正文

知识图谱——Python操作Neo4j导入CSV文件建立图谱_知识图谱构建 导入数据

知识图谱构建 导入数据

首先Neo4j是图数据库,最重要的就是结点和边的关系,每两个结点和边都可以看成三元组,主谓宾的关系,当然结点也是可以添加属性的,但是首先要有结点,在添加属性。本片文章就是用简单的方式一次性给大家讲解清楚。

简单起见,我们用西游记师徒四人为例子(手动写的,为了理解),来体现出本章要讲的操作

一、先把人物和关系罗列出来

注意,要将文件保存为.csv格式

 ps:知识图谱的建立,数据来源主要分为三种,一种是非结构化数据(文本)、半结构化数据(可以爬虫技术在一些网站上获取),结构化数据(关系型数据)。

二、要建立结点,只有有了结点才会有关系,和之后的属性等。代码如下:

  1. from py2neo import Graph, Node, Relationship
  2. import csv
  3. fr= open("G:\四人关系.csv", mode="r", encoding="gbk") # 如果路径是在工程目录下直接下相对路径,如果不在就写绝对路径
  4. lst = []
  5. node = []
  6. for row in csv.reader(fr):
  7. lst_ = []
  8. lst_.append(row[0])
  9. lst_.append(row[1])
  10. lst_.append(row[2])
  11. lst_.append(row[3])
  12. lst_.append(row[4])
  13. lst.append(lst_)
  14. node.append(row[0]+' '+row[1])
  15. node.append(row[3]+' '+row[4])
  16. # print(lst)
  17. graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
  18. node = set(node) # 消除重复结点
  19. # 建立结点:
  20. for item in node:
  21. shiti,label = item.split()
  22. cypher_ = "CREATE (:" + label + " {name:'" + shiti + "'}) "
  23. graph.run(cypher_)
  24. # 建立关系 :
  25. for item in lst:
  26. cypher_ = "MATCH (a:" + item[1] + "),(b:" + item[4] + ") WHERE a.name = '" + item[0] + "' AND b.name = '" + item[3] + "' CREATE (a)-[r:" + item[2] + "]->(b)"
  27. graph.run(cypher_)

建立是先根据第1,2列、4,5列建立结点后,才根据第3列建立的关系,运行后,师徒四人的图谱就建立好了,效果如下图:

 三、增加属性

和以上操作一样,现在EXCEL上写好属性,如图(只写了一点),自己做的时候把自己要的属性像这样写清楚:

代码和上面的一样,只是换了cypher语句:

  1. from py2neo import Graph, Node, Relationship
  2. import csv
  3. fr= open("属性.csv", mode="r", encoding="gbk")
  4. lst = []
  5. node = []
  6. for row in csv.reader(fr):
  7. lst_ = []
  8. lst_.append(row[0])
  9. lst_.append(row[1])
  10. lst_.append(row[2])
  11. lst_.append(row[3])
  12. lst.append(lst_)
  13. node.append(row[0]+' '+row[1])
  14. node.append(row[2]+' '+row[3])
  15. graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
  16. for item in lst:
  17. cypher_ = "MATCH (a:" + item[1] + "{name:'" + item[0] + "'}) SET a." + item[2] + " = '" + item[3] +"'"
  18. graph.run(cypher_)

运行之后,点击结点就可以看到属性的信息啦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/161257
推荐阅读
相关标签
  

闽ICP备14008679号