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
- 今まで見出すことが不可能だった組織的な犯罪を発見
- 人と人を結びつける最短距離を瞬時に見出せる
- それをわかりやすく可視化できる
- Mar Cabra
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
- 2.x
- 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になった
- Scale and Performance
パナマ文書分析アプリの開発過程の紹介
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メール更新内容から人間関係を分析
- 特定の人間を類推できるあだ名など
- 外部の情報源を参照
- 国勢調査情報
- ...
- 企業活動やカネの流れの分析
- 講座の開け閉め
- 合併
- ...
- image, pdf, mailに記載されている情報の分析
パナマ文書を取り巻くお国事情
- 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
- 類似名称
- regeisterd address
データのロード
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
- 活動停止している会社も含む
- 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
- MATCH (n)-[r]-() RETURN COUNT(n)
複数のノードをまたいだ要素の探索を行う
- 曖昧な言葉で検索できる
- 久しぶりにNeo4jの勉強会に参加したけど洗練されてきた感がある
- パナマ文書、ダウンロードしてみねば