Neo4j导入思知OwnThink开源的知识图谱

简介: 导入OwnThink开源的亿级知识三元组到 Neo4j中

环境:

1.Neo4j database: 4.0.1 (是Neo4j graph数据库版本,非 neo4j desktop版本)

2.jdk11 (neo4j 4.0.1要求jdk需要11)

OwnThink开源了史上最大规模(1.4亿)中文知识图谱,地址:https://github.com/ownthink/KnowledgeGraphData

image.png

下载解压后查看知识图谱规模:

$ wc -l ownthink_v2.csv

140919781 ownthink_v2.csv

在github开源地址下可以找到阿里巴巴的一个下载数据源(链接 https://nebula-graph.oss-accelerate.aliyuncs.com/ownthink/kg_v2.tar.gz),下载之后解压,打开其中的 read_first.txt ,下载好简单清洗后的edge.csv和vertex.csv。

image.png

可以看到数据量很大,在阿里巴巴的压缩包中,还有一篇pdf文档,介绍了将数据导入nebula 图数据库中的步骤以及edge.csv和vertex.csv的格式,这里简单贴一下数据格式:

image.png                                                                                             vertex.csv数据格式

image.png                                                                                        edge.csv数据格式

在网上找了一下如何导入到neo4j中,参考了:https://yuukiblog.top/2019/10/16/neo4j%E5%AF%BC%E5%85%A5%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1%E5%88%9D%E4%BD%93%E9%AA%8C/

Neo4j要求的数据格式(不清楚其他的格式能否导入):

entity.csv —— 作为图数据库中的实体::ID,name,:LABEL

:ID name :LABEL
实体id(不可重复) 实体名 实体标签

rel.csv —— 作为实体的关系: :START_ID,name,:END_ID,:TYPE

:START_ID name :END_ID :TYPE
实体ID 关系名 实体ID 类型

因此,首先在阿里巴巴清洗后的文本基础上将文件格式转成符合我们要求的格式。限于篇幅,代码这里就不贴了,如果有需要可以给我留言。最终转成的数据格式如下,使用Python读出了前10行:

image.png

转成需要的格式之后即可准备进行导入。首先将转换后的两个文件放入neo4j安装路径下的import文件夹。如果不知道在哪,可以通过Neo4j desktop打开本地的一个图数据库,点击Manage: image.png

点击open folder即可打开import文件夹。image.png

由于版本差异,上述文章中的导入命令无法运行,经过修改测试,个人使用如下格式成功进行导入:

./neo4j-admin import --database graph.db  --nodes=../import/vertex_new_form.csv  --relationships=../import/edge_new_form.csv --ignore-extra-columns=true  --skip-duplicate-nodes=true --skip-bad-relationships=true

注:网上很多版本说需要先删除databases文件夹下的graph.db文件夹,从本人测试来看,完全不需要,上述命令中的graph.db可任意更换名称。

如果数据运行正确,会出现一下画面,首先确定导入需要的资源(对内存还是有一定要求的): image.png

接着导入节点:

image.png

导入关系:

image.png

建立关系:image.png

完成:image.png

最终导入,csv格式中还是有错误的数据,因此设置了 skip-bad-relationships

IMPORT DONE in 19m 10s 463ms.
Imported:
  45464785 nodes
  139916576 relationships
  185380388 properties
Peak memory usage: 688.9MiB
There were bad entries which were skipped and logged into

下面即需要将数据库进行展示,新建的graph默认有两个数据库,对应databases文件夹下的两个文件夹:neo4j和system。不知道为何使用上述命令导入之后新增的graph.db(名字和命令中的database参数有关)无法显示,也可能是本来就不会显示。。。

image.png

没办法,只能通过其他办法。对比了一下几个文件夹下的内容,发现可以将graph.db先dump再载入到现有的某个数据库几个,成功实现:

进入到安装目录的bin文件夹下,需要先新建好 dump 文件的目录:dump:

./neo4j-admin dump --database=graph.db --to=../backups/graph/2020-3-16.dump

在load到现有的数据库中,因为我原有的两个数据库是空的,不清楚是否会抹除已有的数据(when use –force  option, any existing database gets overwritten),load:

./neo4j-admin load --from=../backups/graph/2020-3-16.dump --database=neo4j --force

更多参数参考: https://neo4j.com/docs/operations-manual/current/tools/dump-load/

接下来,在graph中选择你导入的数据库即可看到了,简单查询一下:

image.png

后续工作:

  1. 由于数据量较大,检索的时间较慢,后续看看有哪些优化查询速度的;
  2. 个人使用知识图谱主要服务于智能问答,下一步就是思考如何结合知识图谱做好智能问答了。

update: 针对第一条,发现将检索的范围指定能加快检索速度,即:

MATCH p = (n1:ENTITY)-[r:RELATIONSHIP]->(n2:ENTITY) where n1.name ="微软" RETURN p

相关文章
|
自然语言处理 机器人 API
GitHub开源史上最大规模中文知识图谱
GitHub开源史上最大规模中文知识图谱
GitHub开源史上最大规模中文知识图谱
|
算法 测试技术 定位技术
数据结构与算法——DFS(深度优先搜索)
数据结构与算法——DFS(深度优先搜索)
|
算法 新能源 数据安全/隐私保护
新能源汽车超级电容和电池能量管理系统的simulink建模与仿真
本课题针对新能源汽车能量管理系统(EMS)展开研究,重点探讨超级电容器与电池的协同工作。通过MATLAB2022a的Simulink建模与仿真,实现高效能量分配,延长行驶里程。系统采用Thevenin模型描述电池特性,结合功率分配控制、状态估计及协调控制策略,优化超级电容器和电池的能量流动,充分发挥两者高功率密度与高能量密度的优势,满足瞬时大功率需求并提升整体能效。
|
C语言
C语言入门——printf(““)左对齐与右对齐问题
C语言入门——printf(““)左对齐与右对齐问题
2265 0
C语言入门——printf(““)左对齐与右对齐问题
|
8月前
|
传感器 人工智能 安全
AI + 视频监管:构筑智慧工地全场景安全防线
融合AI与物联网技术,智慧工地视频监管系统实现人员、设备、环境全维度智能管控,通过主动预警、全域覆盖、数据闭环,提升安全隐患识别效率,降低事故率67%,减少巡检成本40%,推动建筑安全管理迈向智能化、精细化新阶段。
911 0
|
机器学习/深度学习 小程序 测试技术
全新GLM模型登场:9B/32B系列模型全面开源,性能媲美顶尖选手,MIT协议商用无忧!
智谱开源 32B/9B 系列 GLM 模型,涵盖基座、推理、沉思模型,均遵循 MIT 许可协议。该系列模型现已发布魔搭社区。其中,推理模型 GLM-Z1-32B-0414 性能媲美 DeepSeek-R1 等顶尖模型,实测推理速度可达 200 Tokens/秒。
1130 3
全新GLM模型登场:9B/32B系列模型全面开源,性能媲美顶尖选手,MIT协议商用无忧!
|
机器学习/深度学习 JSON 监控
国内最大的MCP中文社区来了,4000多个服务等你体验
国内最大的MCP中文社区MCPServers来了!平台汇聚4000多个服务资源,涵盖娱乐、监控、云平台等多个领域,为开发者提供一站式技术支持。不仅有丰富的中文学习资料,还有详细的实战教程,如一键接入MCP天气服务等。MCPServers专注模块稳定性和实用性,经过99.99% SLA认证,是高效开发的理想选择。立即访问mcpservers.cn,开启你的开发之旅!
14964 16
|
域名解析 网络协议 安全
DNS服务器地址大全
DNS(域名系统)是互联网的“电话簿”,将域名解析为IP地址。选择优质DNS服务器可提升网络速度、降低延迟。以下是全球及中国各运营商的DNS服务器列表,包括公共DNS(如Google DNS、Cloudflare DNS)、中国电信、联通、移动等。根据地理位置、稳定性、安全性与隐私保护等因素选择适合的DNS服务器,优化上网体验。
50767 6
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
2114 6
|
人工智能 测试技术 Windows
Windows 竞技场:面向下一代AI Agent的测试集
【10月更文挑战第25天】随着人工智能的发展,大型语言模型(LLMs)在多模态任务中展现出巨大潜力。为解决传统基准测试的局限性,研究人员提出了Windows Agent Arena,一个在真实Windows操作系统中评估AI代理性能的通用环境。该环境包含150多个多样化任务,支持快速并行化评估。研究团队还推出了多模态代理Navi,在Windows领域测试中成功率达到19.5%。尽管存在局限性,Windows Agent Arena仍为AI代理的评估和研究提供了新机遇。
506 3