SlideShare a Scribd company logo
捗る! 
リコメンドシステムの裏事情 
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
ハッカドールでは 
• リリース当初はアイテムベースがメイン 
• 現在はユーザーベースも組み合わせて記事を 
配信しています 
• 試行錯誤し、各種ABテストで検証しながら 
35 
導入しています 
• 今回は、アイテムベースの手法を紹介します
アイテムベースの手法 
(ベクトル空間モデルの紹介) 
36
アイテムの持つ情報とは 
• ニュースの場合 
• タイトル 
• 記事本文 
• 画像 
• サイト情報、メタ情報、Tweet情報 etc.. 
37
ベクトル空間モデル 
• 例えば文章情報に着目 
• たとえば文章に含まれる「単語の登場数」にだ 
け着目してみると 
38
39 
キーワード登場数 
立体機動装置1 
講談社1 
漫画2 
エレン1 
リヴァイ1 
ウサイン・ボルト3 
進撃の巨人1 
空想科学読本3 
諫山創1 
(略) 
※実際は各種の 
重み調整が必要
ベクトル空間モデル 
• アイテムを全てベクトルで表現 
• ユーザーの嗜好もベクトルで表現 
• 例:読んだ記事のベクトルを足していく 
• ベクトルの”近さ”は簡単に計算できる 
• ユーザーのベクトルと”近い”記事を推薦 
40
今回はどうやって 
良いベクトル空間を作るか?に 
フォーカスを当てます 
41
どうやって単語を抜き出すか 
42
形態素解析 
• wikipedia「対象言語の文法の知識(文法のルールの集まり) 
や辞書(品詞等の情報付きの単語リスト)を情報源として用い、 
自然言語で書かれた文を形態素(Morpheme, おおまかにいえ 
ば、言語で意味を持つ最小単位)の列に分割し、それぞれの品 
詞を判別する作業を指す。」 
43
44
45
mecab 
46
mecab 
• 日本製のオープンソースの形態素解析エンジン 
47 
• 簡単、シンプル、速い 
• すぐに試せる brew install mecab mecab-ipadic
48
がっ…!ダメっ…! 
49
ちゃんとした辞書が必要 
• 形態素解析は、辞書(単語リスト)をもとに分割している 
• デフォルトのmecabの辞書では、一般用語しか入っていない 
• 「ラブライブ!」「μ's」などに対応するには、独自のユー 
ザー辞書が必要 
50
オタク辞書の作り方 
51
外部リソースを使う 
• wikipedia 
• データが全公開されている 
52 
• ニコニコ大百科 
• オタクキーワードが満載 
• 記事のタイトルから、ニッチな 
キーワードを取得
でも全然必要ない単語もいっぱい… 
53
うーむ… 
54
とある声優ソムリエが 
思いついた手法 
55
wikipediaにはカテゴリ情報がある 
56
どんどんサブカテゴリを辿っていくと… 
57
!!! 
58
親カテゴリからの幅優先探索 
で専門辞書を作成 
59
必要な単語だけ 
抽出することに概ね成功 
60
before 
61
after 
62
まだまだこだわる 
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

More Related Content

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