windows下neo4j安装及配置,并绘制人物关系图谱

236 篇文章 43 订阅
39 篇文章 5 订阅

neo4j安装及配置,绘制人物关系图谱

  1. 先升级pip,安装py2neo
pip install py2neo==2021.0.1
  1. 依赖 jdk1.8, neo4j 3.xx;
    或者jdk18,neo4j 4.x,5.x;
    官网下载了neo4j4.x,5.x 因为jdk版本原因都不行,最终选择了neo4j3.xx

neo4就 5.x,4.x都不行,与java1.8不兼容,最后安了3.5.31 ok,忽略文件夹名称为了不用重复配置环境变量 NEO4j_HOME及path
在这里插入图片描述

终于安装好了✌ ✌ ✌

在这里插入图片描述

1. 效果图

人物图谱效果图如下:

在这里插入图片描述

在这里插入图片描述
群山回唱人物关系图谱 效果图如下:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2. 源码

# 生成人物关系图谱

import pandas as pd
from py2neo import Graph, Node, Relationship

# 字段映射字典
mapping_dict = {"发生时间": "occurrence_time",
                "发布时间": "release_time",
                "发生地点": "scene",
                "死亡人数": "death_toll",
                "受伤人数": "injury_toll",
                "直接损失": "direct_loss",
                "事故主体单位": "accident_unit",
                "灾害事故类型": "accident_type",
                "防范与整改": "prevention_rectification",
                "处理建议": "treatment_recommendations",
                "应急措施": "emergency_measure",
                "直接原因": "immediate_cause",
                "严重程度": "order_severity",
                "应急响应": "emergency_response"}
# 读取文件
storage_df = pd.read_csv('files/new.csv', encoding='utf-8')
# 获取列标签
columns_list = storage_df.columns.tolist()
# 获取数据条数
nums = len(storage_df['title'])
# 删除title列标签
columns_list.remove('title')
# 逆转映射字典
new_dic = dict(zip(mapping_dict.values(), mapping_dict.keys()))

# 连接数据库,输入个人配置
graph = Graph("http://localhost:7474/", username='neo4j', password='neo4j123456', run="sub")
# 清空全部数据
graph.delete_all()
# 开启一个新的事务
graph.begin()

for i in range(nums):
    data_dict = {}
    title = storage_df['title'][i]
    for columns in columns_list:
        if str(storage_df[columns][i]) != 'nan':
            data_dict[columns] = storage_df[columns][i]
    # 创建事件节点(主节点),节点属性
    node1 = Node("case", name=title, **data_dict)
    graph.create(node1, 'case', 'name')
    # 删除id列
    data_dict.pop('id')
    # 创建关系与副节点
    for key, value in data_dict.items():
        # 创建副节点
        node2 = Node(key, name=value)
        graph.create(node2, key, 'name')
        # 创建关系
        rel = Relationship(node1, new_dic[key], node2, type=key)
        print(new_dic[key])
        graph.create(rel)

2.1 群山会唱人物关系图谱

# python plot_qshc_rwtp.py
# 对群山回唱人物关系图谱进行绘制

from py2neo import Graph, Node, Relationship

# 连接数据库,输入个人配置
graph = Graph("http://localhost:7474/", username='xx', password='xx', run="sub")
# 清空全部数据
graph.delete_all()
# 开启一个新的事务
graph.begin()

dict_nodes = {}
with open("qshc.txt", 'r', encoding='utf-8', errors='ignore') as f:
    data = f.readlines()
    print(data)

    for i, line in enumerate(data):
        print(i, line.replace("\n", ""))
        node_a = line.split(",")[0]
        node_b = line.split(",")[1]
        relation = line.split(",")[2]

        # 创建副节点
        node1 = None
        node2 = None
        if (dict_nodes.__contains__(node_a)):
            node1 = dict_nodes.get(node_a)
        else:
            node1 = Node(node_a, name=node_a)
            graph.create(node1)
            dict_nodes[node_a] = node1
        if (dict_nodes.__contains__(node_b)):
            node2 = dict_nodes.get(node_b)
        else:
            node2 = Node(node_b, name=node_b)
            graph.create(node2)
            dict_nodes[node_b] = node2

        # 创建关系
        rel = Relationship(node1, relation, node2, type='key')
        graph.create(rel)

参考

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
人物关系图谱是一种基于图数据库的数据可视化方式,可以用于展示人物之间的关系。而neo4j是一种流行的图数据库,可以用于存储和查询大规模的图数据。下面是一个简单的介绍和演示: 人物关系图谱通常由节点和边组成,其中节点表示人物,边表示人物之间的关系。在neo4j中,节点和边都可以有属性,这些属性可以用于描述节点和边的特征。例如,一个人物节点可以有姓名、性别、出生日期等属性,一个关系边可以有关系类型、开始时间、结束时间等属性。 要创建一个人物关系图谱,首先需要定义节点和边的标签和属性。例如,可以定义一个Person节点标签,包含name、gender、birthday等属性,定义一个Relation边标签,包含type、start_time、end_time等属性。然后,可以使用Cypher语言编写图库语句来创建节点和边,并将它们添加到neo4j数据库中。例如,下面是一个简单的Cypher语句,用于创建两个人物节点和一条关系边: ``` CREATE (p1:Person {name: 'Alice', gender: 'female', birthday: '1990-01-01'}) CREATE (p2:Person {name: 'Bob', gender: 'male', birthday: '1995-02-02'}) CREATE (p1)-[r:Relation {type: 'friend', start_time: '2020-01-01', end_time: '2021-01-01'}]->(p2) ``` 这个语句创建了两个Person节点,一个名为Alice,一个名为Bob,以及一条Relation边,表示Alice和Bob之间有一个朋友关系,开始于2020年1月1日,结束于2021年1月1日。 创建完节点和边之后,可以使用Cypher语句查询和修改图数据。例如,下面是一个简单的Cypher语句,用于查询所有的Person节点和Relation边: ``` MATCH (p:Person)-[r:Relation]->(q:Person) RETURN p, r, q ``` 这个语句查询了所有的Person节点和Relation边,并将它们返回。 最后,可以使用各种工具和库来可视化人物关系图谱。例如,可以使用Python的matplotlib库和py2neo库来绘制图形,也可以使用JavaScript的d3.js库和neovis.js库来创建交互式图形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛一枚~

您的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值