捗るリコメンドシステムの裏事情(ハッカドール)

Engineering

mosa-siru
of 91
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
Text
  • 捗る!
 リコメンドシステムの裏事情 2014/10/11 @mosa_siru (榎本悠介) 1
  • 自己紹介 2
  • @mosa_siru • 「もさ」って呼んでください • 大学:複雑ネットワーク研究 • ネットワーククラスタリングの高速化手法 • Twitter SmartList 開発 3
  • @mosa_siru • DeNA(2年目) • プラットフォーム API開発・運用 • ハッカドール 立ち上げからジョイン • サーバーAPI 設計・開発・運用(ほぼ全部) • フロント/バックエンド Web開発 • ログ設計・リコメンドシステムをうんうん考える • 社内の分析チームと密に連携 4
  • 特技 5
  • Bomberman 6
  • ボンバーマン • 2年間引きこもって極めてました • 戦績をつけてRatingで可視化しながら対戦 • 極めるとぷよぷよ化する 7
  • 解説動画がホットエントリ入り 8
  • アジェンダ 9
  • アジェンダ 1. ハッカドールって? 2. ターゲットユーザーの特徴 3. リコメンドシステムの紹介 10
  • 1. ハッカドールって? 11
  • ハッカドールって? • アニメ・マンガ・ゲームなど、 オタク系の記事のみを扱った ニュース配信アプリ • 政治・スポーツなどのニュー スは一切扱わない • 使えば使うほど学習していく 12
  • ハッカドールって? • ゲーミフィケーション ! • というかゲームできる ! • オタクユーザーに刺さる機能 が満載 13
  • 2014夏コミに合わせてリリース 14
  • • 1ヶ月あまりで数十万DL突破 • 高いリターンレート(継続率) 極めて高いユーザー評価 15
  • なんでこんなアプリ
 作ったの? 16
  • 捗りたい! • 好きなゲームの情報を毎日調 べる辛さ • え、あの漫画の新刊出てたん だ… • もっともっと、まだ見ぬ面白 いコンテンツに出会いたい! 17
  • コンテンツのマッチング • 増え続けるコンテンツ • 漫画の1日あたり新刊数はどんどん増えている • でも売上は横ばい • 面白いコンテンツと、それを求めるユーザーを マッチングさせて、エンタメ業界を活性化させ たい 18
  • こんな人達が開発してます 19
  • 開発陣 • 「オタク以外はチー ムに入れません」 20
  • 開発風景 社内での観光名所化 21
  • 2. ターゲットユーザーの特徴 22
  • 情報収集力が高い 23
  • 情報収集力が高い • 自力でどんどん好きな情報を集める • 受動的でない • そのためには多少の苦労はいとわない 24
  • こだわりが強い 25
  • こだわりが強い • 「絶対にラブライブ!の情報は逃したくな い!」 • 1秒でも速く知りたい!! • 興味のある・ないでの差が激しい • 「~のニュースとか本当にどうでもいい」 26
  • ニッチな記事も好む 27
  • ニッチな記事も好む • 必ずしもTweet数、はてブ数が高い記事を好む わけでもない • 例:声優ブログ 28
  • とにかく嗜好にマッチ
 していることが重要 29
  • ハッカドールのリコメンドの 仕組み 30
  • 一般的なリコメンド手法って? 31
  • 一般的なリコメンド手法 32 • 大きく分けて二分される • ユーザーベース • 「この商品を買った人はこんな商品 も買っています」 • アイテムベース • 「この商品はキルラキルのフィギュ アなので、キルラキルが好きな人に 推薦しよう」
  • ユーザーベースの特徴 33 • 推薦されるアイテムの中身に依存しな いので、汎用的 • ユーザーアクティビティの情報が大量 に必要 • コールドスタート問題 • ニュースや新商品のアクティビティ情 報が少ない • 計算量の工夫が必要
  • アイテムベースの特徴 34 • 推薦対象となるアイテムの情報が必要 • 全体のアクティビティ量は必ずしも多くなく て良い • ニュース・新情報に対応可能 • 計算量はユーザー数に対して線形
  • ハッカドールでは 35 • リリース当初はアイテムベースがメイン • 現在はユーザーベースも組み合わせて記事を 配信しています • 試行錯誤し、各種ABテストで検証しながら 導入しています • 今回は、アイテムベースの手法を紹介します
  • アイテムベースの手法
 (ベクトル空間モデルの紹介) 36
  • アイテムの持つ情報とは 37 • ニュースの場合 • タイトル • 記事本文 • 画像 • サイト情報、メタ情報、Tweet情報 etc..
  • ベクトル空間モデル 38 • 例えば文章情報に着目 • たとえば文章に含まれる「単語の登場数」にだ け着目してみると
  • 39 キーワード 登場数 立体機動装置 1 講談社 1 漫画 2 エレン 1 リヴァイ 1 ウサイン・ボルト 3 進撃の巨人 1 空想科学読本 3 諫山創 1 (略) ※実際は各種の 重み調整が必要
  • ベクトル空間モデル 40 • アイテムを全てベクトルで表現 • ユーザーの嗜好もベクトルで表現 • 例:読んだ記事のベクトルを足していく • ベクトルの”近さ”は簡単に計算できる • ユーザーのベクトルと”近い”記事を推薦
  • 今回はどうやって
 良いベクトル空間を作るか?に フォーカスを当てます 41
  • どうやって単語を抜き出すか 42
  • 形態素解析 43 • wikipedia「対象言語の文法の知識(文法のルールの集まり) や辞書(品詞等の情報付きの単語リスト)を情報源として用い、 自然言語で書かれた文を形態素(Morpheme, おおまかにいえ ば、言語で意味を持つ最小単位)の列に分割し、それぞれの品 詞を判別する作業を指す。」
  • 44
  • 45
  • mecab 46
  • mecab 47 • 日本製のオープンソースの形態素解析エンジン • 簡単、シンプル、速い • すぐに試せる brew install mecab mecab-ipadic
  • 48
  • がっ…!ダメっ…! 49
  • ちゃんとした辞書が必要 50 • 形態素解析は、辞書(単語リスト)をもとに分割している • デフォルトのmecabの辞書では、一般用語しか入っていない • 「ラブライブ!」「μ's」などに対応するには、独自のユー ザー辞書が必要
  • オタク辞書の作り方 51
  • 外部リソースを使う 52 • wikipedia • データが全公開されている • ニコニコ大百科 • オタクキーワードが満載 • 記事のタイトルから、ニッチな キーワードを取得
  • でも全然必要ない単語もいっぱい… 53
  • うーむ… 54
  • とある声優ソムリエが
 思いついた手法 55
  • 56 wikipediaにはカテゴリ情報がある
  • 57 どんどんサブカテゴリを辿っていくと…
  • 58 !!!
  • 親カテゴリからの幅優先探索
 で専門辞書を作成 59
  • 必要な単語だけ
 抽出することに概ね成功 60
  • 61 before
  • 62 after
  • まだまだこだわる 63 • 100%完璧な手法ではない • 探索の深さはadhoc • 公開直後の情報など、wikipediaに記事がない場合がある • 辞書の管理ツールを作成 • 手動で辞書に必要単語を追加できる • 新単語にいち早く対応
  • 結論:なんだかんだで泥臭い 64
  • オタク辞書ができた後の話 65
  • 「続きを読む」を含んだ記事を
 良く読んでいるので、
 「続きを読む」を含んだ記事が 推薦される 66
  • ??? 67
  • リコメンドに不要な単語 68 • 辞書には欲しいが、リコメンドには不要かもしれない単語 • 「そもそも」「こちら」「続き」 (各種一般用語) • 数字、記号 etc…
  • リコメンドに不要な単語 69 • オタク辞書にない単語は使わない • 不要単語(ブラックリスト)管理ツールも作成
  • シノニム変換 70 • 「アイマス」=「アイドルマスター」 • 「ごちうさ」=「ご注文はうさぎですか?」 ! • シノニム管理ツールも作成
  • いいかんじになってきたので
 プロトタイプつくってみた 71
  • ラブライブ!
 の記事しか出ない… 72
  • 重み調整 73 • TFIDF • 「アニメ」を含む記事を1回読むことと、
 「ボンバーマン」を含む記事を1回読むことの重みは異なる • TFIDFだけじゃうまくいかなくなってきた • キーワードの重み管理ツールも作成
  • 重み調整 74 • よりオタク向けなキーワードの重みを上げる • 一般記事全体と、オタク向け記事全体でのキーワード登場回 数の違いを考慮
  • どんどん捗る
 ようになってきた 75
  • 試行錯誤と泥臭さの連続 76
  • 今でも議論・検証しながら 着実に改善しています 77
  • おわりです 78
  • ありがとうございました! @mosa_siru 79
  • おまけ 80
  • ターゲットユーザーに
 さらにフォーカスした機能 81
  • 捗った?機能 82
  • 捗った?機能 83 • ハッカドールちゃんに、リコメンドの フィードバックをするシンプルな機能 • 学習を加速させる ! • 「自動学習じゃないじゃん!」 • 能動的であるターゲットユーザーから、 よりはやく正確な情報が集められる
  • ウォッチリスト 84
  • ウォッチリスト 85 • 好きなタイトル名などを登録しておくと、 そのキーワードを含んだニュースが出る たびに教えてくれる ! • 全文検索エンジンから取得
  • めちゃくちゃ評判が良い 86
  • もはやリコメンドじゃない 87
  • ユーザーのことを考えると 
 絶対に必要な機能だった 
 (というか俺が欲しい) 88
  • 僕らが提供しているのは 
 ”サービス”
 技術とかアルゴリズムはその手段 89
  • ハッカドールはまだ発展途上。 
 より多くの「捗る!」を 
 提供していきます 90
  • おわり 91 @mosa_siru
Comments
Top