Blog
iPhoneの充電池付きケースを買ったのに、ケーブルが特殊で1本しかなく、オフィスに忘れて結局充電出来てない事態に悩まされている、太田です。
はじめに
PFIでは、QuakeMeme.jpというサービスを公開致しました。「Twitter」のデータを元に、今回の東北沖地震に関する有用なURLをカテゴリ分けして収集するサービスです。
他の地震関係のサービスと比較したQuakeMemeの特徴は「情報鮮度 (リアルタイム性)」です。例として、大きな余震等が起きた時には、数分後にその余震に関する情報がQuakeMemeの上位に表示されます。
またQuakeMemeの全ての結果は機械的によって抽出されたものです。Twitter上ではデマの様な情報も多い中、割と有用な情報を優先的に抽出出来ているかと思います。
このブログエントリでは、このサービスの裏側を少し紹介したいと思います。主に、以下の3つの処理が行われています。
1) 特定のhashtagから、UserStreamAPIでTweetをクロール
まず人手で、約200個の地震関連hashtag (例: #anpi, #jishin, etc.)を収集しました。それをTwitterのUserStream APIに与えると、地震関連のテーマに絞ったツイートだけが抽出出来ます。これにはRT等も全て含まれます。現在は秒間50ツイート程度を収集しています。
このツイート情報を、弊社の開発している検索エンジンSedueに登録します。Sedueは登録後すぐに検索結果に反映出来るリアルタイム機能を持っています。これによりTwitter検索のような、秒単位で検索結果が変わる検索システムを簡単に構築出来ます。
2) カテゴリに紐づいた単語で検索
次に、人手でカテゴリ情報を整備しました。各カテゴリにはキーワードが紐づいており(例: Home, 安否情報, 原発情報)、このキーワードで検索処理を行います。
キーワードは、人手で登録します。例えば安否情報であれば”anpi|安否”, 原発情報であれば “genpatu|原発” 等のキーワードが使用されています。検索処理を行うと、指定したキーワードを含むツイートがヒットします。
実はこの段階でリアルタイム地震情報検索サービスとしてローンチを考えたのですが、ゴミ情報が多く、どれが有用な情報が分からないという問題が有りました。そこで次の方法を考えました。
3) ヒットしたツイートから、URL情報のみをカウント
最後に、検索にヒットしたツイートの中に含まれる”URL”のみを対象する事にしました。つまり検索にヒットした直近5万件のツイートに含まれるURLを抽出し、かつ登場回数でカウントを行い並び替える事を考えました。
これによって、”カテゴリに付与された単語を含むツイートと、同時に呟かれているURL”が抽出できます。現在のページはこの情報をリスト化して表示しています。
システム構成
その他、具体的なシステム構成としては、以下のような技術を使っています。
- Twitter UserStream API (Ruby Crawler)
- Sedueリアルタイム検索エンジン (Search Engine)
- MySQL (RDBMS)
- Ruby on Rails 2.3.5 (Web Framework)
- jQuery (UI)
- Amazon EC2 (インフラ: c1.medium * 2台)
ソースコード
このサービスのソースコードはgithubにて公開しています。
まとめ
勢いで数日で作ったサービスなので至らない所が有りますが、徐々に改善を行って行きたいと思いますので引き続きよろしくお願いします。
データとしては、Twitter以外にもmixiボイスやamebaなう等も、集めたいです (APIが有れば)。後は、フィードやガラケー/スマホ対応をしたい所。