知识图谱——从零开始用neo4j框架对csv文件构建知识图谱(三)——构建知识图谱

知识图谱——从零开始用neo4j框架对csv文件构建知识图谱(一)——安装neo4j
知识图谱——从零开始用neo4j框架对csv文件构建知识图谱(二)——构建三元组
1.构建实体文件和关系文件
在上文我们最后得出了entity-relation.csv,接下来我们对其拆分为实体和关系两个文件

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import pandas as pd
import csv

# 读取三元组文件
h_r_t_name = [":START_ID", "role", ":END_ID"]
h_r_t = pd.read_table("entity_relation.csv", decimal="\t", names=h_r_t_name,delimiter=",")
# print(h_r_t.info())
# print(h_r_t.head())

# 去除重复实体
entity = set()
entity_h = h_r_t[':START_ID'].tolist()
entity_t = h_r_t[':END_ID'].tolist()
for i in entity_h:
    entity.add(i)
for i in entity_t:
    entity.add(i)
print(entity)
# 保存节点文件
csvf_entity = open("entity.csv", "w", newline='', encoding='utf-8')
w_entity = csv.writer(csvf_entity)
# 实体ID,要求唯一,名称,LABEL标签,可自己不同设定对应的标签
w_entity.writerow(("entity:ID", "name", ":LABEL"))
entity = list(entity)
entity_dict = {}
for i in range(len(entity)):
    w_entity.writerow(("e" + str(i), entity[i], "my_entity"))
    entity_dict[entity[i]] = "e" + str(i)
csvf_entity.close()
# 生成关系文件,起始实体ID,终点实体ID,要求与实体文件中ID对应,:TYPE即为关系
h_r_t[':START_ID'] = h_r_t[':START_ID'].map(entity_dict)
h_r_t[':END_ID'] = h_r_t[':END_ID'].map(entity_dict)
h_r_t[":TYPE"] = h_r_t['role']
h_r_t.pop('role')
h_r_t.to_csv("roles.csv", index=False)

entity.csv文件如下图
在这里插入图片描述

roles.csv文件如下图所示
在这里插入图片描述

2.调用neo4j构建知识图谱

在命令行输入neo4j-admin.bat import --nodes D:\python_workplaces\get_kg\entity.csv --relationships D:\python_workplaces\get_kg\roles.csv(对于换成自己的链接)
成功的话会在data文件夹下的databases文件夹下出现graph.db
在这里插入图片描述
这时候重新打开一个新的命令行,输入neo4j.bat console,打开http://localhost:7474/browser/,登陆,左侧点击,
在这里插入图片描述

即会看到
在这里插入图片描述

说明成功了
3.失败的问题有
(1)实体错误,常见为实体不是一行输入的,是多行,出错信息中出现e222 error字样,修改为一行即可
(2)关系对应上,常见为没有该实体,,出错信息为e222 missing,把出错的实体补上就行,我才用的是把其设置为一个error实体
(3)出现NAN实体,把这个实体及其关系去掉即可,或者一开始就不把nan作为一个实体

  • 11
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值