知识图谱介绍以及Neo4j+Python图结构数据库使用案例
创始人
2024-06-02 00:45:03
0

知识图谱介绍以及Neo4j+Python图结构数据库使用案例

  • 一、数据结构
  • 二、上传数据
  • 三、清空数据库
  • 项目数据和代码

  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,Subgraph
graph = 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,Subgraph
graph = Graph("http://localhost:7474/", auth=("neo4j", "替换为你的密码"))#----删除所有内容-----
graph.delete_all()

项目数据和代码

以下任意方式均可:
1、文末评论,或者私信留言你的邮箱,博主定期回复。
2、点击:GitHub-neo4j(或者访问:https://github.com/chenyiadam/python_neo4j.git)进行下载。

相关内容

热门资讯

安卓系统刷入停止,探究原因与解... 你有没有遇到过这种情况?手机刷机过程中突然停止了,安卓系统刷入停滞不前,心里那个急啊!别慌,今天就来...
汽车是安卓系统嘛,安卓系统在智... 你有没有想过,汽车里那个神奇的操作系统,是不是和安卓手机里的一样呢?没错,今天咱们就来聊聊这个话题—...
网易狼人杀 安卓系统,体验指尖... 亲爱的玩家们,你是否曾在深夜里,手机屏幕前,与一群好友展开一场惊心动魄的“狼人杀”对决?今天,就让我...
小米安卓系统小主机,探索小米安... 你有没有想过,家里的电视、电脑、平板,甚至手机,其实都可以变成一个超级智能的娱乐中心?没错,这就是小...
卡刷安卓系统大全,全面解析各类... 你有没有想过,你的安卓手机可以像变形金刚一样,随心所欲地变换模样?没错,今天就要给你揭秘一个神奇的世...
安卓系统测试流畅度,安卓系统流... 你有没有发现,现在手机更新换代的速度简直就像坐上了火箭呢!尤其是安卓系统,每次更新都让人眼前一亮。但...
安卓系统50怎么升级,轻松迈向... 亲爱的安卓用户们,你是否也像我一样,对安卓系统的更新充满了期待?没错,就是那个让我们的手机焕然一新的...
安卓5.1.1操作系统,系统特... 你知道吗?在手机世界里,操作系统就像是个大管家,它不仅决定了手机的脸面,还掌管着手机的所有“家务事”...
手机安卓系统如果升级,体验流畅... 亲爱的手机控们,你们有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?别急,别急,今天就来给你...
安卓系统怎么禁止待机,安卓系统... 手机待机时间短,是不是让你头疼不已?别急,今天就来教你一招,让你的安卓手机告别“短命”模式,延长待机...
亿联安卓苹果系统,跨平台沟通新... 你知道吗?在科技飞速发展的今天,手机操作系统可是咱们日常生活中不可或缺的一部分。说起手机系统,亿联安...
smoothx安卓系统安装ap... 你有没有想过,为什么你的手机里总是乱糟糟的,各种app堆在一起,找起来费劲得很?别急,今天就来教你怎...
安卓系统图库在哪里,图库应用位... 你有没有发现,手机里的照片越来越多,有时候想找一张特定的照片,却像大海捞针一样困难?别急,今天就来告...
安卓7.0系统自带彩蛋,隐藏彩... 你知道吗?安卓7.0系统里竟然藏着不少小秘密,就像一颗颗隐藏的彩蛋,等着我们去发现。今天,就让我带你...
安卓系统好用的电池,好用到飞起... 你有没有发现,用安卓手机的时候,电池续航能力简直让人爱不释手啊!没错,今天咱们就来聊聊这个话题——安...
akg3003安卓系统,安卓系... 你有没有听说过AKG3003这款耳机?它最近在安卓系统用户中可是火得一塌糊涂呢!今天,就让我带你全方...
福州攻略系统和安卓,安卓用户必... 你打算去福州玩儿吗?别急,别急,让我这个福州通给你来点独家攻略,让你在福州的街头巷尾畅游无阻!这次,...
安卓游戏账号转系统,轻松实现账... 你有没有想过,有一天你的安卓游戏账号里堆满了金币、装备和等级,但是突然间,你发现这个账号已经不适合你...
安卓怎么下载原系统,安卓系统下... 你有没有发现,有时候安卓手机的系统更新后,新功能是挺多,但就是有点水土不服,用起来总觉得不如原来的系...
安卓系统和ios系统使用区别,... 你有没有发现,身边的朋友在使用手机时,总是对安卓系统和iOS系统争论不休?有时候,你甚至会被卷入这场...