Visualizing Wikileaks #1

昨年は会社の仕事を通して新しいことにいろいろチャレンジできた年でした。
その一例を挙げると、

  1. Androidアプリのプログラミング
  2. AndroidでのOpenGLプログラミング
  3. iPhone上での3Dオブジェクトを多用したゲーム(coming soon…)
  4. Pythonを使ったサーバサイドプログラミングおよび自然言語処理 (Poibot)

こんな感じでしょうか。その中でも、Poibot (http://poibot.jp/ および http://twitter.com/poibot_jp)の実装のために覚えたPython自然言語処理のイロハは今後いろいろと役に立ちそうです(人工知能の研究室出身とはいえ、最適化計算一本やりだったので、自然言語処理はノータッチでした。おはずかしい…) 忘れる前にPython/自然言語処理をより掘り下げようと、お正月休みを利用して実験していた結果が今回のポストです。

今回、題材としては、昨年世の中を騒がせたWikileaks (http://www.wikileaks.ch/)を取り上げました。

Wikileaksに関しては、いろいろとニュースで流れてはいるものの、どういった内容の文書が含まれているのか、また日本と世界の外交にどのような影響があるのか、いまいち実感として分からないというのが多くの方の印象ではないでしょうか。だからといって、いちいち文書を読む気にもならない…. また中身を調べるとしても、公開されている文書の正当性/真偽に疑問符がつく以上、文書の内容に踏み込んだ解説は避けたいというのもあります。

そこでまず手始めに、Wikileaksの文書上で最も参照されているのはどの国か、もっと簡単に言うと日本のことが書かれた文書はどのくらいあるのか? という点にしぼって、解析および可視化を行いました。

対象: 12月25日 Wikileaksでtorrentとして公開されている 6521の PDF, Plain Text, Rich Text, Microsoft Wordのデータのうち、テキスト化することができた4829の文書

簡単な言語処理(単語の抽出, 品詞の解析など)を行った後、国名(Japan, US, United States/US/USA, China, UK/Britain… etc) の登場回数を各文書ごとにカウントしてた結果、以下のようになりました (参照数のデータはこちら)
chart_1.png
予想通り、アメリカに関する文書が圧倒的な数を占めています。アフガニスタン、イラク、パキスタンなどが上位にきているのは、アルカイーダなどのテロ組織に関する文書が多数含まれているからでしょうか。中国が上位にきているのも目を引きます。日本は18番目。参照数で中国の約半数という結果になりました。
続いて、同一の文書内で参照されている数、各国名の共起度を調べてみました。
たとえば、北朝鮮についての文書であれば、韓国、中国そして日本などについて参照されている可能性が高いことは素人でも想像がつきます。同様に自爆テロに関する文書であれば、イラクやアフガニスタン、アメリカやイギリスが登場する確率は高いでしょう。このようにして、各国の関係の深さが、Wikileaksの文書から浮かび上がるのではないかと考えたわけです。

結果はこうなりました。下のStartボタンをクリックするとインタラクティブなアプレットのページに飛びます。国にマウスオンしてクリックすると、その国と同じ文書内で参照されている回数が表示されます。余白でクリックすると、元に戻ります(わかりにくいかな…?)

スクリーンショット: 各国の参照数
Screen shot 2011-01-10 at 10.02.53.png

スクリーンショット2: アフガニスタンが参照されている文書の中での各国の参照数
Screen shot 2011-01-10 at 10.02.39.png

今回の実験は

  1. 英語以外の文書に関しては正しく処理できていない (10〜20%くらいは英語以外(スペイン語、アラビア語など)の文書が含まれている模様)
  2. 国の名前のみをカウントしている (たとえば、日本政府を指す意味で”Tokyo”という単語を使っていたとしても無視している)
  3. 文書単位でしか共起度を計っていない

といった点であくまでも簡単な統計ですが、なんらかの参考になれば幸いです。文書内に含まれている特徴語などについても引き続き、調べていきたいと思っています。


主な参考書は以下の二冊。まずは文書の解析はこちらの本を参考にしています。


“入門 自然言語処理” (Steven Bird, Ewan Klein, Edward Loper)

Pythonのライブラリ NLTK を使った実践的な内容。Pythonの入門も兼ねているので、これから始めたいという人に最適。Poibotの実装のときには最初にこれを買っておけばよかったと公開しています。特に日本語版は補遺の中で、日本語特有のトピック(単語の分かち書き、文字コードなど)を丁寧に扱っているので、英語が読める人でもこちらの日本語訳の方をおすすめします。(なお、原文はこちら、日本語版の補遺の内容はこちらで読むことができます)

Processingをつかったビジュアライズはもちろんこの本! CSVの読み込みやアニメーションの表現など、細かいところでも大変参考になります。

“ビジュアライジング・データ ―Processingによる情報視覚化手法” (Ben Fry)

Share your thoughts