IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python连接neo4j图数据库并写入三元组数据进行可视化展示 -> 正文阅读

[人工智能]Python连接neo4j图数据库并写入三元组数据进行可视化展示

前言

一、安装eno4j图数据库

二、启动neo4j

三、Python连接eno4j

????????3.1、安装py2neo

? ? ? ? 3.2、使用py2neo操作neo4j

四、数据入库

? ? ? ? 4.1、抽取三元组关系

????????4.2、效果展示

? ? ? ? 4.3、删除图库中所有实体和关系

五、合并相同实体


前言

????????本文对非结构化文本数据进行解析成三元组,后写入neo4j图库。记录一些操作代码。在实际项目实战肯定是一体化流程。例如输入一个word文档,需要你对里面的内容进行解析,提取相应的三元组关系,录入图库,可视化展示。完整的项目可视化展示下图所示。但本文记录的主要是录入图库的操作,本文以通俗易懂的脚步出发记录。


一、安装eno4j图数据库

? ? ? ? 官网下载地址:Neo4j Desktop Download | Free Graph Database Download

二、启动neo4j

????????1)解压安装包到电脑任意盘中

????????2)进入文件中的bin目录

????????3)cmd模式打卡当前文件夹,输入eno4j.bat console

? ? ? ? 4)web服务端使用?http://localhost:7474/?打开

三、Python连接eno4j

????????3.1、安装py2neo

pip install py2neo

? ? ? ? 3.2、使用py2neo操作neo4j

from py2neo import Graph, Node, Relationship,NodeMatcher


# 连接图库                            初始化账号密码都是neo4j
graph = Graph('http://localhost:7474', auth=('neo4j', 'neo4j'))


# 注意使用Python连接neo4j时要首先启动neo4j的服务,否则Python会抛出异常。

四、数据入库

? ? ? ? 4.1、抽取三元组关系

? ? ? ? ? ? ? ? 三元组指的就是类似于<头实体,关系、尾实体>的数据集合

from py2neo import Graph, Node, Relationship,NodeMatcher

# 头实体
head = Node("regoin", name='邯郸市')
# 尾实体
tail = Node("regoin", name='河北省')
# 头尾实体关系
entity = Relationship(head,"属于", tail)
# 创建实例
graph.create(entity)



# 头实体
head = Node("regoin", name='丛台区')
# 尾实体
tail = Node("regoin", name='河北省')
# 头尾实体关系
entity = Relationship(head,"属于", tail)
# 创建实例
graph.create(entity)


# 文中相当于这样一个三元组 <邯郸市,属于,河北省>。当然现实场景头尾实体和关系不是自己指定的,需要进行挖掘的。这里就是举个例子理解下。

 

????????4.2、效果展示

? ? ? ? 4.3、删除图库中所有实体和关系

? ? ? ? ? ? ? ? 当图中节点关系复杂、混乱时,选择使用整体删除的方案。代码如下:

def del_all_graph(graph):
    #删除节点
    # 图中所有节点及关系都删除
    y = input("请确认是否要删除图库中所有节点及关系(y/n):")
    if y == 'y':
        graph.delete_all()
        print("已确认删除图库所有节点和关系\n")
    elif y == 'n':
        print("已确认不删除图库所有节点和关系\n")
        pass
    else:
        print("=========请输入正确的提示引导=========\n")
        del_all_graph(graph)




if __name__ == '__main__':
    # 连接图库
    graph = Graph('http://localhost:7474', auth=('neo4j', '123456789'))
    # 确认是否删除图库所有节点
    del_all_graph(graph)


五、合并相同实体

? ? ? ? 目前建立的图关系是两两之间的关系。列如:邯郸属于河北,丛台区属于邯郸。在图中会分成独立的两块,我们的目的是想要合成?邯郸和丛台区都属于河北的关系。使用如下代码就可以在已存在的实例中派生出新的关系,列如一对多的关系。

from py2neo import Graph, Node, Relationship,NodeMatcher

# 这里图库中已经存在邯郸市属于河北省,现在需要添加一个丛台区属于河北省这样的一个关系


# 头实体
head = Node("regoin", name='丛台区')
# 尾实体
tail = Node("regoin", name='河北省')


# 匹配查找图库中节点
matcher = NodeMatcher(graph)
nodelist = list(matcher.match("regoin",name='河北省'))
if len(nodelist) > 0:
    # 表示节点存在,不需创建新的节点
    already_header = nodelist[0] 
    # 可以直接添加关系
    entity = Relationship(head, "属于", already_header)
    graph.create(entity)
else:
    # 表示图库中没有存在当前要写入的节点
    entity = Relationship(head, "属于", tail)
    # 创建关系
    graph.create(entity)

? ? ? ? 对比4.2效果展示:

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:13:20  更:2022-03-03 16:19:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:23:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码