中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

發布時間:2020-07-10 18:19:23 來源:網絡 閱讀:651 作者:艾弗森哇 欄目:數據庫

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

本文介紹如何將這份數據快速導入圖數據庫 Nebula Graph,全過程大約需要 30 分鐘。

中文知識圖譜 OwnThink 簡介

思知(OwnThink)

知識圖譜是由 Google 在 2012 年提出來的一個概念。主要是用來描述真實世界中存在的各種實體和概念,以及他們之間的關系。在搜索引擎、問答機器人、知識抽取等多個領域有著諸多應用。

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

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

查看原始文件

由于 ownthink_v2.csv 數據過多,摘錄部分數據為例:

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

這里的?(紅色食品,是否含防腐劑,否)?就是典型的?(實體, 屬性, 值)?形式的三元組數據; 而?(姚明[中國籃球協會、中職聯公司董事長],妻子,葉莉)?是典型的?(實體, 關系, 實體)?形式的三元組數據。

Step 1. 數據建模與清洗準備

建模

Nebula Graph 是一個開源的分布式圖數據庫(鏈接:https://github.com/vesoft-inc/nebula),相比 Neo4j 來說,它的主要特點是完全的分布式,因此圖數據庫 Nebula Graph 適合處理數據量超過單機的場景

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

圖數據庫通常支持的數據模型為有向屬性圖(directed property graph)。圖中的每個頂點(vertex)可以用標簽(tag)來表示類型(Neo4j 叫做 Label),頂點和頂點之間的關系用邊(edge)連接起來。每種 tag 和 edge 還可以帶有屬性。——然而,這些功能對于知識圖譜的三元組數據沒什么意義:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

分析上圖的三元組數據,發現無論是?(實體, 屬性, 值)?形式的三元組數據,還是?(實體, 關系, 實體)?形式的三元組數據,每條三元組數據均可以建模成兩個點一條邊的形式。前者三元組中的“實體”和“”建模為兩個點(起點、終點),“屬性”建模為一條邊,后者三元組中的兩個“實體”也建模為兩個點(起點、終點),“關系”建模為一條邊.

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

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

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

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

數據清洗和預處理

按照前一節的分析,原始的每條三元組數據,還需要清洗轉換為兩個點和一條邊才能變成屬性圖的模型。

下載清洗工具

本文測試的時候,使用的操作系統是 CentOS 7.5,工具由 Golang 語言編寫而成。

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

該工具會把轉換后的頂點的數據寫入到 vertex.csv 文件、邊數據寫入到 edge.csv 文件。

說明:在測試過程中,發現有大量的重復點數據,所以工具里面也做了去重。完全去重后的點的數據大概是 4600 萬條,完全去重后的邊的數據大概是 1 億 4000 萬條。

清洗完的?vertex.csv?文件長這樣:

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

說明:每一行是一個頂點,第一列整型?-2469395383949115281?是頂點的 ID(叫做?VID),它是由第二列文字通過?hash?計算出來的,例如?-2469395383949115281?就是由?std::hash("過度包裝")?計算出來的值。

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

3413383836870836248,-948987595135324087,含義
3413383836870836248,8037179844375033188,定義
3413383836870836248,-2559124418148243756,標簽
3413383836870836248,8108596883039039864,標簽
2587975790775251569,-4666568475926279810,描述
2587975790775251569,2587975790775251569,中文名稱
2587975790775251569,3771551033890875715,外文名稱
2587975790775251569,2900555761857775043,地理位置
2587975790775251569,-1913521037799946160,占地面積
2587975790775251569,-1374607753051283066,開放時間

說明:第一列是起點的 VID,第二列是終點的 VID,第三列是這條邊的"屬性"或者"描述"。

在本機完全去重的清洗程序運行時間大約是 6 分鐘。

Step 2. Nebula Graph 啟動準備

下載和安裝

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

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

找到你所用系統對應的下載鏈接:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

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

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

啟動 Nebula Graph 服務

在?命令行 CLI?輸入下面命令啟動服務

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

命令執行結果如下:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

可以執行以下命令檢查服務是否成功啟動

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

命令執行結果如下:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

連接 Nebula Graph 服務

輸入下面命令連接 Nebula Graph:

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

命令執行結果如下:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

準備 schema 等元數據

Nebula Graph 的使用風格有點接近 MySQL,需要先準備各種元信息。

新建圖空間 space

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

nebula>?CREATE?SPACE?test;
進入 test space
nebula>?USE?test;
創建點類型(entity)
nebula>?CREATE?TAG?entity(name?string);
創建邊類型 (relation)
nebula>?CREATE?EDGE?relation(name?string);

最后簡單確認下元數據是不是正確。

查看 entity 標簽的屬性

nebula>?DESCRIBE?TAG?entity;

結果如下:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

查看 relation 邊類型的屬性

nebula>?DESCRIBE?EDGE?relation;

結果如下:

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

Step 3.?使用 nebula-importer 導入數據

登陸 GitHub 進入?https://github.com/vesoft-inc/nebula-importer?,nebula-importer 這個工具也是 Golang 語言寫的,在這里下載并編譯源代碼。

使用圖數據庫 Nebula Graph 數據導入快速體驗知識

另外,準備一個 YAML 配置文件,告訴這個 importer 工具去哪里 csv 文件。(可直接復制下面這段)鄭州看不孕不育哪里好: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

說明:測試時候發現 csv 數據文件中有大量轉義字符 (\) 和換行字符 (\r),nebula-importer 也做了處理。

最后:開始導入數據

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

慈利县| 高密市| 瑞安市| 邯郸市| 朝阳市| 迭部县| 永康市| 苍溪县| 曲周县| 大新县| 社会| 萍乡市| 大渡口区| 天气| 孟连| 巨鹿县| 扶余县| 皮山县| 兴海县| 综艺| 荃湾区| 紫云| 蒲城县| 黄龙县| 云南省| 濮阳县| 嘉兴市| 东丽区| 常德市| 黄山市| 太保市| 宁国市| 手游| 东兰县| 金川县| 青州市| 双流县| 石林| 安徽省| 开阳县| 金塔县|