Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通用知识图谱导入Neo4j——以ownthink为例

通用知识图谱导入Neo4j——以ownthink为例

原创
作者头像
轻吻晴雯
修改于 2019-06-28 01:43:14
修改于 2019-06-28 01:43:14
5.8K02
代码可运行
举报
文章被收录于专栏:杂文共赏杂文共赏
运行总次数:2
代码可运行

前言

http://openkg.cn/

这个网站里有很多通用知识图谱。尤其是网站整合的ownthikhttps://kg.ownthink.com/还可以进行可视化检索。

https://kg.ownthink.com/

那么我们是否可以将这个ownthik导入自己的Neo4j数据库呢?

电脑配置

Win7旗舰版

4CPU+8GB内存

i5-6500@3.2GHz

1TB机械硬盘

Neo4j社区版3.5.6

初步了解

首先网站提供了下载,是一个大约800MB的压缩包,解压了有2.8GB左右。包括网站提供的其他图片数据,大多都以文本形式存储。

这么大的txt文件,必须要用一些工具才能打开,普通的txt游览器,包括notepad都是打不开的。

我使用了PilotEdit来打开。

打开预览

可以看到,都是一些文本三元组格式。

经过尝试,发现必须使用neo4j-admin import命令才能导入。LOAD CSV等都是不行的,import用时1h,LOAD CSV可能要500小时。而neo4j-admin需要一个实体csv(entity.csv),和一个关系csv(Relationship.csv)。

参考这个https://blog.csdn.net/paopaopotter/article/details/81779575

实体csv可以有2个,但我们只需要一个就够了。其中entity.csv的格式必须有:ID,name,:LABLE三个字段。而relationship.csv必须有:START_ID,name,:END_ID,:TYPE四个字段。如下:

entity.csv

relationship.csv

数据处理及导入

首先数据并不是标准的csv格式,csv格式使用逗号做分隔符,而这里使用的是\t。其次数据中有很多项是缺失的,这将导致导入失败。最后,txt中的三元组格式也不符合导入的要求。

如此大的文本,想要一次性加载入内存然后进行处理显然也不是正确的处理方式。如果以后面临200G的文本,难道也全加载入内存吗。在网上找到一些处理三元组为entity.csv和relationship.csv的python代码,但是代码是整个读入文件,然后使用map函数,我认为这样做不行,就没试了,不然等半天报一个Out of Memory就不好了。

首先一行一行的读入,把空值所在的行都删掉,写入一个新的CSV中,进行去空处理。然后编写脚本进行处理。

把左右实体都给他一个唯一的ID,如entity1、entity2....,并在CSV文件里写入对应关系就行了。如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
姚明  英文名 YaoMing
姚明  性别  男
姚明  民族  汉
周润发 职业  演员
周润发 出生地  中国香港

变为:

entity.csv

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:ID,name,:LABLE
entity0,姚明,ENTITY
entity1,周润发,ENTITY
entity2,YaoMing,ENTITY1
entity3,,ENTITY1
entity4,,ENTITY1
entity5,演员,ENTITY1
entity6,中国香港,ENTITY1

relationship.csv

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:START_ID,name,:END_ID,:TYPE
entity0,英文名,entity2,RELATIONSHIP
entity0,性别,entity3,RELATIONSHIP
entity0,民族,entity4,RELATIONSHIP
entity1,职业,entity5,RELATIONSHIP
entity1,出生地,entity6,RELATIONSHIP

成功导入:

成功导入

可以看到耗时1个半小时(如果是SSD就好了),峰值内存使用了2GB不到。

结果

其中实体数7100w(因为三元组两头都算做了实体,中间是关系。),关系数6000w。实际上就是说三元组最左边的主语有大约1000w,最右边的宾语有大约6000w,加起来7000w实体。

占用11GB硬盘空间。

占用磁盘及版本号

试着查询一下,采用模糊匹配:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
match R = (n:ENTITY)-[r:REL]->(m:ENTITY1) where n.name=~'姚明.\*' return R limit 100

可以在1s内返回结果(实际使用需设置超时时间,避免搜索失败导致遍历整个数据库):

结果

最后可以使用一些开源展示的工具(TODO),就可以进行交互和展示了:

https://github.com/jexp/neo4j-3d-force-graph

图形展示

作者:base64_decode('UTc4MjQ2NDI5NQ==')

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【玩转腾讯云】使用腾讯云助力知识图谱
在看到思知开源了1.4亿规模的中文知识图谱数据之后一直想试试对知识图谱的查询。奈何之前的服务器选购的是入门的1核2G学生认证的,不足以支持导入。
Sheldon.Lee
2020/04/21
3.7K0
【玩转腾讯云】使用腾讯云助力知识图谱
使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink
最近 @Yener 开源了史上最大规模的中文知识图谱——OwnThink(链接:https://github.com/ownthink/KnowledgeGraphData ),数据量为 1.4 亿条。
NebulaGraph
2019/11/26
2.8K0
使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink
neo4j︱neo4j批量导入neo4j-import (五)
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/82424508
悟乙己
2019/05/26
3.9K0
手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
安装一系列pip依赖: cd至项目根目录,运行 sudo pip3 install -r requirement.txt
汀丶人工智能
2023/07/07
1.2K0
手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
Neo4j之导入数据
通过neo4j-admin方式导入的话,需要暂停服务,并且需要清除graph.db,这样才能导入进去数据。而且,只能在初始化数据时,导入一次之后,就不能再次导入。
分母为零
2019/07/12
1.6K0
Neo4J:批量导入neo4j-admin import
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程裕强
2019/10/22
2.2K0
Neo4J:批量导入neo4j-admin import
neo4j import tool
Use the import tool 这篇教程提供了使用import tool的详细案例 当使用csv文件载入数据库时,为了能够创建节点之间的关系,每一个节点必须有一个独一无二的标识,节点ID。 关系通过连接两个节点之间的ID被创建,在下面的例子中,节点标识符作为属性存储在节点上。 节点标识符稍后可能对其他系统的交叉引用,可追溯性等感兴趣,但它们不是强制性的。 如果您不希望标识符在完成导入后保留,则不要在:ID字段中指定属性名称。
学到老
2019/01/25
7970
练习题︱豆瓣图书的推荐与搜索、简易版知识引擎构建(neo4j)
本项目主要贡献源来自豆瓣爬虫(数据源)lanbing510/DouBanSpider、知识图谱引擎Agriculture_KnowledgeGraph、apple.turicreate中内嵌的推荐算法。 主要拿来做练习,数据来源可见lanbing510/DouBanSpider。
悟乙己
2019/05/26
1.5K0
2018-11-19 Neo4j百万级数据导入只能用neo4j-import
业务需要使用Neo4j出数据关系展示图,数据库里有2张表通过一个字段进行关联,数据量是90万和500万,关系量是150w;
Albert陈凯
2018/12/14
1.3K0
2018-11-19 Neo4j百万级数据导入只能用neo4j-import
​知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联)。当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能。
磐创AI
2019/08/06
9.5K1
​知识图谱里的知识存储:neo4j的介绍和使用
『1024 | 码项目』知识图谱嵌入与知识迁移的结合指南
在人工智能和机器学习的快速发展中,知识图谱(Knowledge Graph, KG)已成为知识表示和推理的重要工具。知识图谱通过图结构形式存储实体及其关系,能够有效地捕捉世界的复杂知识。然而,单一知识图谱的构建和应用面临诸多挑战,如数据稀缺、计算资源不足等问题。在这种背景下,知识迁移(Knowledge Transfer)技术应运而生,旨在利用已有知识图谱的知识来增强新知识图谱的学习效果。
数字扫地僧
2024/11/04
3340
『1024 | 码项目』知识图谱嵌入与知识迁移的结合指南
农业知识图谱(KG):农业领域的信息检索,命名实体识别,关系抽取,分类树构建,数据挖掘
(以上部分除了neo4j在官网下,wiki.zh.bin在亚马逊s3下载,其它均可直接用pip3 install 安装)
机器学习AI算法工程
2019/10/28
2.5K0
农业知识图谱(KG):农业领域的信息检索,命名实体识别,关系抽取,分类树构建,数据挖掘
知识图谱的基础构建指南
知识图谱(Knowledge Graph, KG)是用于表示实体及其之间关系的结构化语义网络,近年来广泛应用于搜索引擎、推荐系统、对话系统等领域。通过将数据以三元组的形式存储(实体1-关系-实体2),知识图谱能够提供更加丰富的语义信息和背景,帮助系统更好地理解和处理复杂的任务。
数字扫地僧
2024/09/13
8280
知识图谱的基础构建指南
Github 项目推荐 | 农业知识图谱(KG):农业领域的信息检索,命名实体识别
https://github.com/qq547276542/Agriculture_KnowledgeGraph
AI研习社
2018/07/26
3.2K0
3分钟将10M Stack Overflow导入Neo4j
我想演示如何将Stack Overflow快速导入到Neo4j中。之后,您就可以通过查询图表以获取更多信息,然后可以在该数据集上构建应用程序。如果你愿意,我们有一个运行着的(只读)Neo4j服务器,其数据在这里提供。
轻吻晴雯
2018/05/15
6.7K1
3分钟将10M Stack Overflow导入Neo4j
neo4j中导入数据的两种常用方式(千万级和亿级)
我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系。
阿黎逸阳
2020/09/08
10K0
neo4j中导入数据的两种常用方式(千万级和亿级)
Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
科技情报大数据挖掘与服务系统平台AMiner是由清华大学计算机科学与技术系教授唐杰率领团队建立的,具有完全自主知识产权的新一代科技情报分析与挖掘平台 。
里克贝斯
2021/05/21
1.2K0
Aminer学术社交网络数据知识图谱构建(三元组与嵌入)
知识图谱 | Neo4j初相识
为什么要了解知识图谱、neo4j呢?前几天在会议上,领导说接下来我们部分将重点发力知识图谱的工作,解决业务域的问题,让每位同事都去了解下,等过段时间要做汇报工作,每位讲讲自己的学习心得,算是输出。
努力在北京混出人样
2020/02/19
1.6K0
知识图谱 | Neo4j初相识
python3+Neo4j+flask,汽车行业知识图谱项目实战
https://blog.csdn.net/Appleyk/article/details/80422055
机器学习AI算法工程
2019/10/28
2K0
python3+Neo4j+flask,汽车行业知识图谱项目实战
史上规模最大的中文知识图谱以及估值两个亿的 AI 核心代码
那么问题来了,世界上错综复杂的事物这么多,我们上哪里去学这么多知识啊?怎么快速把有意义的数据收集下来呢?
崔庆才
2019/10/23
5910
史上规模最大的中文知识图谱以及估值两个亿的 AI 核心代码
推荐阅读
相关推荐
【玩转腾讯云】使用腾讯云助力知识图谱
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验