Python结合cypher语言操作Neo4j图数据库用例
Neo4j是世界领先的开源图数据库。其语言操作简单直观。本文假设您已经安装了Neo4j数据库并且对知识图谱有一定的了解。Neo4j数据库的查询语言是CQL,即Cypher Query Language。正如Oracle数据库有查询语言SQL一样,Neo4j有CQL作为查询语言。您可以访问(https://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html)学习cypher查询语言。
本文使用Python结合Cypher语言来操作Neo4j数据库。在上一篇文章:基于Brat标注数据集的Python分组网络的网络构建与搜索中,我们使用网络进行替代处理。学习完本文后,您立即可以使用快捷方便的Neo4j数据库。
1。数据结构
首先将数据放入表中。每行数据分别是“头实体”、“头实体类别”、“头实体关系”、“尾实体类别”、“尾实体”,如图:
可以将数据组织成这样的结构。我们为您提供一个非常方便的工具:“实体关系标注软件”(或者访问博客主页找到它)。该软件可以帮助您快速将文本组织为五元组,并与字符标签一一对应,并提供了很多便利。
2。上传数据
1。连接到数据库
#----打开数据库-----
from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraph
graph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的密码"))
2。读取数据
path = r"C:UsersDELLdata5501-6000_input_pre_5元组.csv"
file = open(path,'r',encoding = 'utf-8').readlines()
con = list()
zh = ['病名','病症','其它','药名','诊断方案','治疗方案','包含','治疗','危险因素','辅助诊断','特征','并发','别名','作用','条件','诊断']
3。上传数据
for j in file:
try:
a = j.replace("t","").strip('n').split(",")
# a = [eval(i) for i in a] #引号里面有引号-两对引号
a = [i for i in a] #只有一对引号
if (a[1] not in zh) or (a[2] not in zh) or (a[3] not in zh):
continue
#['甲状腺功能亢', '病名', '治疗', '其它', 'HCV感染患者']
con.append(a)
except:
continue
# print(a)
for j in con:
try:
selector = NodeMatcher(graph) #创建图,实质上为句柄
# ---创建头实体节点---
entity1 = selector.match(j[1], name = j[0]) #检索是否存在头实体节点
if len(list(entity1)) == 0: #不存在头实体节点,则创建头实体
entity1_node = Node(j[1], name = j[0])
graph.create(entity1_node) #创建头实体
else: #存在头实体节点,跳过
pass
# ---创建尾实体节点---
entity3 = selector.match(j[3], name = j[4])
if len(list(entity3)) == 0: #不存在尾实体节点,则创建
entity3_node = Node(j[3], name = j[4])
graph.create(entity3_node)
else: #存在节点,跳过
pass
#将两虚点建立关系
e1_node = graph.nodes.match(j[1], name = j[0]).first()
e2_node = graph.nodes.match(j[3], name = j[4]).first()
e12 = Relationship(e1_node, j[2], e2_node)
graph.create(e12)
except:
continue
print("ok1")
4。查看结果。打开neo4j端口,可以看到下图的结果:
3.删除数据库
Neo4j是非结构化数据库,与结构化数据库的区别在于分区和分区的思想分割。表分离。Neo4j数据库将所有数据放在同一个数据库中,无论它们来自哪里,即使它们不相关。
如果需要删除库,可以使用:
#----打开数据库-----
from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraph
graph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的密码"))
#----删除所有内容-----
graph.delete_all()
项目数据和代码
以下任意一种方法都可以: 1.在文末评论,或者私信给您的电子邮件地址,博主会定期回复。 2.点击:GitHub-neo4j(或访问:https://github.com/chenyiadam/python_neo4j.git)下载。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。