ソーシャル・ニュースリーダー「crowsnest」におけるtwitterのリアルタイム解析と情報整理の未来...
TRANSCRIPT
![Page 1: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/1.jpg)
ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来
浜本 階生
12年1月30日月曜日
![Page 2: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/2.jpg)
自己紹介• 浜本 階生(はまもと かいせい)
• @kaiseh
• ブログ解析系サービスなどを開発TopHatenar, Blogopolis
12年1月30日月曜日
![Page 3: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/3.jpg)
今日主張したいこと
• ソーシャルWebにも、情報整理のアーキテクチャが必要である
• そのアーキテクチャを実装するのは、人を暗黙的タームとする検索エンジンである
12年1月30日月曜日
![Page 4: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/4.jpg)
前提
• 今日のプレゼンでは、情報=Webページとする。Twitterにおいては、URLをツイートする行為によって情報への言及がなされる
12年1月30日月曜日
![Page 5: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/5.jpg)
改めて提起
• 「Twitterには、情報整理のアーキテクチャが必要である」
• Twitterに溢れる大量の情報の中から、個人の興味・関心に合致する情報を抽出、配信する仕組み
12年1月30日月曜日
![Page 6: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/6.jpg)
考え得る反論
• Twitterの機能自体が情報整理のアーキテクチャなのでは?
• フォロー(サブスクリプション)
• RT(伝播)
12年1月30日月曜日
![Page 7: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/7.jpg)
僕の考え• 非対称フォローやRTといったTwitterの仕組みは、 確かに、 情報整理の素地として非常に優秀。しかし、あくまでも素地である
• ハイパーリンクを素地としてGoogleが生まれたように、Twitterにも新たなレイヤーが必要
12年1月30日月曜日
![Page 8: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/8.jpg)
その考えをもとに
• 情報整理のためのサービスを開発
• 大量のツイートからURLを収集
• 重要度を計算
• パーソナライズして配信
12年1月30日月曜日
![Page 10: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/10.jpg)
ここで提起
• 「Crowsnestは検索エンジンである」
• 検索エンジンと見なすことで、情報整理アーキテクチャとしての把握が(思想的にも技術的にも)容易になる
12年1月30日月曜日
![Page 11: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/11.jpg)
比較: URLの発見✴検索エンジン
• ハイパーリンク(ページからURLへのリンク)
✴Crowsnest
• ツイート(人からURLへのリンク)
12年1月30日月曜日
![Page 12: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/12.jpg)
比較: 転置インデックス
✴検索エンジン
• <形態素, その形態素を含む文書IDの一覧>
✴Crowsnest
• <ユーザID, そのユーザがツイートした文書IDの一覧>
12年1月30日月曜日
![Page 13: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/13.jpg)
比較: クエリ✴検索エンジン
• キーワード(形態素に分解)• 明示的✴Crowsnest
• ソーシャルグラフ(ユーザIDに分解)
• 暗黙的
12年1月30日月曜日
![Page 14: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/14.jpg)
比較: 結果のソート✴検索エンジン
• 良質なページから多くリンクされるURLが高いスコアを獲得
✴Crowsnest
• 良質なユーザ(例: 自分のフォロー先)から多くリンクされるURLが高いスコアを獲得
12年1月30日月曜日
![Page 15: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/15.jpg)
考察
• 検索エンジンとCrowsnestには、その構造に多くの共通点が見られる
• ただし、Crowsnestでは一貫して人がキーになっている
• ソーシャルWebにおいて、新形態の検索エンジンが出現することは必然の流れでは?
12年1月30日月曜日
![Page 16: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/16.jpg)
他サービスの動向
• 新はてなブックマーク(マイホットエントリー)
• Flipboard(Cover Stories)
• Summify
12年1月30日月曜日
![Page 17: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/17.jpg)
新はてなブックマーク
12年1月30日月曜日
![Page 18: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/18.jpg)
12年1月30日月曜日
![Page 19: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/19.jpg)
• ここから、Crowsnestの技術背景の説明に移ります
12年1月30日月曜日
![Page 20: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/20.jpg)
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のリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/21.jpg)
収集データ量• 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のリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/22.jpg)
Crowsnestの特性と求められるパフォーマンス (1)
• 通常の検索エンジンでは、文書をインデックスに登録する時点で、文書の持つターム(=形態素)が確定している
• これに対して、Crowsnestでは文書の登録後にターム(=文書への言及ユーザ)がどんどん増えていく
• Apache Solrなど既存の検索エンジン実装は、この特性にマッチしない
12年1月30日月曜日
![Page 23: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/23.jpg)
• 通常の検索エンジンでは、クエリが高々数個~数十個のタームに分解される
• 「情報整理の未来」→ 情,情報,報整,整理,理,の,未,未来,来(bigramの場合)
• Crowsnestではソーシャルグラフがクエリとなるため、ターム数が跳ね上がる
• 1000人をフォロー → ID1, ID2, ... , ID1000
Crowsnestの特性と求められるパフォーマンス (2)
12年1月30日月曜日
![Page 24: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/24.jpg)
エンジンの独自開発
• Javaで実装
• インメモリ型インデックス• 分散検索• コミット不要、即時検索可能
12年1月30日月曜日
![Page 25: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/25.jpg)
何をメモリに載せているか
• URL→文書IDの辞書
• URLのタイトル
• URLにリンクしているツイート一覧
• 転置インデックス• (プロセス再起動時のロストを避けるため、一定頻度で永続化)
12年1月30日月曜日
![Page 26: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/26.jpg)
メモリ使用量の削減
• 徹底的なプリミティブ型の使用
• データ圧縮
• 文書IDの32ビット化
• etc
12年1月30日月曜日
![Page 27: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/27.jpg)
徹底的なプリミティブ型の使用
• fastutil(プリミティブコレクションライブラリ)を使う
• Map<Integer, Integer>ではなくInt2IntMapを
• オブジェクト配列を1つの巨大なバイトブロックにエンコード
• オブジェクト毎のオーバーヘッドを削減
12年1月30日月曜日
![Page 28: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/28.jpg)
データ圧縮• ツイート本文の圧縮
• URLタイトルとの共通部分文字列抽出
• 言語別に事前サンプリングしたツイート本文からハフマンテーブルを構築しておき、その固定テーブルを使ってハフマン圧縮
• 整数列の圧縮(Simple9)
• MessagePackによるシリアライズ
12年1月30日月曜日
![Page 29: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/29.jpg)
文書IDの32ビット化
• 本来、64ビットなければユニーク性を保証できないが...
• 初出から一定時間経過した文書はインデックスから削除するため、32ビットでも事実上ユニークなIDとして扱える
12年1月30日月曜日
![Page 30: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/30.jpg)
Fetcher
Indexer
In-MemoryIndex
Fetcher
Indexer
In-MemoryIndex
Fetcher
Indexer
In-MemoryIndex
MySQL
Web
12年1月30日月曜日
![Page 31: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/31.jpg)
Crowsnestの今後
• iOSアプリ
• クリックログからの学習• ツイートしたURLの伝播の統計から、ユーザの情報発信者としての信頼度を分野別に算出
• インタレストベースのソーシャルグラフ形成を支援
12年1月30日月曜日
![Page 32: ソーシャル・ニュースリーダー「Crowsnest」におけるTwitterのリアルタイム解析と情報整理の未来](https://reader035.vdocuments.pub/reader035/viewer/2022062405/55853bd1d8b42ae70f8b515a/html5/thumbnails/32.jpg)
まとめ• ソーシャルWebに、情報整理のレイヤーを乗せたい
• そのアーキテクチャは、「人」をベースとしながら、奇しくも検索エンジンと類似している
• サービスも出揃い、これから面白くなるはず!
12年1月30日月曜日