Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

はてなブックマークに基づく関連記事レコメンドエンジンの開発

14,210 views

Published on

Hatena Engineer Seminar #5 で発表した「はてなブックマークに基づく関連記事レコメンドエンジンの開発」の資料

Published in: Technology
  • Be the first to comment

はてなブックマークに基づく関連記事レコメンドエンジンの開発

  1. 1. はてなブックマークに基づく 関連記事レコメンドエンジンの開発 Hatena Engineer Seminar #5 id:skozawa 1
  2. 2. 自己紹介 小澤俊介 (id:skozawa / @5kozawa) 2007-2012 大学院で自然言語処理の研究に従事 2012 株式会社はてな入社 アプリケーションエンジニア ・プラットフォームチーム(アドテク)、ブックマークチーム 2
  3. 3. 関連エントリー http://b.hatena.ne.jp/entry/developer.hatenastaff.com/entry/engineer-seminar-5 3
  4. 4. 関連エントリー 関連エントリーなし http://b.hatena.ne.jp/entry/www.afpbb.com/articles/-/3050993 4
  5. 5. 関連記事レコメンド ● 既存のアルゴリズム ○ タグを利用して関連記事を計算 ● 関連記事レコメンドエンジンのプロトタイプ開発 ○ タグがなくても、コンテンツを利用 ○ パーソナライズを視野に(今回はできてません) 5
  6. 6. 関連記事とは ● 関連記事 ○ ある記事との間に繋がりのある記事 ● 類似記事との関係 ○ 関連記事 ≠ 類似記事 ? ○ 関連記事 ∋ 類似記事? 「関連」とは by goo辞書 ある事柄と他の事柄との間につながりがあること。連関。 「―が深い」「―する事柄」「―性」「―質問」 6
  7. 7. レシピで考える関連記事 ● カレー粉で作る野菜のキーマカレー ● 市販ルゥで簡単手間なしキーマカレー ● 本格チキンカレー ● 残りのカレーで作る カレーうどんのレシピ ● 簡単に出来る☆濃厚ホワイトシチュー ● ほうれん草と鮭のクリームシチュー ● やみつきになる!漬け焼きタンドリーチキン ● パオバジの作り方 レシピ ● ナンのレシピ(ナンの作り方) ● トマトときゅうりのパクパクサラダ ● ソーセージとざく切り野菜のポトフ レシピ ● おでんのレシピ/作り方 7 「キーマカレーの作り方」
  8. 8. レシピで考える関連記事 ● カレー粉で作る野菜のキーマカレー ● 市販ルゥで簡単手間なしキーマカレー ● 本格チキンカレー ● 残りのカレーで作る カレーうどんのレシピ ● 簡単に出来る☆濃厚ホワイトシチュー ● ほうれん草と鮭のクリームシチュー ● やみつきになる!漬け焼きタンドリーチキン ● パオバジの作り方 レシピ ● ナンのレシピ(ナンの作り方) ● トマトときゅうりのパクパクサラダ ● ソーセージとざく切り野菜のポトフ レシピ ● おでんのレシピ/作り方 8 「キーマカレーの作り方」 類似 主題 構成要素 カテゴリ 補助 用途/目的
  9. 9. 関連記事レコメンド ● 記事のおすすめ ○ ユーザの興味のある記事 *今回はパーソナライズはできてません ○ 関連性とは別の軸 ■ あたらしさ、おもしろさ 「レコメンド」とは by コトバンク 1 勧めること。推薦すること。「CDを―する」 2 オンラインショップなどで、利用者の好みにあった物品やサービスを 推薦する手法。利用者の購入履歴やアンケート、好みが似た他の利用 者の情報を分析し、適切な物品やサービスを絞り込んで推薦することに より、売り上げを高めるのがねらい。レコメンデーション。 9
  10. 10. 既存のアプローチ ● ユーザの付けたタグ情報を利用 ○ ユーザが抽象化してくれる ○ ElasticsearchのMore Like Thisを利用 10
  11. 11. 手法の流れ 11 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  12. 12. 手法の流れ 12 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類) 抽象化
  13. 13. 手法の流れ 13 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  14. 14. 類似記事取得 ● 単一文書から抽象化するのは困難 ● 類似記事を収集 ○ Elasticsearch More Like This More Like This Query ● 類似文書を検索する機能 ● 入力記事からTF-IDFの高い単語を抽出し、それを利用して記事を検索 14
  15. 15. 類似記事検索例 ● More Like This Query例 ● 類似検索結果の例 15 { “body”: { “query”: { “filtered”: { “query”: { “more_like_this”: { “fields” : “content” } } } } } } キーマカレーのレシピ インドカレーの別顔「キーマカレー」のレシピ(作り方) キーマカレーの作り方1[準備編] インド人シェフに学ぶ、本格キーマカレーの作り方 キーマカレー1 じゃがいもとナスのサブジ 近所のインド系おばあちゃん直伝!「キーマカレー」の作り方 インド人に聞いた牛ひき肉のキーマカレーの作り方
  16. 16. 手法の流れ 16 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  17. 17. 特徴語抽出 ● 類似文書集合から特徴語を抽出 ○ 類似文書中でよく表れる単語 ● Elasticsearch mtermvector API 17 term score = 類似文書集合中での文書頻度 全文書集合中での文書頻度 DFsimilar log DFall { "docs": [ { "term_vectors": { "content" { "terms" { "たまねぎ": { "doc_freq": 675, "term_freq": 1, "tokens": [ { "position": 118 } ] }, "カレー": { "doc_freq": 8816, "term_freq": 1, "tokens": [ { "position": 11 } ] }, "キーマカレ": { "doc_freq": 218, "term_freq": 2, "tokens": [ { "position": 22 }, { "position": 60 } ] }, "トマト": { "doc_freq": 6006, "term_freq": 1, "tokens": [ { "position": 135 } ] }, ... } } } } ] }
  18. 18. 特徴語抽出例 18 term score キーマカレー 1 ひき肉 0.82 ターメリック 0.81 にんにく 0.79 ガラムマサラ 0.78 塩 0.78 トマト 0.77 煮込む 0.73 サラダ油 0.72 大さじ 0.71 term score みじん切り 0.70 カレー 0.68 炒める 0.68 小さじ 0.67 作り方 0.66 レシピ 0.66 インド 0.66 g 0.65 材料 0.64 料理 0.61
  19. 19. 手法の流れ 19 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  20. 20. 特徴語分類のための類似度計算 ● 特徴語を性質によって分類 ○ 主題、構成要素、カテゴリ など ● 類似度 20 Jaccard係数 = 単語Aかつ単語Bを含む記事数 単語Aまたは単語Bを含む記事数 類似度 = 「カレー」かつ「玉ねぎ」を含む記事数 「カレー」または「玉ねぎ」を含む記事数
  21. 21. 特徴語分類のための類似度計算 ● 特徴語を性質によって分類 ○ 主題、構成要素、カテゴリ など ● 類似度 ○ 「単語Aかつ単語Bを含む」の条件 ■ ある一定の距離内で共起 ■ 同じ文脈に出現する単語は性質が似ている 21 Jaccard係数 = 単語Aかつ単語Bを含む記事数 単語Aまたは単語Bを含む記事数 { "docs": [ { "term_vectors": { "content" { "terms" { "たまねぎ": { "doc_freq": 675, "term_freq": 1, "tokens": [ { "position": 118 } ] }, "カレー": { "doc_freq": 8816, "term_freq": 1, "tokens": [ { "position": 11 } ] }, } } } } ] }
  22. 22. 特徴語分類 ● 最短距離法 ○ 距離が最も短い(類似度が最も高い)特徴語で クラスタを形成 22 クラスA キーマカレ、カレー、作り方、レシピ、料理 クラスB ひき肉、トマト、にんにく、塩、サラダ油、g、材料 クラスC ターメリック、ガラムマサラ クラスD 煮込む、インド クラスE 大さじ、小さじ クラスF みじん切り、炒める
  23. 23. 手法の流れ 23 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  24. 24. 関連記事検索 ● 分類したクエリクラスごとに記事を検索 ○ クエリの過半数を含む 24
  25. 25. 関連記事検索例(1) 25 キーマカレ、カレー、作り方、レシピ、料理 レシピの備忘録 大豆とひき肉のキーマカレー インド人に聞いた牛ひき肉のキーマカレーの作り方 ひよこ豆と鶏ひき肉のキーマカレー ひき肉、トマト、にんにく、塩、サラダ油、g、材料 きのこのミートボールシチュー 時短料理~丼もの編~:2色そぼろ丼 野菜たっぷりひき肉とひよこ豆のクミントマト煮、クスクス添え ターメリック、ガラムマサラ タンドリーサンマ ガラムマサラ スパイス 香辛料 お徳用 業務用 ブレンド済みミックススパイス 激旨グルメブログ ガラムマサラ
  26. 26. 関連記事検索例(2) 26 煮込む、インド インド発、世界 2010 インド旅行記 味噌煮込みロジバン 大さじ、小さじ 大さじ 小さじ の分量 大さじ・小さじを英語で 大さじ小さじ みじん切り、炒める アンチョビ、ベーコン、ほうれん草の油炒め タコのドライトマト炒め 牛肉の黒コショウ炒め
  27. 27. 関連度 ● 各検索結果に対して関連度を割り当てる 27 関連度 = 検索適合度 × クエリスコア 検索適合度:TF-IDFスコア(ESのスコア)を正規化した値 クエリスコア:クエリクラス中のterm scoreの最大値 キーマカレ、カレー、作り方、レシピ、料理 1.00 レシピの備忘録 大豆とひき肉のキーマカレー 1.00 インド人に聞いた牛ひき肉のキーマカレーの作り方 0.93 ひよこ豆と鶏ひき肉のキーマカレー 0.91 煮込む、インド 0.73 インド発、世界 2010 1.00 インド旅行記 0.91 味噌煮込みロジバン 0.71
  28. 28. 手法の流れ 28 入力記事 類似記事 1. 類似記事検索 キーマカレー ひき肉 トマト カレー インド 作り方 にんにく 煮込む キーマカレー、 カレー、作り方 ひき肉、トマト、 にんにく インド、煮込む 特徴語 2. 特徴語抽出 3. 特徴語分類 関連記事 4. 関連記事検索 関連記事 (スコアリング済) 5. スコアリング 特徴語(分類)
  29. 29. スコアリング ● 新鮮度 ○ 最新の記事であるほど高い値 ● おもしろさ ○ ブクマ数が多いほど高い値 ○ バズリやすさを推定 ■ 詳細は省略 29 スコア = 関連度 × 新鮮度 × おもしろさ 関連度:入力記事との関連性を表す値 新鮮度:記事の新しさを表す値 おもしろさ:記事のおもしろさを表す値
  30. 30. スコアリング結果 A. 【保存版】今さら聞けない!? 握らないおにぎり「おにぎらず」がキレイに作れるコツ A. 近所のインド系おばあちゃん直伝!「キーマカレー」の作り方 B. アヒージョからカステラまで、たこ焼き器だけでできるフルコースレシピ A. タマネギと挽肉のカレーが便利最高 A. 夏向けのスッキリしたカレーを作るざんす B. 酸味の効いた四川料理のスープ「酸辣湯(サンラータン)」 D. プロに聞く!美味カレー5つの鉄則 A. ターメリックライスで食べる「キーマカレー」 C. ガラムマサラの話 A. 大豆とひき肉のキーマカレー 30 A. キーマカレ、カレー、作り方、レシピ、料理 B. ひき肉、トマト、にんにく、塩、サラダ油、g、材料 C. ターメリック、ガラムマサラ D. 煮込む、インド
  31. 31. まとめ ● 関連記事レコメンドエンジンのプロトタイプ実装 ● 今後 ○ アルゴリズムの洗練 ■ ユーザタグの活用 ■ クラスタリング手法の改善 ○ パーソナライズ ○ 評価 31

×