KHCの

KHC( https://twitter.com/we_can_panic )が140字を超えるツイートをするところ

西洋の料理レシピを統計的に解析したデータで遊んでみる

前略.

『Cooking for Geeks』という本を読んだ.

その付録で以下のデータがついてきたので,いろいろ遊んでみようという内容.

https://www.cookingforgeeks.com/archive/cooccurrence/jpotter-ingredient-cooccurrence.csv

みんなが知らない食材の組み合わせをキミの手で見つけ出せ!

詳細

少しデータの説明.

西洋のレシピを分析し,同じレシピに使われている食材をカウントしたcsvデータ.

一行は[食材1, 食材2, 数値]というフォーマットになっている.数値は食材1と食材2がどの程度同じレシピで使われたかを示しており,0~1の範囲に正規化されている.0ならその食材たちが一緒に使われたレシピはなく,1ならすべてのレシピで一緒に使われている(もしくはどちらも使われていない)といった具合.

以下のコードを使い,関連度の低い食材を見つけて遊んでみる.

def getmin(word):
  global s, foodset
  assert word in foodset
  _s = list(filter(lambda l:l[0]==word, s))
  _s = sorted(_s, key=lambda l:float(l[2]))
  return _s

def G(word):
  return [" ".join(i[1:]) for i in getmin(word)]

if __name__ == '__main__':
  # get data
  global s, foodset
  s = [i.strip().split(",") for i in
                open("jpotter-ingredient-cooccurrence.csv")]
  s += [[i[1], i[0], i[2]] for i in s]
  foodset = set([i[0] for i in s])
  flg = False
  while True:
    word = input(":")
    if word == "reverse":
      flg = not flg
      continue
    if word == "exit":
      exit()
    if flg:
      print("\n".join(G(word)[:10]))
    else:
      print("\n".join(G(word)[::-1][:10]))
    print()

牛肉

日本でもメジャーな食材.データでは"beef"がそれにあたる.

"ground beef"(牛ひき肉)もcsvに含まれていたので,正確にはブロック肉とか細切れ肉を意味してる.多分.

とりあえず関連度が高いもの10選.

:beef
red wine 0.944444444444444
tomato 0.923611111111111
beer 0.777777777777778
green beans 0.666666666666667
bayleaf 0.621621621621622
coriander 0.615384615384615
black pepper 0.611111111111111
hamburger buns 0.6
provolone cheese 0.5
carrots 0.491071428571429

赤ワインが牛肉の使われているレシピの94%で使用されている. 煮込んだりするんだろうか.(もしくは付け合わせのドリンクとして入っている?)

あとはトマトやgreen beans(さやいんげん),カリフラワーやチーズなど,それっぽい食材がランクインしている.(ビールは肉を柔らかくするので,たぶん煮込み用である.)

:ground beef
tomato 1
black pepper 0.533333333333333
ketchup 0.5
ketchup 0.377777777777778
yellow mustard 0.333333333333333
salsa 0.266666666666667
chili 0.266666666666667
flour tortillas 0.222222222222222
pinto beans 0.2
spaghetti sauce 0.181818181818182

ちなみに牛ひき肉だとこのような結果に.海外って合い挽き肉使わないの?

トマトが100%の確率で牛ひき肉の付け合わせに使われている. ケチャップが2つあるのは統計ミスだろうか.

全体的に,こっちはミートソース用な感じ.

次.使われてないやつ10選.

:reverse
:beef
blue cheese 0
coconut milk 0
cottage cheese 0
evaporated milk 0
halfandhalf 0
liquid smoke flavoring 0
mint 0
yellow mustard 0
chocolate 0.0173160173160173
shortening 0.0238095238095238

ブルーチーズ,ココナッツミルク,カッテージチーズなど合いそうにないものがランクイン.

ブルーチーズはクセが強く,ココナッツミルクは馴染みがなく,カッテージチーズ(ヨーグルトに酢を混ぜると出てくる)は風味が弱いんだろう.

また,牛ひき肉のときはtop10だったyellow mustardもある.食材同士の相性は悪くないはずなので,ソースに混ぜてみるのも面白いかもしれない(少なくともその下のchocolateよりは合いそうだが)

"halfandhalf"はミルクとクリームを混ぜたやつで,コーヒーとかに混ぜる用らしい.

ミルクもクリームも牛肉との相性は悪くないし,ソースとかに使われたりしないんだろうか?

あとはその下の"liquid smoke flavoring".燻製液らしいが,向こうではビーフジャーキーやローストビーフを作ったりしないんだろうか.カルチャーギャップが垣間見える.

halfandhalf

さっき出てきた謎食材.ミルクとクリームでよくない??

:halfandhalf
black pepper 0.833333333333333
chicken 0.5
pasta 0.333333333333333
parmesan cheese 0.333333333333333
white pepper 0.166666666666667
potatoes 0.166666666666667
olive oil 0.166666666666667
mushrooms 0.166666666666667
mozzarella cheese 0.166666666666667
dill 0.166666666666667

なるほど,どうやらパスタやサラダなどに使うものらしい.

"dill"は香草で,これもチキンサラダ(サラダチキン?)に使われるやつっぽい.

おそらく牛肉などに使うには,ミルクが多すぎるんだろう.

:halfandhalf
beef 0
bread crumbs 0
carrots 0
cayenne pepper 0
cinnamon 0
green onion 0
italian seasoning 0
leek 0
monterey jack cheese 0
nutmeg 0

ちなみに使われてない順だとbeefや"bread crumbs"(パンくず)がランクイン.

ニンジンには合いそうだと思うんだけどなー

tomato

汎用食材トマト.生や煮込みのイメージが強いが,オムレツとかに入れても意外とうまい.

:tomato
zucchini 1
yellow onion 1
tortilla chips 1
salsa 1
pinto beans 1
oregano 1
olives 1
lettuce 1
kidney beans 1
ground beef 1

どうやら向こうでもサラダ系が多いらしい.どれも数値が1なことをみると,トマトの汎用性の高さが窺われる.

green chile pepper,tomato,1
feta cheese,tomato,1
cumin,tomato,1
cucumber,tomato,1
corn,tomato,1
coriander,tomato,1
chili,tomato,1
chili beans,tomato,1
black beans,tomato,1
beer,tomato,1
italian seasoning,tomato,0.954545454545455

"ground beef"以下のデータも出してみた.

ビールとトマトの数値が高いのが意外.どう使うんだろうと思って調べたら,トマトジュースとビールを使ったカクテルのレシピっぽい.

どっちもフレッシュなイメージがあるので,合いそうっちゃ合いそう.

逆順.

:tomato
corn syrup 0
cranberries 0
evaporated milk 0
halfandhalf 0
leek 0
lemon pepper 0
poultry seasoning 0
pumpkin 0
rolled oats 0
romano cheese 0

今度はゼロが多い.

意外と両極端な食材なんだな.

"corn syrop"は,コーンシロップというコーンから作られたシロップらしい.

その下にはクランベリーや"evaporated milk"(エバミルク.練乳みたいなやつ)など,甘い系の食材が続く.

あと"rolled oats"(グラノーラみたいな,ローストした大麦)は確かに合わないだろうな.水分比率が違いすぎるし,トマトのエキスをグラノーラに染み込ませてもあまり美味しくなさそう.

leek(ポロネギ)やromano cheese(ヤギのチーズ)は,ローストチキンとかパスタとかで使われると思うが,データに偏りがあるんだろうか.


飽きたので以上!みんなも遊んでみてね!