知识图谱:py2neo将csv文件导入neo4j

news2024/11/23 23:34:26

文章目录

        • 安装py2neo
        • 创建节点-连线关系图
        • 导入csv文件
        • 删除重复节点并连接边

安装py2neo

安装python中的neo4j操作库:pip install py2neo
安装py2neo后我们可以使用其中的函数对neo4j进行操作。

图数据库Neo4j中最重要的就是结点和边(关系),结点之间靠边联系在一起,每个结点也有属于自己的属性。

也就是说我们在用pyhton操作Neo4j的时候只需要创造出节点(Node )和节点之间的关系:边(Relationship ),如果节点存在附加属性,可以再给结点附上一些属性。

注意: 在我们用python的时候我们必须启动Neo4j。如图所示,点击connect进行连接。

在这里插入图片描述

创建节点-连线关系图

下面我们就创建三个结点,每个结点有两个属性,两结点之间有一个关系。

from py2neo import Graph, Node, Relationship
# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", name="neo4j", password='xxx')
graph.delete_all() #清除neo4j中原有的结点等所有信息

# 创建结点
node1 = Node('person', name = 'chenjianbo')   #该结点语义类型是person  结点名字是chenjianbo  也是它的属性
node2 = Node('major',name = 'software')       #该结点语义类型是major  结点名字是software  也是它的属性
node3 = Node('person',name = 'bobo')          #该结点语义类型是person  结点名字是bobo   也是它的属性


#给结点node1 添加一个属性 age
node1['age'] = 18
#给结点node2 添加一个属性 college
node2['college'] = 'software college'
#给结点node3 添加一个属性 sex
node3['sex'] = '男'

#把结点实例化 在Neo4j中显示出来
graph.create(node1)
graph.create(node2)
graph.create(node3)
# 创建关系
maojor = Relationship(node1, '专业', node2)
friends = Relationship(node1, '朋友', node3)
maojor1 = Relationship(node3, '专业', node2)
#把关系实例化 在Neo4j中显示出来
graph.create(maojor)
graph.create(maojor1)
graph.create(friends)

在这里插入图片描述

导入csv文件

该网站有大量汇总的知识图谱数据集,可供学习使用。
http://openkg.cn/dataset

在这里插入图片描述

周杰伦歌曲知识数据集csv,应用三元组的形式将歌曲歌手所属专辑联系在一起。

在这里插入图片描述

  • dataframe格式读入数据
import pandas as pd

df = pd.read_csv('relation.csv',index_col=0)

df
	Column1	Column2	Column3
id			
1	Dare for more	周杰伦	歌手
2	Dare for more	蔡依林	歌手
6	Mine Mine	惊叹号	所属专辑
7	Now You See Me	周杰伦	歌手
8	Now You See Me	方文山	作词
...	...	...	...
624	最后的战役	周杰伦	歌手
625	最后的战役	方文山	作词
626	最后的战役	八度空间	所属专辑
627	最长的电影	周杰伦	歌手
628	最长的电影	我很忙	所属专辑
  • 使用py2neoneo4j添加节点和边
graph.delete_all() #清除neo4j中原有的结点等所有信息

for index,row in df.iterrows():
    node1 = Node('person',name=row[0])
    node2 = Node('person',name=row[1])
    
    graph.create(node1)
    graph.create(node2)
    
    each = Relationship(node1, row[2], node2)
    graph.create(each)

在这里插入图片描述
这样生成的知识图谱只是简单的节点-边的关系,存在大量冗余的实体entity

可以通过neo4j的删除方法将重复节点进行删除,之后将边重新连接。

删除重复节点并连接边

查询重复节点,如果有重复节点就不create。这样节点和边全部联系在一起,形成完整的没有冗余的知识图谱。

目前的缺点是节点Node的命名都是以person命名,所以节点暂时没有区分。

graph.delete_all() #清除neo4j中原有的结点等所有信息
from py2neo import NodeMatcher
entity = []

for index,row in df.iterrows():
    if row[0] not in entity:
        entity.append(row[0])
        node1 = Node('person',name=row[0])
        graph.create(node1)
    else:
        node_matcher = NodeMatcher(graph) 
        node1 = list(node_matcher.match('person').where(name=row[0]))[0]
        print(node1)

    if row[1] not in entity:
        entity.append(row[1])  
        node2 = Node('person',name=row[1])
        graph.create(node2)
    else:
        node_matcher = NodeMatcher(graph) 
        node2 = list(node_matcher.match('person').where(name=row[1]))[0]
        print(node2)
        
    each = Relationship(node1, row[2], node2)
    graph.create(each)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1452124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字经济政策 | ZF工作报告-60个文本词频

根据各省政府工作报告,参考金灿阳(2022)和陶长琪(2022),借助Python软件,统计数字经济相关的关键词词频,分别记为数字经济政策词频A、数字经济政策词频B A文献参考 B文献参考 年度趋势 一、数据介绍 数据名称: 政府工…

OpenAI首个文生视频模型亮相,你觉得咋样?

2月16日凌晨,OpenAI再次扔出一枚深水炸弹,发布了首个文生视频模型Sora。据介绍,Sora可以直接输出长达60秒的视频,并且包含高度细致的背景、复杂的多角度镜头,以及富有情感的多个角色。 目前官网上已经更新了48个视频d…

QGIS004:【08图层工具箱】-导出到电子表格、提取图层范围

摘要:QGIS图层工具箱常用工具有导出到电子表格、提取图层范围等选项,本文介绍各选项的基本操作。 实验数据: 链接:https://pan.baidu.com/s/1ZK4_ShrQ5BsbyWfJ6fVW4A?pwdpiap 提取码:piap 一、导出到电子表格 工具…

集团企业大数据应用:突破痛点,释放数据价值

在数字经济日益崛起的背景下,集团企业以其管理范围广泛、业务领域多元化和分支机构复杂化的特性,在市场竞争中扮演着重要角色。为了维持和提升这种竞争力,大数据应用成为了集团企业不可或缺的战略工具。然而,在实际应用中&#xf…

图表示学习 Graph Representation Learning chapter1 引言

图表示学习 Graph Representation Learning chapter1 引言 前言1.1图的定义1.1.1多关系图1.1.2特征信息 1.2机器学习在图中的应用1.2.1 节点分类1.2.2 关系预测1.2.3 聚类和组织检测1.2.4 图分类、回归、聚类 前言 虽然我并不研究图神经网络,但是我认为图高效的表示…

javascript+css+html购物车案例

javascript代码部分主要实现三部分功能 1、商品数量增加(减少)同时小计增加(减少) 这部分主要是通过for循环给增加(减少)按钮绑定点击事件 1)点击后计数器自增(自减)…

【深度学习:开源数据注释】开源数据注释完整指南

【深度学习:Automated Data Annotation】开源数据注释完整指南 什么是开源数据标注工具?您会使用开源标签工具做什么?主要的开源数据标注工具有哪些?CVATMONAI LabelLabelMeRIL-ContourSefexa 使用开源注释工具的优点和缺点是什么…

Sora:将文本转化为视频的创新之旅

一.能力 我们正致力于让 AI 掌握理解和模拟物理世界动态的能力,旨在培养能够协助人们解决现实世界互动问题的模型。 介绍 Sora——我们开发的文本到视频转换模型。Sora 能够根据用户的输入提示,生成最长达一分钟的高质量视频内容。 目前,Sora…

Gitee入门之工具的安装

一、gitee是什么? Gitee(码云)是由开源中国社区在2013年推出的一个基于Git的代码托管平台,它提供中国本土化的代码托管服务。它旨在为个人、团队和企业提供稳定、高效、安全的云端软件开发协作平台,具备代码质量分析、…

揭开Markdown的秘籍:引用|代码块|超链接

🌈个人主页:聆风吟 🔥系列专栏:Markdown指南、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️Markdown 引用1.1 🔔引用1.2 🔔嵌套引用1.3 &…

【Python---六大数据结构】

🚀 作者 :“码上有前” 🚀 文章简介 :Python 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python---六大数据结构 往期内容前言概述一下可变与不可变 Number四种不同的数值类型Number类型的创建i…

【Spring篇】Spring的创建与使用

目录 一 . 创建Spring项目 二 . Bean 对象存放到 Spring 三 . 从Spring中读到Bean 经过前⾯的学习我们已经知道了,Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么 它就具备两个最基本的功能: 将对象存储到容器(Spring&am…

optee CA/TA flow

以 TEEC_InvokeCommand 为例 CA—normal world EL0 //imx-optee-client\libteec\src\tee_client_api.c TEEC_InvokeCommandioctl(session->ctx->fd, TEE_IOC_INVOKE, &buf_data)通过syscall陷入内核态driver linux driver—normal world EL1 tee_ioctl // drive…

一些方便的记录

如何在ubutun上安装qq 在QQ官网选择QQ Linux版本,然后选择X86下的deb类型文件进行下载 sudo dpkg -i linuxqq_3.2.5-21453_amd64.deb64 根据下载的版本不同对其进行更改 运行上述命令后显示应用程序可以看到安装后的QQ面板如何卸载安装在gnuradio的lora组件 - 进入…

php基础学习之可变函数(web渗透测试关键字绕过rce和回调函数)

可变函数 看可变函数的知识点之前,蒟蒻博主建议你先去看看php的可变变量,会更加方便理解,在本篇博客中的第五块知识点->php基础学习之变量-CSDN博客 描述 当一个变量所保存的值刚好是一个函数的名字(由函数命名规则可知该值必…

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

电子元器件基础5---二极管

除了电阻、电容和电感等线性元器件之外,还有二极管、三极管这些常用的非线性器件广泛应用于日常生活中。那么今天我们来介绍以下二极管这一常用的电子元器件。 一、二极管概念 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件 。二极管有两个电极,正极,又叫阳极;负…

07-k8s中secret资源02-玩转secret

一、回顾secret资源的简单实用 第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中; 第二步:创建secret资源; 第三步:pod资源引用secret资源&…

VMware Workstation 17.0 虚拟机安装MS-DOS 7.1完整详细步骤图文教程

VMware Workstation 17.0 虚拟机安装MS-DOS 7.1完整详细步骤图文教程 一、配置MS-DOS虚拟机机器环境二、安装MS-DOS磁盘操作系统 一、配置MS-DOS虚拟机机器环境 1.打开VMware Workstation Pro 2.新建虚拟机 3.建议选择【典型】,之后点击【下一步】 关于【自定义…

嵌入式Qt Qt中的信号处理

一.Qt中的信号处理 Qt消息模型: - Qt封装了具体操作系统的消息机制 - Qt遵循经典的GUI消息驱动事件模型 Qt中定义了与系统消息相关的概念; Qt中的消息处理机制: Qt的核心 QObject::cinnect函数: Qt中的“新”关键字: 实验1 初探…