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

PDF
Elasticsearch for Hackadoll
PDF
失敗から学ぶ機械学習応用
PDF
初心者向けCTFのWeb分野の強化法
PDF
先端技術とメディア表現1 #FTMA15
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
テスト文字列に「うんこ」と入れるな
PDF
2019年度チュートリアルBPE
PDF
最適化超入門
Elasticsearch for Hackadoll
失敗から学ぶ機械学習応用
初心者向けCTFのWeb分野の強化法
先端技術とメディア表現1 #FTMA15
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
テスト文字列に「うんこ」と入れるな
2019年度チュートリアルBPE
最適化超入門

What's hot (20)

PPTX
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
PDF
機械学習で泣かないためのコード設計
PPTX
差分プライバシーとは何か? (定義 & 解釈編)
PDF
BERT入門
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
マネジメントレスのススメ - VPoE-Meetup by manaboo
PDF
目grep入門 +解説
PPTX
本当は恐ろしい分散システムの話
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
ChatGPT 人間のフィードバックから強化学習した対話AI
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
Linux女子部 systemd徹底入門
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
PDF
1-2-2 プラン・お支払い設定
PDF
Transformer メタサーベイ
PDF
研究効率化Tips Ver.2
PPTX
分散システムについて語らせてくれ
PPTX
モデル高速化百選
PDF
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
機械学習で泣かないためのコード設計
差分プライバシーとは何か? (定義 & 解釈編)
BERT入門
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
マネジメントレスのススメ - VPoE-Meetup by manaboo
目grep入門 +解説
本当は恐ろしい分散システムの話
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
ChatGPT 人間のフィードバックから強化学習した対話AI
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Linux女子部 systemd徹底入門
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
1-2-2 プラン・お支払い設定
Transformer メタサーベイ
研究効率化Tips Ver.2
分散システムについて語らせてくれ
モデル高速化百選
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Ad

Viewers also liked (6)

PDF
TechFeedというテクノロジーキュレーションサービスを作った話
PDF
MySQLおじさんの逆襲
PDF
ニコニコ生放送の配信基盤改善
PDF
パターン認識と機械学習 §6.2 カーネル関数の構成
PPTX
登録数2倍にしてと言われた時の正しい対処法
PDF
現在のDNNにおける未解決問題
TechFeedというテクノロジーキュレーションサービスを作った話
MySQLおじさんの逆襲
ニコニコ生放送の配信基盤改善
パターン認識と機械学習 §6.2 カーネル関数の構成
登録数2倍にしてと言われた時の正しい対処法
現在のDNNにおける未解決問題
Ad

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

PDF
Javakuche yono
PDF
10分で分かるr言語入門ver2.14 15 0905
PDF
Jubatusでマルウェア分類
PDF
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
PDF
深層学習ライブラリのプログラミングモデル
PDF
AozoraYomite @InfoTalk 2012/12/21
PDF
Cloud principles and paradigms kimtea-2010-04-24
PDF
Search on AWS - IVS CTO Night and Day 2016 Spring
PPTX
Python による 「スクレイピング & 自然言語処理」入門
PPT
おとなのテキストマイニング
PPTX
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
PDF
10分で分かるr言語入門ver2.15 15 1010
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PDF
リアルタイムにデータ分析してWebサービスの面白さを伝えたい
PDF
実はとても面白い...Documentation library
PPT
Groovyコンファレンス
PDF
とある制作会社の目次索引作成技法
PDF
Pythonの非同期処理を始める前に
PDF
2011 icse-reverse engineering feature models
PDF
Hadoop conference Japan 2011
Javakuche yono
10分で分かるr言語入門ver2.14 15 0905
Jubatusでマルウェア分類
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
深層学習ライブラリのプログラミングモデル
AozoraYomite @InfoTalk 2012/12/21
Cloud principles and paradigms kimtea-2010-04-24
Search on AWS - IVS CTO Night and Day 2016 Spring
Python による 「スクレイピング & 自然言語処理」入門
おとなのテキストマイニング
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
10分で分かるr言語入門ver2.15 15 1010
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
リアルタイムにデータ分析してWebサービスの面白さを伝えたい
実はとても面白い...Documentation library
Groovyコンファレンス
とある制作会社の目次索引作成技法
Pythonの非同期処理を始める前に
2011 icse-reverse engineering feature models
Hadoop conference Japan 2011

More from mosa siru (12)

PDF
LayerXのQAチームで目指したい動き方 (社内資料)
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
KYC and identity on blockchain
PPTX
マイニングプールの収益配分と攻撃手法
PDF
Payment Channel Introduction
PDF
Go, memcached, microservices
PDF
ニュースパスのクローラーアーキテクチャとマイクロサービス
PDF
マイクロにしすぎた結果がこれだよ!
PDF
lua_nginx_module JSON-RPC 2.0 Batch Request
PDF
Twitter SmartList (第5回若手webエンジニア交流会)
PDF
コミュニティ分類アルゴリズムの高速化とソーシャルグラフへの応用
PDF
how to make twitter list automatically
LayerXのQAチームで目指したい動き方 (社内資料)
開発速度が速い #とは(LayerX社内資料)
KYC and identity on blockchain
マイニングプールの収益配分と攻撃手法
Payment Channel Introduction
Go, memcached, microservices
ニュースパスのクローラーアーキテクチャとマイクロサービス
マイクロにしすぎた結果がこれだよ!
lua_nginx_module JSON-RPC 2.0 Batch Request
Twitter SmartList (第5回若手webエンジニア交流会)
コミュニティ分類アルゴリズムの高速化とソーシャルグラフへの応用
how to make twitter list automatically

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