Pro Yearly is on sale from $80 to $50! »

機械学習を使ったレシピ調理手順の識別

 機械学習を使ったレシピ調理手順の識別

機械学習を使ってレシピの調理手順を識別する話です。

67d36f3f18a22b190854d0e80754d57f?s=128

開発室Graph

July 27, 2018
Tweet

Transcript

  1. 機械学習を使った レシピ調理手順の識別 C-8 #devsumiC クックパッド株式会社 研究開発部 エンジニア 1

  2. クックパッド • 毎日の料理を楽しみにするサービス • 月間約5,500万人 • レシピ数は290万品 • 大量の画像・テキストデータ •

    ユーザがレシピを書いて投稿 ◦ かなり自由な投稿が可能 ◦ 気軽に投稿できる 2
  3. 課題の設定 3

  4. 調理手順 • クックパッドのレシピ ◦ タイトル ◦ 材料・分量 ◦ 調理手順 ▪

    画像とテキストで入力 できる 4
  5. 調理手順 or Not • 調理の手順そのものではないもの (非手順)がある • 料理に関する手順のみを抜き出した い ↓

    • 非手順を識別するアルゴリズム を作った 5
  6. ルールベースな方法を試す 6

  7. 機械学習を使わずに解けないか • データを眺めて開発者が自ら解いてみる ◦ 非手順には出てくる単語が限られている ◦ 文章全体を見ることはなく特定のキーワードで判断していた • まずはキーワード抽出でできないかやってみる •

    機械学習を使わずに済むならそれに越したことはない ◦ メンテナンスも楽だし可読性も高い 7
  8. キーワード抽出でやってみる • 非手順 ◦ 人気レシピに多い ◦ 必ず調理手順の後ろの方に存在 • 人気レシピの調理手順のうち後ろ10件 を取得する

    • キーワードを抽出する ◦ 単語ごとに分割する ◦ 多く出現する順に並べる ◦ ['掲載', 'つくれぽ', '話題', '感謝', 'み なさん', '100人', 'レシピ', 'コメント', ' れぽ', 'ありがとう'] 8
  9. キーワード抽出はうまくいかない • うまくいかない例 ◦ 上に三つ葉を散らしたらできあがり→非手順と判定 ◦ ◦◦さんがマヨネーズを足して作ってくれました→手順と判定 • Accuracy(正解率) ◦

    51.7% 9
  10. 機械学習を試す 10

  11. 機械学習を試してみる • まずはスコアを出すことを第一に考える • 一般的な手法に頼る ◦ キーワードの組み合わせの出現の特徴量を使って分類 ▪ TF-IDFベクトル •

    単語の出現回数を重み付けしたもの ▪ ロジスティック回帰 • データを2値分類する手法 11
  12. 92.4% Accuracy 12

  13. 実験だけでなくリリースまでやる • サービスから参照可能にするためにデータベースに投入 ◦ 毎週ペアプロしながらバッチにしていった ◦ スコアを確認しつつリファクタリング • 実際にサービスへ投入予定 ◦

    スマートピーカーによるレシピの音声読み上げ ◦ レシピ検索のインデックスからの除外 13
  14. まとめ 14

  15. やるべきことをやるべき順でちゃんとやる • ディスカッション/ヒアリング しながら進めた ◦ 1人で黙々とやるものではない ◦ 課題設定も含めタスクの全行程で行った • 一般的な手法を使った

    ◦ 一般的な手法でちゃんとうまくいった ◦ ディープラーニングはうまくいかなかったときに使う • きちんと性能をチェックした ◦ 正解率だけを見ない ◦ 機械学習には性能をチェックする方法がいくつかある • ちゃんとバッチ化をした • 結果を記録に残していく 15