迅速OwnThinkを経験し、知識マップに地図データベース星雲グラフデータを使用します

最近  @Yener  中国の知識マップの歴史の中で最大規模を開く- OwnThink(リンク:https://github.com/ownthink/KnowledgeGraphData)、データの量を140百万円であります。

この記事では、迅速星雲グラフは、全体のプロセスは30分ほどかかり、このデータ地図データベースをインポートする方法について説明します。

中国のマッピング知識OwnThinkプロフィール

最もよく知られている(OwnThink)

知識のマッピングは、Googleが2012年に提唱した概念です。主に使用される現実の世界でだけでなく、それらの間に存在する様々な主体と概念間の関係を説明しますこれは、多くの検索エンジンの分野での応用、ロボットクイズ、知識抽出と上のように持っています。

Yener最近開いた中国の知識マップの歴史の中で最大規模の調達-  OwnThink(リンク:https://github.com/ownthink/KnowledgeGraphData)、データの量を140百万円であります。データへ  (实体, 属性, 值) と  (实体, 关系, 实体) 混合トリプルが格納され、データ・フォーマットは、CSVです。

あなたは、ダウンロードするにはこちらをクリックすることができます:https://nebula-graph.oss-accelerate.aliyuncs.com/ownthink/kg_v2.tar.gz

元のファイルを見ます

過度ownthink_v2.csvデータに、一例として、いくつかのデータを抽出します。

赤食品、説明は、赤の食品は、食品赤、食品、赤、橙、赤や茶色です。
赤食品、かどうか防腐剤を含む、無
赤食品、食用の主効果、風邪を予防、緩和疲労
赤食品、使用、および皮膚細胞の再生を促進し、肌の老化を防止
Dalongqiu、説明を、雁景勝地は、東爪穴を散乱、のこぎり西尾根、南腱Zhuxi、北6坪山。
Dalongqiu、中国名、Dalongqiu 
Dalongqiu、外国人の名前、大きな龍のautrum Dalongqiu、チケットの価格、50件の
Dalongqiu有名な観光スポット、芙蓉風水
姚明[中国バスケットボール協会、プロリーグ会長]、彼の妻、葉莉

ここで  (红色食品,是否含防腐剂,否) 典型的なものである  (实体, 属性, 值) と、データの三つ組の形  (姚明[中国篮球协会、中职联公司董事长],妻子,叶莉) の典型的な  (实体, 关系, 实体) トリプルデータ形式は。

ステップ1.データモデリングやクリーニングの準備

モデリング

星雲グラフは、オープンソース分散マップ・データベース(リンク:あるhttps://github.com/vesoft-inc/nebula)のNeo4jと比較し、その主な機能は完全に分散されるので、地図データベース星雲グラフ用データを処理することは1つのシーンを超えました

GitHubのホーム

図は、データベース、一般的にサポートされるデータモデルの属性は、図に持っている。(プロパティ有向グラフ)図は、各頂点(頂点)は、頂点と頂点は縁(エッジ)ラベル(タグ)によって接続され、(のNeo4jラベルと呼ばれる)のタイプとの関係を表すことができます。各タグは、更に、特性およびエッジを有していてもよいです。-しかし、知識のトリプルデータマッピングのため、これらの機能は、意味がありません。

画像

分析上图的三元组数据,发现无论是 (实体, 属性, 值) 形式的三元组数据,还是 (实体, 关系, 实体) 形式的三元组数据,每条三元组数据均可以建模成两个点一条边的形式。前者三元组中的“实体”和“”建模为两个点(起点、终点),“属性”建模为一条边,后者三元组中的两个“实体”也建模为两个点(起点、终点),“关系”建模为一条边.

而且,所有的点都是相同类型(取名叫entity ),只需要一个属性(叫 name ),所有的边也都是同一类型(取名叫 relation ),边上也只有一个属性(叫 name )。

画像

比如 (大龙湫,著名景点,芙蓉峰) 可以表示成下图这个样子:

画像

数据清洗和预处理

按照前一节的分析,原始的每条三元组数据,还需要清洗转换为两个点和一条边才能变成属性图的模型。

下载清洗工具

本文测试的时候,使用的操作系统是 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 的安装包。

アクション

找到你所用系统对应的下载链接:

パッケージ

笔者系统是 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

命令执行结果如下:

画像

可以执行以下命令检查服务是否成功启动

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

命令执行结果如下:

画像

连接 Nebula Graph 服务

输入下面命令连接 Nebula Graph:

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

命令执行结果如下:

画像

准备 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;

结果如下:

画像

查看 relation 边类型的属性

nebula> DESCRIBE EDGE relation;

结果如下:

画像

Step 3. 使用 nebula-importer 导入数据

登陆 GitHub 进入 https://github.com/vesoft-inc/nebula-importer ,nebula-importer 这个工具也是 Golang 语言写的,在这里下载并编译源代码。

輸入

另外,准备一个 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
  -パス:./edge.csv 
    failDataPath:./err/edge.csv 
    BATCHSIZE:100タイプ:CSV 
    CSV:
      withHeader:偽
      withLabel:偽
    スキーマ:タイプ:エッジの
      エッジ:
        名:関係
        withRanking:偽
        小道具:
          -名前:名前タイプ:文字列

説明:テストデータのcsvファイルエスケープ文字(\)と改行文字(\ r)が多数で見つかった、星雲、輸入者はまた、取引をしました。

最後に:データのインポートを開始

おすすめ

転載: blog.51cto.com/14510351/2453709