使用圖數(shù)據(jù)庫(kù)NebulaGraph數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

最近?@Yener?開(kāi)源了史上最大規(guī)模的中文知識(shí)圖譜——OwnThink(鏈接:https://github.com/ownthink/KnowledgeGraphData),數(shù)據(jù)量為 1.4 億條。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元黃山做網(wǎng)站,已為上家服務(wù),為黃山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):028-86922220

本文介紹如何將這份數(shù)據(jù)快速導(dǎo)入圖數(shù)據(jù)庫(kù) Nebula Graph,全過(guò)程大約需要 30 分鐘。

中文知識(shí)圖譜 OwnThink 簡(jiǎn)介

思知(OwnThink)

知識(shí)圖譜是由 Google 在 2012 年提出來(lái)的一個(gè)概念。主要是用來(lái)描述真實(shí)世界中存在的各種實(shí)體和概念,以及他們之間的關(guān)系。在搜索引擎、問(wèn)答機(jī)器人、知識(shí)抽取等多個(gè)領(lǐng)域有著諸多應(yīng)用。

最近?Yener 開(kāi)源了史上最大規(guī)模的中文知識(shí)圖譜——?OwnThink(鏈接:https://github.com/ownthink/KnowledgeGraphData),數(shù)據(jù)量為 1.4 億條。數(shù)據(jù)以?(實(shí)體, 屬性, 值)?和?(實(shí)體, 關(guān)系, 實(shí)體)?混合的三元組形式存儲(chǔ),數(shù)據(jù)格式為 csv。

可以點(diǎn)擊這里下載:https://nebula-graph.oss-accelerate.aliyuncs.com/ownthink/kg_v2.tar.gz

查看原始文件

由于 ownthink_v2.csv 數(shù)據(jù)過(guò)多,摘錄部分?jǐn)?shù)據(jù)為例:

紅色食品,描述,紅色食品是指食品為紅色、橙紅色或棕紅色的食品。
紅色食品,是否含防腐劑,否
紅色食品,主要食用功效,預(yù)防感冒,緩解疲勞
紅色食品,用途,增強(qiáng)表皮細(xì)胞再生和防止皮膚衰老
大龍湫,描述,雁蕩山景區(qū)分散,東起羊角洞,西至鋸板嶺;南起筋竹溪,北至六坪山。
大龍湫,中文名稱(chēng),大龍湫
大龍湫,外文名稱(chēng),big?dragon?autrum大龍湫,門(mén)票價(jià)格,50元
大龍湫,著名景點(diǎn),芙蓉峰
姚明[中國(guó)籃球協(xié)會(huì)、中職聯(lián)公司董事長(zhǎng)],妻子,葉莉

這里的?(紅色食品,是否含防腐劑,否)?就是典型的?(實(shí)體, 屬性, 值)?形式的三元組數(shù)據(jù); 而?(姚明[中國(guó)籃球協(xié)會(huì)、中職聯(lián)公司董事長(zhǎng)],妻子,葉莉)?是典型的?(實(shí)體, 關(guān)系, 實(shí)體)?形式的三元組數(shù)據(jù)。

Step 1. 數(shù)據(jù)建模與清洗準(zhǔn)備

建模

Nebula Graph 是一個(gè)開(kāi)源的分布式圖數(shù)據(jù)庫(kù)(鏈接:https://github.com/vesoft-inc/nebula),相比 Neo4j 來(lái)說(shuō),它的主要特點(diǎn)是完全的分布式,因此圖數(shù)據(jù)庫(kù) Nebula Graph 適合處理數(shù)據(jù)量超過(guò)單機(jī)的場(chǎng)景。

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

圖數(shù)據(jù)庫(kù)通常支持的數(shù)據(jù)模型為有向?qū)傩詧D(directed property graph)。圖中的每個(gè)頂點(diǎn)(vertex)可以用標(biāo)簽(tag)來(lái)表示類(lèi)型(Neo4j 叫做 Label),頂點(diǎn)和頂點(diǎn)之間的關(guān)系用邊(edge)連接起來(lái)。每種 tag 和 edge 還可以帶有屬性?!欢@些功能對(duì)于知識(shí)圖譜的三元組數(shù)據(jù)沒(méi)什么意義:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

分析上圖的三元組數(shù)據(jù),發(fā)現(xiàn)無(wú)論是?(實(shí)體, 屬性, 值)?形式的三元組數(shù)據(jù),還是?(實(shí)體, 關(guān)系, 實(shí)體)?形式的三元組數(shù)據(jù),每條三元組數(shù)據(jù)均可以建模成兩個(gè)點(diǎn)和一條邊的形式。前者三元組中的“實(shí)體”和“值”建模為兩個(gè)點(diǎn)(起點(diǎn)、終點(diǎn)),“屬性”建模為一條邊,后者三元組中的兩個(gè)“實(shí)體”也建模為兩個(gè)點(diǎn)(起點(diǎn)、終點(diǎn)),“關(guān)系”建模為一條邊.

而且,所有的點(diǎn)都是相同類(lèi)型(取名叫entity?),只需要一個(gè)屬性(叫?name?),所有的邊也都是同一類(lèi)型(取名叫?relation?),邊上也只有一個(gè)屬性(叫?name?)。

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

比如?(大龍湫,著名景點(diǎn),芙蓉峰)?可以表示成下圖這個(gè)樣子:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

數(shù)據(jù)清洗和預(yù)處理

按照前一節(jié)的分析,原始的每條三元組數(shù)據(jù),還需要清洗轉(zhuǎn)換為兩個(gè)點(diǎn)和一條邊才能變成屬性圖的模型。

下載清洗工具

本文測(cè)試的時(shí)候,使用的操作系統(tǒng)是 CentOS 7.5,工具由 Golang 語(yǔ)言編寫(xiě)而成。

你可以在這里 (鏈接:https://github.com/jievince/rdf-converter)?下載這個(gè)簡(jiǎn)單的清洗工具源代碼并編譯使用。

該工具會(huì)把轉(zhuǎn)換后的頂點(diǎn)的數(shù)據(jù)寫(xiě)入到 vertex.csv 文件、邊數(shù)據(jù)寫(xiě)入到 edge.csv 文件。

說(shuō)明:在測(cè)試過(guò)程中,發(fā)現(xiàn)有大量的重復(fù)點(diǎn)數(shù)據(jù),所以工具里面也做了去重。完全去重后的點(diǎn)的數(shù)據(jù)大概是 4600 萬(wàn)條,完全去重后的邊的數(shù)據(jù)大概是 1 億 4000 萬(wàn)條。

清洗完的?vertex.csv?文件長(zhǎng)這樣:

-2469395383949115281,過(guò)度包裝-5567206714840433083,Over??Package3836323934884101628,有的商品故意增加包裝層數(shù)
1185893106173039861,很多采用實(shí)木、金屬制品
3455734391170888430,非科學(xué)
9183164258636124946,教育
5258679239570815125,成熟市場(chǎng)-8062106589304861485,"成熟市場(chǎng)是指低增長(zhǎng)率,高占有率的市場(chǎng)。"

說(shuō)明:每一行是一個(gè)頂點(diǎn),第一列整型?-2469395383949115281?是頂點(diǎn)的 ID(叫做?VID),它是由第二列文字通過(guò)?hash?計(jì)算出來(lái)的,例如?-2469395383949115281?就是由?std::hash("過(guò)度包裝")?計(jì)算出來(lái)的值。

清洗完的?edge.csv?文件:

3413383836870836248,-948987595135324087,含義
3413383836870836248,8037179844375033188,定義
3413383836870836248,-2559124418148243756,標(biāo)簽
3413383836870836248,8108596883039039864,標(biāo)簽
2587975790775251569,-4666568475926279810,描述
2587975790775251569,2587975790775251569,中文名稱(chēng)
2587975790775251569,3771551033890875715,外文名稱(chēng)
2587975790775251569,2900555761857775043,地理位置
2587975790775251569,-1913521037799946160,占地面積
2587975790775251569,-1374607753051283066,開(kāi)放時(shí)間

說(shuō)明:第一列是起點(diǎn)的 VID,第二列是終點(diǎn)的 VID,第三列是這條邊的"屬性"或者"描述"。

在本機(jī)完全去重的清洗程序運(yùn)行時(shí)間大約是 6 分鐘。

Step 2. Nebula Graph 啟動(dòng)準(zhǔn)備

下載和安裝

登陸 GitHub 后,在這里 (鏈接:https://github.com/vesoft-inc/nebula/actions)?找到 Nebula 的安裝包。

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

找到你所用系統(tǒng)對(duì)應(yīng)的下載鏈接:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

筆者系統(tǒng)是 CentOS 7.5,下載 CentOS 7.5 最新的壓縮包,解壓后能找到 rpm 安裝包?nebula-5ace754.el7-5.x86_64.rpm,注意?5ace754?是 git commit 號(hào),使用時(shí)可能會(huì)有所不同。下載好后解壓,輸入下面命令進(jìn)行安裝,記得替換成新的 git commit:

$?rpm?-ivh?nebula-5ace754.el7-5.x86_64.rpm

啟動(dòng) Nebula Graph 服務(wù)

在?命令行 CLI?輸入下面命令啟動(dòng)服務(wù)

$?/usr/local/nebula/scripts/nebula.service?start?all

命令執(zhí)行結(jié)果如下:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

可以執(zhí)行以下命令檢查服務(wù)是否成功啟動(dòng)

$?/usr/local/nebula/scripts/nebula.service?status?all

命令執(zhí)行結(jié)果如下:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

連接 Nebula Graph 服務(wù)

輸入下面命令連接 Nebula Graph:

$?/usr/local/nebula/bin/nebula?-u?user?-p?password

命令執(zhí)行結(jié)果如下:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

準(zhǔn)備 schema 等元數(shù)據(jù)

Nebula Graph 的使用風(fēng)格有點(diǎn)接近 MySQL,需要先準(zhǔn)備各種元信息。

新建圖空間 space

create space 的概念接近 MySQL 里面 create database。在 nebula console 里面輸入下面這個(gè)命令。

nebula>?CREATE?SPACE?test;
進(jìn)入 test space
nebula>?USE?test;
創(chuàng)建點(diǎn)類(lèi)型(entity)
nebula>?CREATE?TAG?entity(name?string);
創(chuàng)建邊類(lèi)型 (relation)
nebula>?CREATE?EDGE?relation(name?string);

最后簡(jiǎn)單確認(rèn)下元數(shù)據(jù)是不是正確。

查看 entity 標(biāo)簽的屬性:

nebula>?DESCRIBE?TAG?entity;

結(jié)果如下:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

查看 relation 邊類(lèi)型的屬性:

nebula>?DESCRIBE?EDGE?relation;

結(jié)果如下:

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

Step 3.?使用 nebula-importer 導(dǎo)入數(shù)據(jù)

登陸 GitHub 進(jìn)入?https://github.com/vesoft-inc/nebula-importer?,nebula-importer 這個(gè)工具也是 Golang 語(yǔ)言寫(xiě)的,在這里下載并編譯源代碼。

使用圖數(shù)據(jù)庫(kù) Nebula Graph 數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)

另外,準(zhǔn)備一個(gè) YAML 配置文件,告訴這個(gè) importer 工具去哪里 csv 文件。(可直接復(fù)制下面這段)鄭州看不孕不育哪里好:http://jbk.39.net/yiyuanzaixian/zztjyy/

version:?v1rc1
description:?example
clientSettings:
??concurrency:?10?#?number?of?graph?clients
??channelBufferSize:?128
??space:?test
??connection:
????user:?user
????password:?password
????address:?127.0.0.1:3699
logPath:?./err/test.log
files:
-?path:?./vertex.csv
????failDataPath:?./err/vertex.csv
????batchSize:?100????type:?csv
????csv:
??????withHeader:?false
??????withLabel:?false
????schema:??????type:?vertex
??????vertex:
????????tags:
??????????-?name:?entity
????????????props:
??????????????-?name:?name????????????????type:?string
??-?path:?./edge.csv
????failDataPath:?./err/edge.csv
????batchSize:?100????type:?csv
????csv:
??????withHeader:?false
??????withLabel:?false
????schema:??????type:?edge
??????edge:
????????name:?relation
????????withRanking:?false
????????props:
??????????-?name:?name????????????type:?string

說(shuō)明:測(cè)試時(shí)候發(fā)現(xiàn) csv 數(shù)據(jù)文件中有大量轉(zhuǎn)義字符 (\) 和換行字符 (\r),nebula-importer 也做了處理。

最后:開(kāi)始導(dǎo)入數(shù)據(jù)

新聞標(biāo)題:使用圖數(shù)據(jù)庫(kù)NebulaGraph數(shù)據(jù)導(dǎo)入快速體驗(yàn)知識(shí)
標(biāo)題路徑:http://muchs.cn/article6/pdpeig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、虛擬主機(jī)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)