めりも4歳の記録 (2/3):レシピ推薦の内側


めりも4歳の記録:レシピ推薦 (1/3) - When I Think of You, I Smileで、レシピ推薦をしてもらう方法を書きました。
ここではちょっと、レシピ推薦がどんな流れで行われているのか説明してみたいと思いますっ。

レシピの推薦は1) 文章の取得 2) 文章の解析 3) レシピの探索 4) レシピの推薦の3段階4段階(だった!)で行われています。

1) 文章の取得

ここは天気予報と同じです。数分に一度はてなハイクAPIを使って取得します。

2) 文章の解析

文章の解析は2段階に分けてしています。

i) レシピ・料理を聞いているかの判断

文章中に「料理おしえて」などの言葉が入っているかどうか探して、入っていたらこれはレシピを聞いてるのね!とします。

ii) レシピ・料理を聞いているなら、なんの料理を聞いているのか探す

文章中に「」で囲われた単語を探して、それをもとにレシピを探します。

当初は1) 「Yahoo!日本語形態素解析API」を使って、文章を分解して、分解した文章中から名詞を探す→2)名詞をもとにレシピ検索できるんじゃない?と思ったのですが1)と2)の間に罠があって、どの名詞が何を意味しているのか、と言うのが分からないのでした。
それなら、当面は「」で囲って素材を教えてもらう→素材データベースを作る→構文解析で名詞を取得して素材データベースをもとにどの名詞が素材か探してくればいいかも!と思ったのですが、いかんせん素材の数は星の数ほどあるよね、ということで、「」でくくってもらうことになりました。

3) レシピの検索

現在めりもは、Cookpadの検索結果のwebページ(http://cookpad.com/search/post)を直接パースして結果を作っています。
検索オプションでorder(古い順新しい順)とかquick(ぴったり検索orじっくり検索/これなんだろう?)とかpage(何ページめの検索結果か)と言ったパラメータがあるんだけどここら辺はうまく動かなかった(なんでだろう?)ので対応できませんでした。
なので、いまのところは、cookpadの「ぴったり検索」で出てきたページ(1ページ目)の中からレシピを選んでいます。

また、はじめは、cookpad私的APIを使おうと思っていたのですが、だいたい3つくらい考えてやめちゃいました。

  • 料理推薦の需要が、多いか少ないか含めてどれくらいあるか、よく分からない (おかげさまで盛況です)
  • 手製APIということでいつまで使えるかよくわからない
  • cookpadRails使ってるとのことだから、そんなにページ構成変わらないんじゃないかしら

4) レシピの推薦

探したレシピをもとに、推薦文章を作ります。ここは天気予報と同じです。

その3)は「めりも4歳の記録:レシピの推薦(3/3)終わりに」だよ!