akikan工場

作ったものや頑張ったことを紹介するブログです

料理をベクトルにしてみました

献立を提案するようなものを作りたいなと思ったので、

料理どうしの距離を計算したり、近い料理が分かるといいなあと思いました。

 

そこで、料理の情報をネットで拾って色々試してみました。

今回は「味の素パーク」さんの情報を使ってみました。

park.ajinomoto.co.jp

 

 

料理名料理の材料がたくさん載っています。

 

料理の材料が似ていれば料理も似ているだろうな、と思ったので、

材料が似ているものどうしが距離が近くなるようにマッピングしようと思いました。

 

自然言語処理的なアプローチとして レーベンシュタイン距離を使おうかな、

ととりあえず考えましたが、

レーベンシュタイン距離は2つの材料が同じか・違うかという情報のみに基づいて計算されるため、勿体無い感じがします。

ブロッコリーとカリフラワーが似てるとかいった情報も学習モデルに組み込みたいところです。

 

そこで今回はdoc2vecを使ってみることにしました。

これなら材料間の類似性もうまく扱えそうです。

 

doc2vecは文書をベクトルにする技術ですが、

今回は料理を文書、材料を単語とみなして扱い、料理をベクトルにします。

 

学習結果

おすすめレシピがツイートされていましたので、これらに近い料理を抽出してみます。

 

 

1位 トースト × ポパイ dip スープ

2位 トースト × コーン dip スープ

3位 ひたパン

 

まあまあそのままであんまり面白くないですけど、学習はうまくいってそうです。

 

もうひとつやってみます。

 

1位 豆腐とコンビーフのピカタ

2位 豚じゃがのポトフ

3位 厚揚げのクロックムッシュ風

 

こちらは少し変わった感じのものも出てきました。

油揚げ→豆腐、ロールキャベツ→コンビーフ みたいな組み合わせでしょうか・・・・

 

2つの料理の合成

ベクトルにしましたので、合成ができます。

足して2分の1にして中間点を出してみます。

 

(ハンバーグステーキ + カレーピラフ) / 2

 

= カレーフライドポテト

 

ハンバーグカレーを期待しましたが、付け合わせのポテトに反応してしまいました。

 

 

感想 

合成がなかなか面白そうなので、この辺を使って献立提案できたら新しいなと思いました。