2 构建红楼梦关系图谱

本文介绍了如何使用Python库py2neo连接并操作Neo4j知识图谱数据库,包括导入数据构建图谱、查询特定实体的关系以及寻找两个实体间的最短路径。此外,还概述了企业级项目中从非结构化数据提取结构化信息并构建知识图谱的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 导入相关的包

import csv
import py2neo
from py2neo import Graph, Node, Relationship, NodeMatcher

2 连接neo4j知识图谱数据库

g = Graph('http://localhost:7474', user = 'neo4j', password = 'neo4j') # 此处为系统默认的密码

3 导入数据并构建知识图谱

with open('triples.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for item in reader:
        if reader.line_num == 1:
            continue # 第一行是数据项,直接跳过
        print('当前行数', reader.line_num, '当前内容:', item)
#         当前行数 2 当前内容: ['贾代善', '贾源', 'son', '子']
#         当前行数 3 当前内容: ['娄氏', '贾源', 'daughter_in_law_of_grandson', '重孙媳妇']
#         当前行数 4 当前内容: ['贾母', '贾代善', 'wife', '妻']
        start_node = Node('Person', name=item[0])
        end_node = Node('Person', name = item[1])
        relation = Relationship(start_node, item[3], end_node)
        g.merge(start_node, 'Person', 'name')
        g.merge(end_node, 'Person', 'name')
        g.merge(relation, 'Person', 'name')
      
  • 效果图:
  • 在这里插入图片描述

4 查询操作

# 查询贾宝玉的丫鬟:
g.run("Match (p:Person{name: '贾宝玉'})-{k: 丫鬟}-(r)") return(p,k,r);")
  • 效果图:
  • 在这里插入图片描述
# 查询贾宝玉和香菱之间的最近关系
g.run("""match (p1:Person {name:"贾宝玉"}), (p2:Person{name:"香菱"}),  \
                p=shortestpath((p1)-[*..10]-(p2)) return p;""")
  • 效果图:
    在这里插入图片描述

企业级项目的步骤

  • 运用自然语言处理方法(用深度学习或者机器学习实现)从非结构化数据中提取结构化数据,存入数据库;
  • 将结构化数据提取出来,编写代码进行处理,展现为一张较大的知识图谱;
  • 从用户输入的一些数据,比如问答系统,推荐系统情境中,提取其中的实体和关系;
  • 转化所为知识图谱的查询语句,提取和用户输入相关的实体和关系;
  • 再次通过自然语言处理技术将提出到的实体和关系,转化为可读的形式(图或者自然语言),呈现给用户。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值