Graph Database Use Case - Pandra Papers

★ introductory

October 13, 2021

Graph Database を利用したユースケースの一例として、Neo4j を利用した国際コンソーシアム(ICIJ)によるリーク文書の解析事例について紹介します。

Pandra Papers

Internationa Consortium of Investigative Journalists: "Pandora Papers: An offshore data tsunami"

一般財団法人 日本税務協会: パンドラペーパー: 国際コンソーシアムの情報公開第3弾

課題

米国に拠点を置く非営利団体である ICIJ は、2016 年のパナマ文書、2017 年のパラダイスペーパーに続いて、合計 1190 万ものレコードを 14 つの異なるオフショア会社から提供されたリーク文書である "Pandra Papers" を公開しました。

合計 2.94 TB におよぶファイルの全容は以下の通り:

  • 全部で 1190 万レコードに及ぶ飛行増加データ
  • およそ半分の 640 万件はテキストデータで、そのうちいくつかは 1 万ページを越える分量
  • パスポートや銀行の取引履歴、税務申告、会社の設立記録、不動産契約など様々な種類に及ぶ文章
  • 残りは 410 万件近くの画像とメールデータの他、若干のスプレッドシート、プレゼン資料、音声、ビデオ等

ここで課題となるのは、非構造データをいかに分析するかということです。特に、会社・組織や個人間の資金の流れや関係性など、複雑な関係性をモデリングする必要が有りました。

実用に耐えうる十分なパフォーマンスで検索結果を返却し、あらゆる角度からの分析が可能な柔軟なデータプラットフォームである必要も有ります。

大量のデータの中に何らかの価値がある情報が埋まっていることはわかっていても、情報を分析可能なレベルで、適切な可視化と共に提供してくれるツールが必要でした。

解決策

まずは非構造を適切にデータマートする必要が有ります。今回の Pandra Papers では、主に以下の手法でデータを構造化しました。

  • スプレッドシートは、重複除去を行った上で一つのマスタースプレッドシートに統合
  • PDF やドキュメントファイルは、Python などのプログラミング言語を使い情報を抽出
  • 複雑なケースでは、Fonduer/Scikit-learn などのツールを用いて機械学習を適用
  • 手書きのケースでは手動で情報を抽出

次に、データの関係性をデータモデリングし、適切なツールで可視化する必要が有りました。そこで利用されたのが、Neo4j と Linkurious です

After structuring the data, ICIJ used graphic platforms (Neo4J and Linkurious) to generate visualizations and make them searchable.

This allowed reporters to explore connections between people and companies across providers.

同様のユースケースとして、Panama Papers の分析の際にも Neo4j が ICIJ によって用いられたことがありました。今回はその実績を踏まえての技術選定だったのでしょう。

最後に

以上、Neo4j を利用した国際コンソーシアム(ICIJ)によるリーク文書の解析事例について紹介しました。

特にあらゆる種類のデータ、Heterogeneous なデータを分析する際に、データ間の関係性をモデリングしたり、グラフ理論を適用できるグラフデータベースは活きてきます。今回は、まさにそれを体現するようなユースケースの紹介でした。

Recommended Posts

  1. ★★★ advanced
    neo4j-causal-clustering-introduced-routing
    本記事では、Neo4j における Causal Clustering (因果クラスタリング) について説明します。 クラスタリングの目的 データベースを運用する場合、単一のインスタンスを稼働させるか、Causal Clustering を用いてクラスター構成を組むか(クラスタリング)のいずれかを選択することになるでしょう。 Single Instance…
  2. ★ introductory
    portfolio
    本記事では、グラフデータベースとはそもそも何なのかについて、ソフトウェアエンジニアリングを習いたての人や、他業種からきた人にも伝わる説明を目指してみます。 データベースとは そもそも、データベースとは何でしょうか。 Web エンジニアであれば、MySQL や PostgreSQL などのリレーショナルデータベース(以下:RDBMS)をよく利用しているでしょう。Memcached や Redis…