知识图谱:py2neo导入周杰伦歌单csv文件

文章目录

        • py2neo导入csv文件
        • py2neo导入周杰伦歌单csv
        • 效果展示

py2neo导入csv文件

之前写的知识图谱指南
知识图谱:py2neo将csv文件导入neo4j

在这里插入图片描述
因为没有区分不同实体entity的类型,所以颜色相同,无法相互区分歌手、歌曲还是专辑等等。

py2neo导入周杰伦歌单csv

如果以普通三元组的形式导入周杰伦歌单csv,会出现很多实体entity的冗余,无法形成完整的知识图谱。

通过添加对前两列的描述,则可以对第一列和第二列进行分类查询,此时如果实体entity已经存在,则不建立新的节点Node。
在这里插入图片描述

from py2neo import Graph, Node, Relationship
# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", name="neo4j", password='xxxx')
import pandas as pddf = pd.read_csv('relation.csv',index_col=0)df
  • 代码改进
    如果节点没有被创建过,那么正常创建即可;
    如果节点已经被创建过,那么通过py2neomatch函数进行节点查询,之后建立关系Relationship
graph.delete_all() #清除neo4j中原有的结点等所有信息from py2neo import NodeMatcher
entity = []for index,row in df.iterrows():print(entity)if row[0] not in entity:entity.append(row[0])node1 = Node(row[-2],name=row[0])graph.create(node1)else:node_matcher = NodeMatcher(graph)#print(list(node_matcher.match(row[-2]).where(row[0]))) node1 = list(node_matcher.match(row[-2]).where(name=row[0]))[0]if row[1] not in entity:entity.append(row[1])  node2 = Node(row[-1],name=row[1])graph.create(node2)else:node_matcher = NodeMatcher(graph) node2 = list(node_matcher.match(row[-1]).where(name=row[1]))[0]each = Relationship(node1, row[2], node2)graph.create(each)
效果展示
  • 保留50个实体
    在这里插入图片描述
  • 保留100个实体
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「算法」二分查找1:理论细节

🎇个人主页:Ice_Sugar_7 🎇所属专栏:算法详解 🎇欢迎点赞收藏加关注哦! 二分查找算法简介 这个算法的特点就是:细节多,出错率高,很容易就写成死循环有模板,但…

C++中的拷贝构造函数

一、拷贝构造函数的概念 拷贝构造函数用于创建一个与已有对象相同的对象,本质上也是构造函数的重载 拷贝构造函数只有一个类型为 const 类类型引用的形参,当我们要创建一个与已存在对象相同的对象时,由编译器自动调用拷贝构造函数。 clas…

C++--Linux基础使用

文章目录 几个简单命令开机关机重启查看当前目录切换当前目录列出当前目录下的目录和文件列出指定目录下的目录和文件清屏查看/设置时间 目录和文件目录概要目录详细说明相对路径和绝对路径 上古神器vi创建/打开文件vi 的两种模式vi 的常用命令 用户管理组管理用户管理修改用户…

java 调用智谱ai 大模型的完整步骤(国内的 AI 大模型 对话)

要使用java 调用智谱AI的API进行异步调用,您需要遵循以下步骤: 1. **获取API密钥**: - 您需要从智谱AI平台获取一个API密钥(API Key),这个密钥将用于所有API请求的身份验证。 2. **SDK源…

RocketMQ—RocketMQ消费重试和死信消息

RocketMQ—RocketMQ消费重试和死信消息 消费重试 生产者重试 设置重试的代码如下 // 失败的情况重发3次 producer.setRetryTimesWhenSendFailed(3); // 消息在1S内没有发送成功,就会重试 producer.send(msg, 1000);一般情况下,我们不会在生产者方进行…

Spring 事务原理总结六

不知不觉,关于Spring事务的文章已经写了五篇了。老实讲我自己不断质疑过自己:现在写这些文章还有意义吗?当前的市场已经成什么样了,为什么还要固守这落后的技术?但是贝索斯一次接受访谈的回答,让我写下去的…

C++多重继承

C多重继承 C中的多重继承是指一个类可以从多于一个的基类派生出来,这允许在一个派生类中继承多个基类的特性和行为。多重继承增加了C的灵活性和表达能力,但同时也带来了一些复杂性,如菱形继承问题和潜在的命名冲突。 基本用法 定义一个多重…

【Spring篇】 项目加盐加密处理

目录 1. MD5 加密算法 2. 加盐加密流程 3. Spring Security 实现加盐加密 1. 添加 Spring Security 框架 2. 关闭 Spring Security 认证 3.实现加盐加密 1. MD5 加密算法 MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java …

电梯控制系列之电梯结构介绍

这篇博客介绍单部10层电梯的完整控制程序框架编写过程,编程语言:SCL,控制器型号:S7-1200PLC。本篇博客介绍和电梯控制相关的一些电梯结构介绍。本文只可作为学习参考资料,行业控制需要遵循电梯安全相关规范。 1、电梯…

线程和进程【并发和并行、线程上下文切换、线程的状态】

线程和进程【并发和并行、线程上下文切换、线程的状态】 什么是并发与并行?什么是线程上下文切换?线程状态:一个线程的一生 转自 极客时间 进程:是指内存中运行的一个应用程序,每个进程都有自己独立的内存空间&#x…

JavaSE-03笔记【继承~super】

文章目录 1. 继承1.1 继承概述(理解)1.2 如何继承(掌握)1.2.1 继承的语法格式1.2.2 具体举例 1.3 继承的相关特性(掌握)1.4 对继承自Object类的方法的测试(理解)1.5 难点解惑1.5.1 掌…

Switch开关(antd-design组件库)简单使用

1.Switch开关 开关选择器。 2.何时使用 需要表示开关状态/两种状态之间的切换时; 和 checkbox 的区别是,切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。 组件代码来自: 开关 Swit…