ソーシャル・ニュースリーダー「crowsnest」におけるtwitterのリアルタイム解析と情報整理の未来...

33
ソーシャル・ニュースリーダー Crowsnest」におけるTwitterリアルタイム解析と情報整理の未来 浜本 階生 12130日月曜日

Upload: kaisei-hamamoto

Post on 20-Jun-2015

2.937 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

浜本 階生

12年1月30日月曜日

Page 2: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

自己紹介• 浜本 階生(はまもと かいせい)

• @kaiseh 

• ブログ解析系サービスなどを開発TopHatenar, Blogopolis

12年1月30日月曜日

Page 3: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

今日主張したいこと

• ソーシャルWebにも、情報整理のアーキテクチャが必要である

• そのアーキテクチャを実装するのは、人を暗黙的タームとする検索エンジンである

12年1月30日月曜日

Page 4: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

前提

• 今日のプレゼンでは、情報=Webページとする。Twitterにおいては、URLをツイートする行為によって情報への言及がなされる

12年1月30日月曜日

Page 5: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

改めて提起

• 「Twitterには、情報整理のアーキテクチャが必要である」

• Twitterに溢れる大量の情報の中から、個人の興味・関心に合致する情報を抽出、配信する仕組み

12年1月30日月曜日

Page 6: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

考え得る反論

• Twitterの機能自体が情報整理のアーキテクチャなのでは?

• フォロー(サブスクリプション)

• RT(伝播)

12年1月30日月曜日

Page 7: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

僕の考え• 非対称フォローやRTといったTwitterの仕組みは、 確かに、 情報整理の素地として非常に優秀。しかし、あくまでも素地である

• ハイパーリンクを素地としてGoogleが生まれたように、Twitterにも新たなレイヤーが必要

12年1月30日月曜日

Page 8: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

その考えをもとに

• 情報整理のためのサービスを開発

• 大量のツイートからURLを収集

• 重要度を計算

• パーソナライズして配信

12年1月30日月曜日

Page 9: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

http://www.crowsnest.tv/

12年1月30日月曜日

Page 10: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

ここで提起

• 「Crowsnestは検索エンジンである」

• 検索エンジンと見なすことで、情報整理アーキテクチャとしての把握が(思想的にも技術的にも)容易になる

12年1月30日月曜日

Page 11: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

比較: URLの発見✴検索エンジン

• ハイパーリンク(ページからURLへのリンク)

✴Crowsnest 

• ツイート(人からURLへのリンク)

12年1月30日月曜日

Page 12: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

比較: 転置インデックス

✴検索エンジン

• <形態素, その形態素を含む文書IDの一覧>

✴Crowsnest 

• <ユーザID, そのユーザがツイートした文書IDの一覧>

12年1月30日月曜日

Page 13: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

比較: クエリ✴検索エンジン

• キーワード(形態素に分解)• 明示的✴Crowsnest 

• ソーシャルグラフ(ユーザIDに分解)

• 暗黙的

12年1月30日月曜日

Page 14: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

比較: 結果のソート✴検索エンジン

• 良質なページから多くリンクされるURLが高いスコアを獲得

✴Crowsnest 

• 良質なユーザ(例: 自分のフォロー先)から多くリンクされるURLが高いスコアを獲得

12年1月30日月曜日

Page 15: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

考察

• 検索エンジンとCrowsnestには、その構造に多くの共通点が見られる

• ただし、Crowsnestでは一貫して人がキーになっている

• ソーシャルWebにおいて、新形態の検索エンジンが出現することは必然の流れでは?

12年1月30日月曜日

Page 16: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

他サービスの動向

• 新はてなブックマーク(マイホットエントリー)

• Flipboard(Cover Stories)

• Summify 

12年1月30日月曜日

Page 17: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

新はてなブックマーク

12年1月30日月曜日

Page 18: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

Flipboard

12年1月30日月曜日

Page 19: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

• ここから、Crowsnestの技術背景の説明に移ります

12年1月30日月曜日

Page 20: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

URL付きツイートの収集

• Search API (search.json) 

• “http”で検索

• Streaming API (statuses/filter.json) 

• “http”でフィルタリング

• Timelines API (statuses/home_timeline.json) 

• 登録ユーザのタイムラインを収集

12年1月30日月曜日

Page 21: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

収集データ量• 80 distinct URLs / sec

• 6.9M distinct URLs / day

• 2.3 Tweets / URL

• 15.9M Tweets / day

• 初出から72時間経過したURLはアーカイブに移動(インデックスから破棄)

12年1月30日月曜日

Page 22: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

Crowsnestの特性と求められるパフォーマンス (1)

• 通常の検索エンジンでは、文書をインデックスに登録する時点で、文書の持つターム(=形態素)が確定している

• これに対して、Crowsnestでは文書の登録後にターム(=文書への言及ユーザ)がどんどん増えていく

• Apache Solrなど既存の検索エンジン実装は、この特性にマッチしない

12年1月30日月曜日

Page 23: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

• 通常の検索エンジンでは、クエリが高々数個~数十個のタームに分解される

• 「情報整理の未来」→ 情,情報,報整,整理,理,の,未,未来,来(bigramの場合)

• Crowsnestではソーシャルグラフがクエリとなるため、ターム数が跳ね上がる

• 1000人をフォロー → ID1, ID2, ... , ID1000

Crowsnestの特性と求められるパフォーマンス (2)

12年1月30日月曜日

Page 24: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

エンジンの独自開発

• Javaで実装

• インメモリ型インデックス• 分散検索• コミット不要、即時検索可能

12年1月30日月曜日

Page 25: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

何をメモリに載せているか

• URL→文書IDの辞書

• URLのタイトル

• URLにリンクしているツイート一覧

• 転置インデックス• (プロセス再起動時のロストを避けるため、一定頻度で永続化)

12年1月30日月曜日

Page 26: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

メモリ使用量の削減

• 徹底的なプリミティブ型の使用

• データ圧縮

• 文書IDの32ビット化

• etc

12年1月30日月曜日

Page 27: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

徹底的なプリミティブ型の使用

• fastutil(プリミティブコレクションライブラリ)を使う

• Map<Integer, Integer>ではなくInt2IntMapを

• オブジェクト配列を1つの巨大なバイトブロックにエンコード

• オブジェクト毎のオーバーヘッドを削減

12年1月30日月曜日

Page 28: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

データ圧縮• ツイート本文の圧縮

• URLタイトルとの共通部分文字列抽出

• 言語別に事前サンプリングしたツイート本文からハフマンテーブルを構築しておき、その固定テーブルを使ってハフマン圧縮

• 整数列の圧縮(Simple9)

• MessagePackによるシリアライズ

12年1月30日月曜日

Page 29: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

文書IDの32ビット化

• 本来、64ビットなければユニーク性を保証できないが...

• 初出から一定時間経過した文書はインデックスから削除するため、32ビットでも事実上ユニークなIDとして扱える

12年1月30日月曜日

Page 30: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

Fetcher

Indexer

In-MemoryIndex

Fetcher

Indexer

In-MemoryIndex

Fetcher

Indexer

In-MemoryIndex

MySQL

Web

12年1月30日月曜日

Page 31: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

Crowsnestの今後

• iOSアプリ

• クリックログからの学習• ツイートしたURLの伝播の統計から、ユーザの情報発信者としての信頼度を分野別に算出

• インタレストベースのソーシャルグラフ形成を支援

12年1月30日月曜日

Page 32: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

まとめ• ソーシャルWebに、情報整理のレイヤーを乗せたい

• そのアーキテクチャは、「人」をベースとしながら、奇しくも検索エンジンと類似している

• サービスも出揃い、これから面白くなるはず!

12年1月30日月曜日

Page 33: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来

ありがとうございました

http://www.crowsnest.tv/

12年1月30日月曜日