読者です 読者をやめる 読者になる 読者になる

INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

Neo4j ユーザー勉強会 #7に参加してきた。

以下メモ


データの注意点&勉強会スタート

  • CSVファイルしかなかったがNeo4j形式のファイルも配布されるようになった


Graph Connect Europe イベント報告

  • GraphConnect Europe誰も行っていないw


パナマ文書の概要

  • ICIJがパナマ文書について1時間半くらい説明
    • Mar Cabra
      • ICIJ, Data & Research Unitのトップ
    • OffShoreLeaks, China Leaks, Luxemburg Leaks, Swiss Leaks, Panama Papers
    • 2.6TB, 11.5M, 214k社の企業
    • 3人のエンジニアでパナマ文書の分析をIT化した
    • 親族を通してオフショア企業に登記するケース
      • グラフデータベースはこの分野に強い
    • Oxwallでジャーナリスト間でデータ共有
      • 元は出会い系サイト向けのツール
    • 合計1150万ファイルで2.6TB
    • IT
    • 今まで見出すことが不可能だった組織的な犯罪を発見
    • 人と人を結びつける最短距離を瞬時に見出せる
    • それをわかりやすく可視化できる


Neo4j v3.0の紹介

  • Enterprise vs Community
    • パフォーマンスの優位性
  • 3.0新機能
    • Scale and Performance
      • データ数の制限なし
        • ハードウェアのリソースに依存
      • Dynamic pointer compression
    • インデックスフリーの隣接性の改善
      • Enterprise Only
    • コストベースのオプティマイザの改善
      • 2.x
        • Read: Cost base
        • Write: Cost base
      • 3.x
        • Read/Write: Cost base
    • Official Language Drivers & Bolt
    • Java Stored Procedure
    • Neo4j Browser Sync
    • Operation in the Cloud, Container and On Premise
    • Spatial Function
      • 座標情報(緯度と経度)から距離を算出
    • 最短距離の算出
    • neo4j.properties, server.propertiesがneo4j.confになった


パナマ文書分析アプリの開発過程の紹介

  • https://offshoreleaks.icij.org/からキーワードで検索可能

    • パナマ文書もoffshoreleaksに含まれる
  • Mossack Fonseca

  • Suddeutsche Zeitung
    • ドイツの主要新聞社
    • Nuix : メタデータ抽出
    • Veracrypt : データ保管
  • ICIJ
    • Tesseract
    • Tika
    • Solr
    • Blacklight
    • Talend
    • Neo4j
    • Linkurious
  • データ公開

    • 211MB
    • 840kノード
    • 1.27Mエッジ
    • 4つの要素のCSV
      • Clients
      • Companies
      • Addresses
      • Officers
  • ノードの構成

    • Clients
    • Companies
    • Addresses
    • Officers
  • 属性
    • ドキュメント番号
    • 日付情報
    • 株式情報(数、種類)
    • 国籍
  • ノードの関係例

    • 会社の所属
    • 登記
    • 同じ住所を持つ人間同士は親族関係にある可能性
    • 似たような名前の場合は同一人物である可能性
    • 更新記録に頻繁に登場
  • 今後の分析

    • image, pdf, mailに記載されている情報の分析
      • eメール更新内容から人間関係を分析
      • 特定の人間を類推できるあだ名など
    • 外部の情報源を参照
    • 企業活動やカネの流れの分析
      • 講座の開け閉め
      • 合併
      • ...
  • パナマ文書を取り巻くお国事情

    • Mossack Fonsecaは1977年以来、オフショア企業の支援を行ってきた
    • 協業した銀行、法律事務所
      • 香港、イギリスが多い
    • Mossack Fonsecaが使用したTax Havenの国々
      • パナマ以外に20カ国にわたって多くのオフショア企業を運営
      • パナマ文書でパナマが注目されがちだが異なる


Talendを使ったパナマ文書のETL処理

  • TalendのジョブはHadoop上で実行可能
    • スケールアウト可能


5/9に公開されたパナマ文書データベースを使ったデモ

  • Officer(役員(個人名, 法人名))
  • Entity((中間)会社、個人名もあり)
    • オフショア企業
  • Address(住所)
  • Intermediary(中間会社の元)
    • 仲介業社、法律事務所
  • relationship

    • regeisterd address
      • 関連する住所
    • intermediary of
      • 実務委託
    • officer of
      • 役員として参加
    • underlying
      • 実質的な所有
    • similar
      • 類似名称
  • データのロード

    • Cypher Query Load CSV
      • 元データの事前加工は不要
      • リレーションの構築に非常に時間がかかる
        • 0.8sec/relation, 全てのリレーション再現におおよそ12日ほどかかる
    • neo4j-importスクリプトを使用
      • 高速(おおよそ30秒ほどでインポートできる)
      • 元データを適切に加工
        • multiline-csv
        • 不適切なクオートのエスケープ
  • demo

    • MATCH (n)-[r]-() RETURN COUNT(n)
      • ノードとリレーションの総数
      • 2531380
    • MATCH p=(a:Officer) WHERE a.countries = 'Japan' RETURN count(p)
      • 日本人の数
      • 国籍が日本だからといって日本人とは限らない
    • MATCH p=(a:Officer) WHERE a.countries = 'Japan' AND a.valid_until =~ '.Panama.' RETURN count(p)
      • パナマ文書であきらかになった日本人
      • 394
    • MATCH (a:Entity) WHERE a.countries = 'Hong Kong' return count(a)
      • 38844
        • 活動停止している会社も含む
    • MATCH (a:Entity) WHERE a.countries = 'Hong Kong' AND a.status = 'Active' RETURB COUNT(a)
      • 約15000
    • MATCH (a:officier)-[r:officer_of]-(b:entity) WHERE b.address =~ ('?i)."WANCHAI HONG KONG.' AND a.countries = 'Japan' AND b.status = 'active' RETURN COUNT()
      • 89
    • MATCH ( a:officer)-[m]-(n)-[o]-(b.officer) WHERE a.countreis = 'japan' AND b.countries = 'Japan' RETURN a,m,n,o,b
  • 複数のノードをまたいだ要素の探索を行う

  • 曖昧な言葉で検索できる


  • 久しぶりにNeo4jの勉強会に参加したけど洗練されてきた感がある
  • パナマ文書、ダウンロードしてみねば