SBM研究会vol2(午後の部 その3)
午後の部もその3です。
まずはIIJの方です
IIJ藤田さん 「Kikker(筑波大の神林さん制作)を改良⇒KikkerMR」
■Kikkerというレコメンドエンジンの欠点
- 処理が重いという欠点
■はじめた理由
- Map/Reduceを仕事ではじめたので
※-MapとReduceという二つの関数を書くだけで分散処理ができる。Googleのサーチエンジンは分散並列処理を行っている。googleは論文しか出してないので内容は不明。
- Kikkerのようなアプリに向いた処理なので実装してみよう!
■KikkerMR
- Map/Reduce版Kikker
- 大量のクローリングと解析ならMap/Reduceが最適化
- ただ、プログラムの構造を変えないといけないので、ガッツリ書き直さないといけない…
- hadoop0.8.2ベース
■仕組み
- Mapにはてぶの新着ページのクロールと解析
- Reduceにエントリされているページのクロールと解析
■kikkerはhtmlparserを実装しているので…
- 新はてぶになったので大前提が変わってしまった!!!
- やっぱり動かなくなってしまった!
- classの属性が全部変わってた⇒作り直し!
■ロジック
- エントリの1番目はタイトルとリンク
- エントリの3番目はプロパティ的な情報を参照
- クロールはhttpclient
- HTMLからデータの抽出はhtmlparser
- 形態素解析はSen(Java版MeCab)
- GetResponseBodyを使うと警告が出る⇒無視!
- 推薦リストの生成は基本的にはページのベクトルとユーザーのベクトルとを比較する。
- ユーザが参照したページのベクトルをユーザーベクトルに足しこむ
■結果
⇒テストで80万件クロール!まさにDDoS?w
⇒伊藤さん「RSSFeedなら構造も変わらないし、ユーザーにも迷惑がかからないのでRSSでお願いしますw」