知识图谱介绍以及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)进行下载。

相关内容

热门资讯

pc掌机安装安卓系统,PC掌机... 你有没有想过,你的PC掌机也能装上安卓系统,变成一个全能的小神器呢?没错,今天就来给你详细介绍如何让...
苹果11像安卓系统,深度解析安... 你有没有发现,最近苹果11的操作系统越来越像安卓系统了呢?这可不是我随便说说哦,咱们来好好聊聊这个话...
安卓系统支付宝图标,简约而不简... 你有没有发现,手机屏幕上那个小小的支付宝图标,简直就像是个忠诚的小卫士,时刻守护着你的钱包呢?今天,...
梦幻q传没有安卓系统,探索全新... 你有没有听说最近的一款游戏《梦幻q传》?这款游戏可是让不少玩家为之疯狂呢!不过,你知道吗?它竟然没有...
TCL安卓系统电视刷机,解锁更... 亲爱的电视迷们,你是否对家里的TCL安卓系统电视感到有些厌倦,想要给它来个焕然一新的变化呢?那就跟着...
安卓系统后起之秀,揭秘后起之秀... 你知道吗?在手机操作系统这个江湖里,安卓系统可是个后起之秀呢!它就像一位默默无闻的侠客,突然间就闯出...
安卓转换电脑系统,安卓系统在电... 你有没有想过,你的安卓手机里的那些好玩的应用和游戏,能不能直接在电脑上畅玩呢?今天,就让我来带你一探...
安卓系统的爱心教程,轻松实现爱... 亲爱的安卓用户们,是不是觉得手机里的爱心图标有点神秘,不知道怎么设置呢?别急,今天就来给你来一场爱心...
适配苹果系统和安卓系统的手表,... 你有没有发现,最近手腕上的小玩意儿越来越受欢迎了呢?没错,说的就是那些集时尚与科技于一身的手表。今天...
安卓系统占用突然增高,揭秘原因... 最近你的安卓手机是不是突然感觉有点卡呢?是不是觉得内存不够用,打开个应用都要等半天?别急,今天就来给...
安卓系统怎样远程桌面windo... 你有没有想过,在安卓手机上也能轻松操控Windows系统呢?没错,这就是今天我要跟你分享的神奇技巧—...
安卓获取系统设置的铃声,解锁个... 你有没有想过,手机里那些悦耳的铃声,其实都是可以自己挑选的?没错,就是那个安卓系统里隐藏的小秘密!今...
安卓多屏操作系统,多维度交互体... 你有没有发现,最近手机屏幕越来越大,操作起来是不是有点儿手忙脚乱?别急,今天就来给你揭秘一个神奇的东...
安卓系统没有通话界面,探索安卓... 你有没有遇到过这种情况?手机屏幕上明明显示着通话界面,但是当你点进去的时候,却发现什么都没有?没错,...
安卓子系统没反应,安卓子系统故... 手机突然卡壳了,安卓子系统没反应,这可怎么办?别急,让我带你一步步排查,找出问题所在,让你的手机重焕...
安卓系统装树莓派,安卓系统下树... 你有没有想过,把安卓系统装到树莓派上,会是个什么样子呢?想象一个迷你的小树莓派,竟然能运行起我们熟悉...
海信操作系统和安卓,打造智能生... 你知道吗?在智能电视的世界里,操作系统可是个大角色呢!今天,咱们就来聊聊海信的操作系统和安卓,看看它...
召唤抽奖系统1.9安卓pc,惊... 你知道吗?最近网上掀起了一股热潮,那就是召唤抽奖系统1.9安卓PC版。这款游戏可是让不少玩家为之疯狂...
安卓如何导入鸿蒙系统文件,鸿蒙... 你有没有想过,让你的安卓手机也来个华丽变身,体验一下鸿蒙系统的魅力呢?别急,今天就来手把手教你如何导...
安卓系统播放sd卡音乐,轻松播... 你有没有遇到过这种情况:手机里存了满满的音乐,却因为系统的问题无法顺畅播放?别急,今天就来给你详细说...