「ネット言論のダークサイド」を計算機で解析する ── データ分析による報道の技術とその再現性 ──
Sparkでの分析
ガーディアン社はかねてより、こういった比較的大きなデータを分析することによる調査報道をやりたかったらしく、大規模な分散処理ではスタンダードな地位にあるApache Sparkを実際に使うプロジェクトを探していました。今回の解析はテストケースとして丁度良いものだったため、実際に利用しています。
Sparkとは何か?
Apache Sparkとはオープンソースで開発が続いている「並列分散処理のためのフレームワーク」です。これだけでは一体なんなのか分かりにくいと思いますが、要するに複数の計算機を利用して、巨大なデータを効率よく同時に処理するためのソフトウェアのことです。今日のデータ分析で巨大なデータを扱う時に高性能な計算機が必要な場合、一台の高性能なマシンに大きな投資をして使うことは稀で、基本的には比較的安価な計算機をたくさん集めて処理を分散させて行います。この作業を行う時には、一台の計算機で処理を行う際に比べてはるかに高度な技術が必要になります。この複雑な部分の面倒を見てくれるソフトウェアと考えてもらって概ね問題ないです。
若干技術寄りの話になりますが、かつてこのソフトウェアを使う時にはScalaという言語でRDDと呼ばれる比較的抽象度の低いデータ構造を使う必要があったのですが、最近ではRとDataFrame(スプレッドシートのシートのような感覚で各種データを扱えるデータ構造)という、データ解析を行う人々には馴染み深い、かなり抽象度の高いものを利用できるようになってきました。現時点でもScalaを使える人がもっともこのソフトウェアを効率よく使いこなすことができますが、そうでない人にも今後は門戸を開いていくという方針のようなので、大規模データ分析の世界ではSparkのさらなる普及が予想されます。
クラウド上での実行
このSpark、素晴らしいソフトウェアなのですが、実際に複数の計算機を利用して解析したい場合は、そのセットアップにそれなりの時間がかかります。また、Sparkのノード(分散させた作業を実行させる計算機)として使える大量の計算機を自前で用意するのは、(規模にもよりますが)コストも膨大なものになります。こういった時に便利なのがAWSのような商用クラウドサービスです。AWSにはAmazon Elastic MapReduceという、Sparkのようなソフトウェアを実行できるように設定された計算機群(クラスタと呼ばれます)を時間貸ししてくれるサービスがあります。ガーディアン社は今回このサービスを利用し、Sparkを使った解析をEMR上で実行しました。まるでAmazonの回し者のようですが、現実的な問題として、ここまでバラエティに富んだクラウドサービスをワンストップで提供している企業はAmazonをおいて他に無く、それが企業からマスコミ、研究機関まで幅広いユーザーを獲得するのに成功した理由だと思います。
さて、実際のタスクですが、今回は、AWS上にアップロードされたコメントデータベース、記事データベース、著者のデータに対し、ひたすらクエリを投げて必要な情報を切り出し、どの著者がもっとも多くの誹謗抽象・煽りコメントを受け取っているのかを集計していきました。このような大量のデータに対する比較的単純な作業の繰り返しはSparkの得意とするところで、テストプロジェクトとしては良い選択なのではないかと思います。実際に今回の作業は、パイロットプロジェクトというか、まだ彼らに取っても初の実験だったため、ソースコードにも試行錯誤のなごりが見て取れます。こうして得られた結果は、同じくAWSのS3上に書き出されていきました。この最終的な結果は、スプレッドシートなどで集計・図表化可能な程度の大きさのものだと考えて良さそうです。
また現在ガーディアン社のデータ解析チームは、将来的にこのような解析がより行いやすくなるようにPrestoと呼ばれるFacebook社を中心に開発されているオープンソース・ソフトウェアを使い、いわゆるデータレイク(これもバズワードに属するものだとは思いますが...)を構築しているようです。ここからも、彼らが自社で蓄積してきたデータに対する計算機による解析を、今後も進めていこうという姿勢が読み取れます。
データの可視化
これで必要なデータは出揃いました。今回は最終的には新聞記事として使うものですから、このデータを読者が分かりやすい形で提示する必要があります。最近はウェブ版の記事を念頭に作られることも多く、今回の記事も文章に加えて、実際に嫌がらせコメントを多く書き込まれた記者へのインタビュービデオなど、様々なメディアを組み合わせたものとなっています。そして最近の傾向として、こういったデータを見せるときに、ブラウザベースの可視化を用いることが多くなってきました。つまり、最新のウェブ・ブラウザに備わった高度な描画機能を用いて、複雑な図表の作成や、アニメーション、双方向性のある表現などが可能となり、これらを報道の場面で使おうという動きです。
このトピックに関しては、私も仕事として関わっていますので、何か面白そうな記事に出会ったときに、改めて独立した文章として書いてみたいと思います。少々技術的になりますが、実際の可視化の作業などに興味がある方は、こちらの記事もどうぞ。
今回の場合、こういった表現を行う場合に使うツールとしてスタンダードなD3.jsを利用し、最終的な集計結果をプロットし、アニメーション表現を使ってスライドのように繋ぐということをしています。比較的控えめな使い方ですが、今回の結果を見せるためには十分だと思います。ぜひ元の記事のプロットをご覧になってみてください。
考察
今回の解説記事を読んでいて既視感を覚えたのですが、その原因は、要するにこれは学術論文における実験プロトコルの簡易版のようなものだからです。査読付きのジャーナルに掲載されるようなものに比べればはるかに簡易的なもので、これを読んだからといって必ずしも同じ手法で同じ解析ができるわけではありません。しかし、このようなものが調査報道の記事と共に掲載されるようになったのは大きな進歩だと思います。特に計算機を使った解析の場合、その対象が公開データセットの時は、ソースコードと解析に使った環境を公開しておけば、ほぼ同じ解析が技術さえあれば誰でも行えます。事実、先進的な取り組みをしている海外の一部マスコミでは、記事執筆に使ったコードをGitHubにて公開する動きも出てきています。