@TOC
Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简略直观,本文假如你曾经装置好Neo4j数据库,并对常识图谱有肯定的理解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。 像Oracle数据库具备查询语言SQL,Neo4j具备CQL作为查询语言。你能够拜访(https://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html)学习Cypher查询语言。
本文将应用Python联合Cypher语言对Neo4j数据库进行操作,在上一篇文章中:基于Brat标注数据集的python包network网络构建和搜寻,咱们应用network进行代替解决,在学习本文后,能够间接应用快捷不便的Neo4j数据库。
一、数据结构
首先将数据放在表格中,每一行数据为“头实体”、“头实体类别”、“头尾实体关系”、“尾实体类别”、“尾实体”,如图:
你能够将数据结构成这样的构造,咱们为你提供了一项十分便捷的工具:“实体关系标注软件” (或者拜访博客主页查找),该软件能够疾速的帮忙你将文本结构成5元组模式,以及字符标签一对一的模式,并提供了许多便捷之处。
二、上传数据
1、连贯数据库
#----关上数据库-----from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraphgraph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的明码"))
2、读取数据
path = r"C:\Users\DELL\data\5501-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: continueprint("ok1")
4、查看后果。关上neo4j端口,能够看到下图后果:
三、清空数据库
Neo4j是非结构化的数据库,不同于结构化的数据库有分辨别表的思维。Neo4j数据库是将所有的数据,不管这些数据是否来自于哪里,及时它们毫无相干,都放在同一个库中。
假使须要清空该库,能够应用:
#----关上数据库-----from py2neo import Node, Relationship, Graph, NodeMatcher, RelationshipMatcher,Subgraphgraph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的明码"))#----删除所有内容-----graph.delete_all()
我的项目数据和代码
以下任意形式均可:
1、文末评论,或者私信留言你的邮箱,博主定期回复。
2、点击:GitHub-neo4j(或者拜访:https://github.com/chenyiadam/python_neo4j.git)进行下载。
本文由mdnice多平台公布