Yole:CIS和PMIC需求推动先进封装光刻设备市场增长
06-08
前言本文由Nebula Graph实习生@王杰贡献。近日@Yener开源了史上最大的中文知识图谱——OwnThink(链接:),数据量达1.4亿条。
本文介绍如何快速将这些数据导入到图数据库Nebula Graph中。整个过程大约需要30分钟。
中文知识图谱 OwnThink 介绍 OwnThink 知识图谱是 Google 在 2011 年提出的概念,主要用于描述现实世界中存在的各种实体和概念,以及它们之间的关系。它在搜索引擎、问答机器人、知识提取等领域有很多应用。
近日,Yener开源了史上最大的中文知识图谱——OwnThink(链接数:1.4亿)。数据以(实体、属性、值)和(实体、关系、实体)混合的三元组形式存储。
数据格式为 csv 。可以点击这里下载:ownthink_v2.csv 数据太多,这里摘录部分数据: 代码语言:txt 复制红色食物、描述,红色食物是指颜色为红色、橙红色或棕红色的食物,是否含有红色食品。
防腐剂,不含红色食品,主要食用功效,预防感冒,缓解疲劳,红色食品,使用,增强表皮细胞再生,防止皮肤老化 大龙丘,说明,雁荡山风景区散布,从东边的羊角洞出发,到西边的夹板岭西;南起金珠河,北至六屏山。大龙湫,中文名,Dalongqiu,外文名,大龙autrum Dalongqiu,门票价格,50元 大龙湫,著名景点,芙蓉峰。
姚明【中国篮球协会主席,中国职业联赛公司董事长】,妻子,叶莉 这里的(红色食品,是否含有防腐剂,否)这里是一个典型的三元组数据,形式为(实体,属性,价值); (姚明[中国篮球协会主席、中国职业联赛公司董事长]、妻子叶莉)是典型的三元组数据,形式为(实体、关系、实体) 步骤1.数据建模和清洗准备Nebula Graph 的建模是。一个开源的分布式图数据库(链接:Neo4j),其主要特点是完全分布,因此图数据库Nebula Graph适合数据量超过单机的场景。
GitHub主页图数据库通常支持的数据模型是有向有向属性图。图中的每个顶点都可以用一个标签来表示(Neo4j称之为Label),顶点之间的关系通过边连接。
每个标签和边也可以有属性。 ——不过,这些函数对于知识图谱的三元组数据意义不大:对上图的三元组数据进行图像分析,发现无论是(实体、属性、值)形式的三元组数据还是(实体、属性)形式的三元组数据,关系,实体)三元组数据,每个三元组数据可以建模为两个点和一条边的形式。
前三元组中的“实体”和“值”被建模为两个点(起点、终点),“属性”被建模为一条边。后一个三元组中的两个“实体”也被建模为两个点(起点,终点),“关系”被建模为一条边。
而且,所有点都是同一类型(命名实体),只需要一个属性(称为名称),所有边也是相同类型(命名关系),边上只有一个属性(称为名称)。例如图像(大龙湫、著名景点、芙蓉峰)可以表示如下: 图像数据清洗和预处理是基于上一节的分析。
每个原始三元组数据需要清洗并转换为两个A点和一条边就可以成为属性图的模型。下载清理工具本文测试时使用的操作系统是CentOS 7.5,该工具是用Golang语言编写的。
您可以在这里下载这个简单的清理工具的源代码(链接:编译并使用它。该工具会将转换后的顶点数据写入vertex.csv文件,将边数据写入edge.csv文件。
说明:在期间测试发现有大量的重复点数据,因此该工具也进行了去重,完全去重后的点数量约为10000个,完全去重后的数据约为1亿个完成的vertex.csv。文件长这样:代码语言:txt文案-,过度包装-,过度包装,有些产品故意增加包装层数,很多采用实木和金属制品,非科学性,教育性,成熟市场-, “成熟市场是指增长率低、份额高的市场。
”解释:每一行是一个顶点,第一列是一个整数——顶点的ID(称为VID),通过对文本进行哈希计算得出例如,第二列中的 - 是由 std::hash("over-wrapping") 计算的值。清理后的edge.csv文件:代码语言:txt复制,-87,含义,定义,-标签,标签,-描述,中文名,外文名,地理位置,-地区,-,开放时间描述:第一列是起点的VID,第二列是终点的VID,第三列是该边的“属性”或“描述”。
在此机器上完成重复数据删除的清理程序的运行时间约为 6 分钟。步骤2.Nebula Graph启动。
准备下载并安装。登录GitHub后,在这里(链接:找到Nebula的安装包。
操作找到你所使用的系统对应的下载链接:package。笔者的系统是CentOS 7.5,下载CentOS 7.5的最新压缩包。
之后解压,可以找到rpm安装包nebula-5ace.el7-5.x86_64.rpm,注意5ace是git commit number,下载后解压后输入以下命令安装。 git commit: 代码语言: txt copy $ rpm -ivh nebula-5ace.el7-5.x86_64.rpm 启动 Nebula Graph 服务 在命令行 CLI 中输入以下命令启动。
代码语言:txt copy $ /usr/local/nebula/scripts /nebula.service start 所有命令执行结果如下: image 可以执行以下命令查看服务是否启动成功 代码语言:txt copy $ /usr/local/nebula/scripts/nebula.service status 所有命令执行结果如下: image 连接 Nebula Graph 服务输入以下命令连接 Nebula Graph: 代码语言:txt copy $ /usr/ local/nebula/bin/nebula -u user -p password 命令执行结果如下:镜像准备schema等元数据。 Nebula Graph的使用风格有点接近MySQL。
首先需要准备各种元信息。创建新图空间spacecreate space的概念与MySQL中创建数据库类似。
在星云控制台中输入以下命令。代码语言:txt复制nebula>CREATE SPACE测试;进入测试空间代码语言:txt复制nebula>USE test;创建点类型(实体) 代码语言:txt 复制 nebula> CREATE TAG 实体(名称字符串);创建边类型(关系) 代码语言:txt copy nebula> CREATE EDGE relation(name string);最后简单确认一下元数据是否正确。
查看实体标签的属性:代码语言:txt复制nebula>DESCRIBE TAG实体;结果如下: image 查看关系边类型的属性: 代码语言:txt 复制 nebula > DESCRIBE EDGE 关系;结果如下: image步骤3.使用nebula-importer导入登录GitHub输入数据。 nebula-importer 工具也是用 Golang 语言编写的。
在这里下载并编译源代码。此外,导入器准备一个 YAML 配置文件来告诉导入器工具在哪里可以找到 csv 文件。
(可以直接复制下面一段) 代码语言:txt 复制版本:v1rc1description: exampleclientSettings: concurrency: 10 # 图客户端数量channelBufferSize: space: test connection: user: 用户password: 密码address: .0.0.1:logPath: 。 /err/test.logfiles: - 路径: ./vertex.csv failureDataPath: ./err/vertex.csv batchSize: 类型: csv csv: withHeader: false withLabel: false schema: 类型: 顶点 顶点: 标签: - 名称: 实体道具:-名称:名称类型:字符串-路径:./edge.csvfailDataPath:./err/edge.csvbatchSize:类型:csv csv:withHeader:假withLabel:假模式:类型:边缘边缘:名称:与Ranking的关系: false props: - name: name type: string 说明: 测试时发现csv数据文件中存在大量转义符()和换行符(\r),nebula-importer也对其进行了处理。
最后:开始导入数据?代码语言:txt copy go run importer.go --config ./config.yaml 执行过程如下: v2-b38f7b9ee1ae12f6d42adc79a4c1a_r.jpg 可以看到本次导入的QPS约为40w/s。总导入时间约为15分钟。
第四步:阅读一些内容并尝试一下。导入完成后,我们可以使用Nebula Graph服务进行一些简单的查询。
返回 Nebula Graph 命令行 CLI: 代码语言:txt copy $ /usr/local/nebula/bin/nebula -u user -p 密码 进入刚刚导入的三元组数据的测试空间: 代码语言:txt copy nebula>使用测试;现在,我们可以做一些简单的查询。例1:与姚明直接相关的边类型和点属性代码语言: txt copy (user@.0.0.1) [test]> GO FROM hash("姚明 [中国篮球协会主席、篮球协会主席]中国职业联赛公司]") OVER 关系 YIELD 关系.名称 AS 名称,$$.entity.name AS 价值;执行结果如下: 可以看到: 该查询返回了51条数据,消耗Time约为3ms;例2:查询姚明和妻子叶莉三跳内的所有路径 代码语言:txt copy (user@.0.0.1) [测试]> FIND ALL PATH FROM hash("姚明[中国篮球协会主席] , 中国职业联盟公司董事长]") TO hash("叶莉") OVER 关系 UPTO 3 STEPS;执行结果如下: image 当数据量较大时,搜索全路径/最短路径等操作会比较耗时。
可以看到,这次查询返回了8条数据,说明姚明和妻子叶莉在三跳内总共有8条直接或间接关系。总结一下本文涉及到的一些概念和链接:OwnThink的中文知识图谱数据:csvNebula Graph是一个开源图数据库,GitHub地址:Neo4j,相对于Neo4j来说,它是一个分布式数据清理工具,GitHub地址:ownthink_v2.csv。
数据以三元组的形式保存,与一般图数据库的属性图模型略有不同,所以我写了一个Go语言工具,将原来的ownthink_v2.csv变成vertex.csv和edge.csv数据导入工具,GitHub地址:vertex.csv和edge.csv批量写入Nebula Graph。后续工作将对Nebula的参数进行调整。
看来默认的日志级别和内存不太好。您可以使用以下命令关闭日志,这样导入性能会好很多。
代码语言:txt 复制curl》Python版本示例 附录Nebula Graph GitHub地址:,加入Nebula Graph交流群请联系Nebula Graph官方小助手微信ID:NebulaGraphbotNebula Graph:一个开源的分布式图数据库。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-17
06-17
06-17
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用