master-thesis/1M_word2vec.ipynb

1013 lines
73 KiB
Plaintext
Raw Normal View History

2019-05-14 21:46:16 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1M_recipes dataset word2vec experiments"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import json\n",
"\n",
"import nltk\n",
"from nltk.stem import PorterStemmer\n",
"from nltk.stem import LancasterStemmer\n",
"from nltk.corpus import stopwords as nltk_stopwords\n",
"\n",
"from pprint import pprint\n",
"\n",
"from gensim.test.utils import common_texts, get_tmpfile\n",
"from gensim.models import Word2Vec\n",
"\n",
"from json_buffered_reader import JSON_buffered_reader as JSON_br\n",
"\n",
"import settings"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from ipypb import track"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* reading firs n recipes from json stream"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"n = 100000"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"buffered_reader = JSON_br(settings.one_million_recipes_file)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"instructions = []"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"stopwords = set(nltk_stopwords.words('english'))\n",
"sentence_symbols = set(('.', ';', '!', '?', ',')) \n",
"porter = PorterStemmer()\n",
"model = None\n",
"\n",
"stemmed_stopwords = set([porter.stem(word) for word in stopwords])\n",
"\n",
"def recipe2instructions(stream_item):\n",
" return [t['text'] for t in stream_item['instructions']]\n",
"\n",
"def stemmed_recipe_instruction(json_item, stemmer = porter):\n",
" item_instructions = recipe2instructions(json_item)\n",
" stemmed_list = []\n",
" for instruction in item_instructions:\n",
" stemmed_list.append([stemmer.stem(i).lower() for i in nltk.word_tokenize(instruction)])\n",
" \n",
" result = []\n",
" for stemmed in stemmed_list:\n",
" stemmed_without_stopwords = []\n",
" for word in stemmed:\n",
" if (word not in stopwords) and (word not in sentence_symbols):\n",
" stemmed_without_stopwords.append(word)\n",
" result.append(stemmed_without_stopwords)\n",
" \n",
" return result\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* example:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"#item = buffered_reader.__next__()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"#stemmed_recipe_instruction(item)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* reading up to n recipes:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:0; max-width:15ex; vertical-align:middle; text-align:right\"></span>\n",
"<progress style=\"width:60ex\" max=\"100000\" value=\"100000\" class=\"Progress-main\"/></progress>\n",
"<span class=\"Progress-label\"><strong>100%</strong></span>\n",
"<span class=\"Iteration-label\">100000/100000</span>\n",
"<span class=\"Time-label\">[06:06<00:00, 0.00s/it]</span></div>"
],
"text/plain": [
"\u001b[A\u001b[2K\r",
" [████████████████████████████████████████████████████████████] 100000/100000 [06:06<00:00, 0.00s/it]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"for i in track(range(n)):\n",
" json_recipe = buffered_reader.__next__()\n",
" instructions += stemmed_recipe_instruction(json_recipe)\n",
" #print(i)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* train word2vec on that instructions"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"model = Word2Vec(instructions, size=512, window=1, min_count=3, workers=4)\n",
"def word_similarity(word_a:str, word_b:str, model=model, stemmer=porter):\n",
" return model.wv.similarity(stemmer.stem(word_a), stemmer.stem(word_b))\n",
"\n",
"def word_exists(word:str, model=model, stemmer=porter):\n",
" return stemmer.stem(word) in model.wv\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.42250293"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"word_similarity(\"dice\", \"onions\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'salad'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.wv.most_similar_to_given(\"wash\", [\"salad\",\"potato\", \"oil\", \"tomato\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* check for a list of cooking verbs and ingredients whether they're represented by our model"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"from cooking_vocab import cooking_verbs\n",
"from cooking_ingredients import ingredients"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"model_actions = []\n",
"model_ingredients = []"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"for action in cooking_verbs:\n",
" if word_exists(action):\n",
" model_actions.append(action)\n",
"\n",
"for ingredient in ingredients:\n",
" if word_exists(ingredient):\n",
" model_ingredients.append(ingredient)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'found 108 of 111 valid actions and 160 of 648 valid ingredients'\n"
]
}
],
"source": [
"pprint(f\"found {len(model_actions)} of {len(cooking_verbs)} valid actions and {len(model_ingredients)} of {len(ingredients)} valid ingredients\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"stemmed_ingredients = [porter.stem(ing) for ing in model_ingredients]\n",
"stemmed_actions = [porter.stem(act) for act in model_actions]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## cross-category-similarites\n",
"* now get the most likely ingredients for every action:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Cooking Action to Ingredient"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"add --> ['scallion', 'celeri', 'parsley', 'onion', 'thyme', 'garlic', 'chive', 'oregano', 'salt', 'cilantro']\n",
"adjust --> ['cayenn', 'salt', 'sriracha', 'pepper', 'nutmeg', 'oregano', 'marjoram', 'cumin', 'tumer', 'cornflour']\n",
"arrange --> ['scallion', 'lettuc', 'zucchini', 'avocado', 'cucumb', 'arugula', 'pineappl', 'onion', 'carrot', 'watercress']\n",
"bake --> ['cornmeal', 'cinnamon', 'pecan', 'flour', 'margarin', 'vanilla', 'butter', 'shorten', 'walnut', 'almond']\n",
"baste --> ['veget', 'chicken', 'pork', 'meat', 'juic', 'season', 'kimchi', 'beer', 'honey', 'mirin']\n",
"batter --> ['dough', 'flour', 'polenta', 'cornmeal', 'coconut', 'ice', 'pecan', 'grit', 'buttermilk', 'tortilla']\n",
"beat --> ['vanilla', 'buttermilk', 'shorten', 'cream', 'milk', 'sugar', 'molass', 'egg', 'margarin', 'mascarpon']\n",
"blend --> ['buttermilk', 'honey', 'molass', 'nutmeg', 'cream', 'vanilla', 'allspic', 'milk', 'chickpea', 'cayenn']\n",
"boil --> ['water', 'penn', 'dashi', 'cornflour', 'saffron', 'mirin', 'sake', 'spaghetti', 'pasta', 'quinoa']\n",
"braise --> ['kimchi', 'pork', 'mussel', 'shiitak', 'tomatillo', 'mushroom', 'beer', 'tomato', 'sauc', 'chicken']\n",
"break --> ['onion', 'avocado', 'scallion', 'pancetta', 'pineappl', 'shallot', 'prosciutto', 'chees', 'parsley', 'sausag']\n",
"bread --> ['bread', 'baguett', 'prosciutto', 'eggplant', 'tortilla', 'paneer', 'avocado', 'ham', 'banana', 'almond']\n",
"broil --> ['baguett', 'scallion', 'season', 'ham', 'shallot', 'shrimp', 'pork', 'prosciutto', 'sauc', 'garlic']\n",
"brown --> ['margarin', 'butter', 'molass', 'oil', 'salt', 'mirin', 'shorten', 'honey', 'onion', 'ketchup']\n",
"brush --> ['egg', 'season', 'butter', 'honey', 'bread', 'flour', 'lemon', 'scallion', 'oliv', 'margarin']\n",
"build --> ['guacamol', 'salsa', 'baguett', 'beansprout', 'tortilla', 'sauc', 'pesto', 'season', 'prosciutto', 'cream']\n",
"burn --> ['molass', 'honey', 'gingerroot', 'butter', 'ketchup', 'margarin', 'vinegar', 'mustard', 'sugar', 'oil']\n",
"bury --> ['beansprout', 'mayonais', 'cotija', 'pimento', 'pinenut', 'fettucin', 'turnip', 'kimchi', 'radish', 'daikon']\n",
"carve --> ['kimchi', 'pork', 'ham', 'season', 'baguett', 'beansprout', 'radish', 'crawfish', 'pimento', 'lettuc']\n",
"check --> ['beer', 'cumin', 'grit', 'quinoa', 'chicken', 'crawfish', 'meat', 'mussel', 'pepper', 'tumer']\n",
"chill --> ['ice', 'cream', 'ricotta', 'buttermilk', 'egg', 'tequila', 'cornflour', 'vanilla', 'strawberri', 'shorten']\n",
"chop --> ['scallion', 'watercress', 'celeri', 'parsley', 'cilantro', 'radish', 'thyme', 'carrot', 'chive', 'shallot']\n",
"clarify --> ['lard', 'ghee', 'peanut', 'margarin', 'shorten', 'oil', 'cream', 'honey', 'oliv', 'molass']\n",
"close --> ['baguett', 'prosciutto', 'guacamol', 'ham', 'crawfish', 'peppercorn', 'bread', 'beansprout', 'cream', 'ketchup']\n",
"cook --> ['scallion', 'onion', 'carrot', 'sausag', 'shallot', 'veget', 'mushroom', 'season', 'gingerroot', 'zucchini']\n",
"cool --> ['ice', 'cream', 'ghee', 'ricotta', 'strawberri', 'coconut', 'molass', 'juic', 'kale', 'banana']\n",
"correct --> ['tumer', 'sriracha', 'cayenn', 'salt', 'pesto', 'grit', 'guacamol', 'marjoram', 'paprika', 'cornflour']\n",
"cover --> ['carrot', 'cauliflow', 'cabbag', 'bean', 'asparagu', 'pasta', 'chicken', 'potato', 'spinach', 'allspic']\n",
"crack --> ['nutmeg', 'mussel', 'cayenn', 'yeast', 'allspic', 'cardamom', 'salt', 'clove', 'bread', 'crawfish']\n",
"crumple --> ['paneer', 'pinenut', 'prosciutto', 'dough', 'baguett', 'pancetta', 'fettucin', 'cotija', 'lettuc', 'shiitak']\n",
"curdle --> ['yoghurt', 'mayonais', 'buttermilk', 'molass', 'egg', 'grit', 'cornflour', 'mascarpon', 'milk', 'brandi']\n",
"cut --> ['avocado', 'lettuc', 'radish', 'scallion', 'celeri', 'baguett', 'onion', 'cucumb', 'pineappl', 'carrot']\n",
"debone --> ['crawfish', 'chicken', 'kimchi', 'pork', 'beansprout', 'season', 'ham', 'pimento', 'paneer', 'dashi']\n",
"dice --> ['scallion', 'celeri', 'turnip', 'radish', 'pimento', 'carrot', 'cucumb', 'avocado', 'onion', 'pea']\n",
"discard --> ['lemongrass', 'scallion', 'juic', 'allspic', 'celeri', 'rosemari', 'avocado', 'seed', 'thyme', 'clove']\n",
"drain --> ['chickpea', 'okra', 'penn', 'pea', 'kale', 'broccoli', 'linguin', 'shiitak', 'zucchini', 'caper']\n",
"dress --> ['pesto', 'salsa', 'arugula', 'watercress', 'cilantro', 'lettuc', 'guacamol', 'oliv', 'radish', 'mayonais']\n",
"fillet --> ['shrimp', 'eggplant', 'season', 'caper', 'chicken', 'tortilla', 'pork', 'pepper', 'paprika', 'rosemari']\n",
"flour --> ['flour', 'cornmeal', 'buttermilk', 'butter', 'shorten', 'sugar', 'cinnamon', 'cornflour', 'milk', 'nutmeg']\n",
"fold --> ['egg', 'ricotta', 'chees', 'scallion', 'banana', 'mascarpon', 'buttermilk', 'cream', 'pecan', 'avocado']\n",
"freeze --> ['dough', 'ice', 'strawberri', 'noodl', 'peach', 'mussel', 'banana', 'pasta', 'paneer', 'pineappl']\n",
"fry --> ['pancetta', 'oil', 'ghee', 'bacon', 'scallion', 'sausag', 'oliv', 'onion', 'shallot', 'chive']\n",
"garnish --> ['chive', 'mint', 'cilantro', 'scallion', 'parsley', 'basil', 'watercress', 'caper', 'lime', 'lettuc']\n",
"glaze --> ['sauc', 'honey', 'brandi', 'pecan', 'pineappl', 'juic', 'molass', 'peach', 'appl', 'mirin']\n",
"grate --> ['scallion', 'chive', 'cilantro', 'parsley', 'pimento', 'oliv', 'radish', 'ricotta', 'lemon', 'turnip']\n",
"grind --> ['coriand', 'allspic', 'tumer', 'cumin', 'cayenn', 'cardamom', 'salt', 'peppercorn', 'spice', 'marjoram']\n",
"grill --> ['ham', 'pork', 'shrimp', 'sauc', 'baguett', 'oliv', 'sausag', 'scallion', 'tortilla', 'cilantro']\n",
"gut --> ['crawfish', 'lemongrass', 'beansprout', 'daikon', 'seed', 'kimchi', 'cardamom', 'shiitak', 'tumer', 'paneer']\n",
"heat --> ['ghee', 'oil', 'oliv', 'shallot', 'veget', 'butter', 'lard', 'peanut', 'caper', 'pancetta']\n",
"knead --> ['dough', 'flour', 'yeast', 'cornmeal', 'bread', 'buttermilk', 'tortilla', 'ricotta', 'shorten', 'pasta']\n",
"lower --> ['ghee', 'oliv', 'leek', 'chicken', 'rosemari', 'crawfish', 'prosciutto', 'zucchini', 'pancetta', 'sausag']\n",
"macerate --> ['brandi', 'mint', 'tequila', 'beansprout', 'strawberri', 'peach', 'mango', 'juic', 'raisin', 'watercress']\n",
"marinate --> ['season', 'pork', 'lettuc', 'mirin', 'scallion', 'juic', 'avocado', 'chickpea', 'kimchi', 'cilantro']\n",
"mash --> ['turnip', 'chickpea', 'yoghurt', 'carrot', 'salsa', 'avocado', 'allspic', 'caper', 'cilantro', 'onion']\n",
"melt --> ['cream', 'margarin', 'peanut', 'butter', 'mascarpon', 'pecan', 'shorten', 'milk', 'sugar', 'ricotta']\n",
"mince --> ['gingerroot', 'scallion', 'parsley', 'celeri', 'cilantro', 'chive', 'shallot', 'thyme', 'garlic', 'onion']\n",
"mix --> ['buttermilk', 'molass', 'honey', 'cream', 'egg', 'allspic', 'milk', 'margarin', 'nutmeg', 'butter']\n",
"open --> ['mussel', 'crawfish', 'beansprout', 'baguett', 'tomatillo', 'clove', 'eggplant', 'okra', 'shrimp', 'guacamol']\n",
"parboil --> ['turnip', 'radish', 'carrot', 'daikon', 'pea', 'broccoli', 'cauliflow', 'kale', 'zucchini', 'shiitak']\n",
"peel --> ['turnip', 'carrot', 'zucchini', 'lemongrass', 'daikon', 'radish', 'beet', 'beansprout', 'ginger', 'celeri']\n",
"pickle --> ['cucumb', 'radish', 'pimento', 'caper', 'cilantro', 'kimchi', 'ketchup', 'scallion', 'chive', 'sriracha']\n",
"place --> ['scallion', 'onion', 'butter', 'celeri', 'parsley', 'oliv', 'lemon', 'egg', 'avocado', 'buttermilk']\n",
"poach --> ['mussel', 'buttermilk', 'caper', 'scallion', 'shiitak', 'pea', 'kimchi', 'veget', 'mushroom', 'brandi']\n",
"pour --> ['molass', 'buttermilk', 'milk', 'honey', 'beer', 'ketchup', 'tomato', 'butter', 'coconut', 'sriracha']\n",
"prepare --> ['shrimp', 'sauc', 'ricotta', 'pineappl', 'beer', 'hazelnut', 'season', 'bread', 'avocado', 'banana']\n",
"pull --> ['meat', 'crawfish', 'prosciutto', 'ham', 'eggplant', 'beef', 'pork', 'zucchini', 'chicken', 'kale']\n",
"put --> ['butter', 'scallion', 'lemon', 'buttermilk', 'parsley', 'onion', 'oliv', 'avocado', 'egg', 'margarin']\n",
"reduce --> ['brandi', 'oliv', 'ghee', 'sugar', 'molass', 'shallot', 'ketchup', 'sriracha', 'mirin', 'tomato']\n",
"refrigerate --> ['strawberri', 'dough', 'mint', 'beet', 'ice', 'beansprout', 'buttermilk', 'banana', 'peach', 'meat']\n",
"remove --> ['juic', 'crawfish', 'pancetta', 'ghee', 'tomatillo', 'scallion', 'pineappl', 'parsley', 'kale', 'shiitak']\n",
"rinse --> ['radish', 'pea', 'okra', 'chickpea', 'shiitak', 'daikon', 'cucumb', 'season', 'pimento', 'spinach']\n",
"roast --> ['ham', 'pork', 'eggplant', 'oil', 'chicken', 'shallot', 'thyme', 'tomatillo', 'zucchini', 'clove']\n",
"rollup --> ['beansprout', 'pinenut', 'mayonais', 'cotija', 'tequila', 'tumer', 'fettucin', 'guacamol', 'yoghurt', 'kimchi']\n",
"rub --> ['season', 'mustard', 'rosemari', 'salt', 'flour', 'spice', 'peppercorn', 'cumin', 'oregano', 'thyme']\n",
"salt --> ['salt', 'cayenn', 'nutmeg', 'paprika', 'allspic', 'marjoram', 'oregano', 'cumin', 'thyme', 'cardamom']\n",
"scoop --> ['avocado', 'ricotta', 'strawberri', 'buttermilk', 'bean', 'dough', 'guacamol', 'water', 'vanilla', 'mango']\n",
"scorch --> ['butter', 'honey', 'molass', 'coconut', 'margarin', 'buttermilk', 'yeast', 'banana', 'yoghurt', 'oil']\n",
"scramble --> ['noodl', 'grit', 'sausag', 'mayonais', 'ghee', 'ricotta', 'yoghurt', 'buttermilk', 'rice', 'okra']\n",
"season --> ['season', 'cayenn', 'oregano', 'marjoram', 'pepper', 'thyme', 'paprika', 'salt', 'spice', 'cumin']\n",
"serve --> ['lime', 'lettuc', 'arugula', 'radish', 'chive', 'watercress', 'sriracha', 'avocado', 'baguett', 'guacamol']\n",
"set --> ['margarin', 'pineappl', 'nutmeg', 'onion', 'cream', 'shorten', 'butter', 'allspic', 'ricotta', 'salt']\n",
"simmer --> ['quinoa', 'mirin', 'beer', 'onion', 'pea', 'chickpea', 'thyme', 'tomato', 'saffron', 'couscou']\n",
"skim --> ['grit', 'brandi', 'dashi', 'lard', 'mussel', 'ghee', 'molass', 'beer', 'cornflour', 'milk']\n",
"slice --> ['lettuc', 'scallion', 'cucumb', 'radish', 'carrot', 'pimento', 'avocado', 'celeri', 'arugula', 'watercress']\n",
"slowcook --> ['beansprout', 'fettucin', 'mayonais', 'paneer', 'cotija', 'pinenut', 'daikon', 'kimchi', 'crawfish', 'kalamata']\n",
"soak --> ['raisin', 'chickpea', 'shiitak', 'molass', 'pineappl', 'water', 'pea', 'carrot', 'saffron', 'brandi']\n",
"sour --> ['yoghurt', 'mascarpon', 'sriracha', 'chees', 'buttermilk', 'milk', 'ricotta', 'ketchup', 'mayonais', 'avocado']\n",
"spice --> ['spice', 'peppercorn', 'season', 'cumin', 'tumer', 'allspic', 'cinnamon', 'cardamom', 'cayenn', 'mustard']\n",
"spoon --> ['ricotta', 'mascarpon', 'avocado', 'pesto', 'buttermilk', 'strawberri', 'egg', 'banana', 'tomato', 'zucchini']\n",
"spread --> ['ricotta', 'chees', 'butter', 'mascarpon', 'cream', 'pesto', 'avocado', 'walnut', 'pecan', 'bread']\n",
"sprinkle --> ['salt', 'parsley', 'oregano', 'season', 'lemon', 'cayenn', 'thyme', 'nutmeg', 'garlic', 'basil']\n",
"squeeze --> ['lemon', 'lime', 'orang', 'cucumb', 'avocado', 'tomato', 'pineappl', 'caper', 'chickpea', 'strawberri']\n",
"steam --> ['mussel', 'couscou', 'turnip', 'cauliflow', 'shiitak', 'quinoa', 'leek', 'pea', 'noodl', 'potato']\n",
"steep --> ['mint', 'brandi', 'tequila', 'chickpea', 'dashi', 'mussel', 'mirin', 'yeast', 'couscou', 'kale']\n",
"stir --> ['shallot', 'onion', 'scallion', 'thyme', 'celeri', 'garlic', 'oregano', 'cumin', 'carrot', 'allspic']\n",
"strain --> ['dashi', 'tequila', 'mussel', 'brandi', 'beer', 'chickpea', 'cornflour', 'kimchi', 'veget', 'sriracha']\n",
"sugar --> ['sugar', 'honey', 'molass', 'cinnamon', 'nutmeg', 'allspic', 'margarin', 'cardamom', 'vanilla', 'milk']\n",
"sweeten --> ['yoghurt', 'tequila', 'brandi', 'mascarpon', 'milk', 'honey', 'vanilla', 'mayonais', 'molass', 'cream']\n",
"taste --> ['cayenn', 'nutmeg', 'sriracha', 'tumer', 'marjoram', 'paprika', 'oregano', 'season', 'gingerroot', 'allspic']\n",
"thaw --> ['tofu', 'spinach', 'okra', 'kale', 'paneer', 'peach', 'ricotta', 'penn', 'strawberri', 'chickpea']\n",
"thicken --> ['cornflour', 'pasta', 'quinoa', 'sriracha', 'spaghetti', 'beer', 'grit', 'rice', 'mirin', 'meat']\n",
"toast --> ['baguett', 'bread', 'pecan', 'walnut', 'almond', 'prosciutto', 'pinenut', 'parsley', 'coriand', 'seed']\n",
"try --> ['guacamol', 'mayonais', 'yoghurt', 'kimchi', 'pinenut', 'paneer', 'crawfish', 'kalamata', 'fettucin', 'grit']\n",
"warm --> ['honey', 'margarin', 'molass', 'coconut', 'sriracha', 'vinegar', 'cornflour', 'sugar', 'peanut', 'yeast']\n",
"wash --> ['radish', 'shiitak', 'turnip', 'daikon', 'watercress', 'okra', 'parsley', 'scallion', 'celeri', 'thyme']\n",
"whip --> ['mascarpon', 'strawberri', 'ice', 'cream', 'vanilla', 'yoghurt', 'milk', 'ricotta', 'chees', 'banana']\n",
"whisk --> ['molass', 'honey', 'sugar', 'milk', 'buttermilk', 'cream', 'cornflour', 'egg', 'mustard', 'vanilla']\n",
"wipe --> ['shiitak', 'okra', 'shallot', 'oil', 'ghee', 'eggplant', 'mushroom', 'season', 'leek', 'shrimp']\n"
]
}
],
"source": [
"for action in model_actions:\n",
" ings = stemmed_ingredients[:]\n",
" best_ingredients = []\n",
" for i in range(10):\n",
" best = model.wv.most_similar_to_given(porter.stem(action), ings)\n",
" ings.remove(best)\n",
" best_ingredients.append(best)\n",
" print(f\"{action} --> {best_ingredients}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ingredient to Cooking Action"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"salt --> ['salt', 'add', 'sprinkl', 'season', 'sugar', 'grind', 'rub', 'mix', 'stir', 'tast']\n",
"garlic --> ['minc', 'add', 'sprinkl', 'salt', 'stir', 'season', 'chop', 'dice', 'pickl', 'grind']\n",
"onions --> ['minc', 'add', 'stir', 'dice', 'chop', 'salt', 'sprinkl', 'arrang', 'pickl', 'parboil']\n",
"water --> ['boil', 'add', 'sugar', 'salt', 'flour', 'pour', 'stir', 'soak', 'rins', 'steam']\n",
"sugar --> ['sugar', 'beat', 'salt', 'whisk', 'flour', 'add', 'sweeten', 'sprinkl', 'mix', 'stir']\n",
"butter --> ['flour', 'sugar', 'melt', 'sprinkl', 'spread', 'add', 'beat', 'put', 'salt', 'brown']\n",
"pepper --> ['season', 'salt', 'sprinkl', 'add', 'minc', 'tast', 'pickl', 'spice', 'rub', 'chop']\n",
"eggs --> ['beat', 'mix', 'fold', 'add', 'brush', 'flour', 'whisk', 'curdl', 'put', 'place']\n",
"tomatoes --> ['add', 'pickl', 'dice', 'stir', 'minc', 'pour', 'arrang', 'squeez', 'garnish', 'put']\n",
"carrots --> ['parboil', 'minc', 'dice', 'add', 'peel', 'chop', 'stir', 'slice', 'buri', 'arrang']\n",
"milk --> ['beat', 'sour', 'add', 'sweeten', 'sugar', 'whisk', 'pour', 'stir', 'flour', 'mix']\n",
"oil --> ['salt', 'fri', 'heat', 'clarifi', 'wipe', 'flour', 'sugar', 'add', 'brown', 'minc']\n",
"scallions --> ['minc', 'add', 'chop', 'dice', 'pickl', 'grate', 'arrang', 'stir', 'garnish', 'slice']\n",
"flour --> ['flour', 'sugar', 'sprinkl', 'rub', 'knead', 'beat', 'salt', 'batter', 'spread', 'brush']\n",
"lime --> ['squeez', 'pickl', 'garnish', 'add', 'minc', 'sour', 'sprinkl', 'serv', 'grate', 'peel']\n",
"ginger --> ['minc', 'add', 'salt', 'sugar', 'peel', 'sprinkl', 'stir', 'spice', 'chop', 'grind']\n",
"shallots --> ['minc', 'stir', 'add', 'chop', 'dice', 'wipe', 'pickl', 'fri', 'salt', 'discard']\n",
"honey --> ['sugar', 'sweeten', 'salt', 'whisk', 'add', 'beat', 'mix', 'pour', 'sour', 'blend']\n",
"avocado --> ['dice', 'sour', 'arrang', 'pickl', 'minc', 'chop', 'dress', 'garnish', 'slice', 'spread']\n",
"lemon --> ['add', 'squeez', 'sprinkl', 'salt', 'sugar', 'pickl', 'garnish', 'put', 'grate', 'minc']\n",
"paprika --> ['salt', 'season', 'minc', 'sprinkl', 'spice', 'add', 'sugar', 'tast', 'grind', 'grate']\n",
"cilantro --> ['minc', 'pickl', 'add', 'chop', 'garnish', 'grate', 'dice', 'buri', 'dress', 'sour']\n",
"salsa --> ['dress', 'dice', 'pickl', 'sour', 'mash', 'chop', 'buri', 'garnish', 'season', 'spread']\n",
"buttermilk --> ['beat', 'sour', 'mix', 'flour', 'add', 'blend', 'whisk', 'pour', 'sweeten', 'sugar']\n",
"cumin --> ['salt', 'grind', 'minc', 'add', 'season', 'spice', 'stir', 'sugar', 'sprinkl', 'rub']\n",
"shrimp --> ['fillet', 'wipe', 'arrang', 'grill', 'fri', 'season', 'bast', 'marin', 'broil', 'cook']\n",
"potatoes --> ['parboil', 'mash', 'add', 'minc', 'steam', 'stir', 'cook', 'dice', 'debon', 'peel']\n",
"chicken --> ['debon', 'bast', 'season', 'fillet', 'roast', 'wipe', 'cook', 'discard', 'pour', 'brais']\n",
"celery --> ['minc', 'add', 'dice', 'chop', 'parboil', 'stir', 'peel', 'pickl', 'season', 'slice']\n",
"zucchini --> ['parboil', 'arrang', 'peel', 'dice', 'add', 'minc', 'chop', 'stir', 'slice', 'buri']\n",
"cucumber --> ['pickl', 'dice', 'minc', 'slice', 'arrang', 'chop', 'parboil', 'squeez', 'buri', 'dress']\n",
"mayonaise --> ['buri', 'slowcook', 'rollup', 'sweeten', 'sour', 'dress', 'curdl', 'pickl', 'gut', 'tast']\n",
"tumeric --> ['salt', 'grind', 'buri', 'pickl', 'spice', 'tast', 'sugar', 'minc', 'sweeten', 'rollup']\n",
"mushrooms --> ['minc', 'add', 'stir', 'dice', 'pickl', 'chop', 'wipe', 'season', 'cook', 'parboil']\n",
"cinnamon --> ['sugar', 'salt', 'spice', 'flour', 'sweeten', 'beat', 'sprinkl', 'add', 'grind', 'rollup']\n",
"bacon --> ['fri', 'dice', 'minc', 'buri', 'add', 'chop', 'brown', 'stir', 'arrang', 'cook']\n",
"coriander --> ['minc', 'grind', 'salt', 'add', 'spice', 'sprinkl', 'garnish', 'chop', 'pickl', 'season']\n",
"capers --> ['pickl', 'minc', 'add', 'chop', 'garnish', 'salt', 'season', 'stir', 'dice', 'dress']\n",
"leeks --> ['minc', 'parboil', 'dice', 'peel', 'chop', 'fri', 'buri', 'wipe', 'steam', 'pickl']\n",
"mirin --> ['salt', 'sugar', 'boil', 'tast', 'brown', 'simmer', 'pickl', 'add', 'spice', 'season']\n",
"clove --> ['minc', 'salt', 'peel', 'discard', 'add', 'grind', 'sugar', 'spice', 'sprinkl', 'grate']\n",
"beansprouts --> ['rollup', 'buri', 'slowcook', 'gut', 'macer', 'peel', 'debon', 'pickl', 'garnish', 'slice']\n",
"rice --> ['simmer', 'stir', 'scrambl', 'steam', 'cook', 'thicken', 'boil', 'poach', 'mix', 'parboil']\n",
"raisins --> ['add', 'chop', 'minc', 'stir', 'sweeten', 'soak', 'macer', 'sugar', 'mix', 'grind']\n",
"cayenne --> ['salt', 'tast', 'season', 'grind', 'add', 'sprinkl', 'sugar', 'minc', 'spice', 'stir']\n",
"ketchup --> ['pickl', 'sour', 'add', 'minc', 'sugar', 'dress', 'season', 'pour', 'mix', 'salt']\n",
"oregano --> ['salt', 'minc', 'season', 'add', 'sprinkl', 'stir', 'spice', 'grind', 'tast', 'chop']\n",
"cheese --> ['sour', 'spread', 'add', 'sprinkl', 'fold', 'stir', 'mix', 'arrang', 'put', 'whip']\n",
"cornmeal --> ['flour', 'salt', 'sugar', 'bake', 'rollup', 'knead', 'correct', 'batter', 'beat', 'whisk']\n",
"sauce --> ['glaze', 'add', 'dress', 'arrang', 'pour', 'spread', 'simmer', 'cook', 'stir', 'season']\n",
"eggplant --> ['bread', 'fillet', 'wipe', 'parboil', 'roast', 'season', 'arrang', 'peel', 'squeez', 'brush']\n",
"spinach --> ['parboil', 'rins', 'minc', 'arrang', 'add', 'stir', 'dress', 'grate', 'dice', 'drain']\n",
"orange --> ['squeez', 'add', 'pickl', 'sweeten', 'arrang', 'garnish', 'sugar', 'macer', 'peel', 'discard']\n",
"peanuts --> ['clarifi', 'melt', 'sugar', 'add', 'spread', 'heat', 'sweeten', 'beat', 'put', 'sour']\n",
"lemongrass --> ['minc', 'gut', 'pickl', 'peel', 'discard', 'buri', 'chop', 'add', 'dice', 'squeez']\n",
"spaghetti --> ['boil', 'simmer', 'thicken', 'parboil', 'slowcook', 'buri', 'spoon', 'reduc', 'season', 'drain']\n",
"cabbage --> ['parboil', 'dice', 'pickl', 'minc', 'dress', 'buri', 'simmer', 'chop', 'rins', 'arrang']\n",
"sake --> ['salt', 'tast', 'boil', 'sugar', 'sweeten', 'spice', 'correct', 'brown', 'simmer', 'season']\n",
"parsley --> ['minc', 'add', 'sprinkl', 'chop', 'season', 'salt', 'garnish', 'grate', 'stir', 'pickl']\n",
"chickpeas --> ['parboil', 'rins', 'stir', 'drain', 'mash', 'add', 'soak', 'dress', 'pickl', 'chop']\n",
"thyme --> ['minc', 'salt', 'add', 'season', 'chop', 'stir', 'sprinkl', 'spice', 'grate', 'rub']\n",
"Sriracha --> ['sour', 'pickl', 'tast', 'salt', 'sweeten', 'correct', 'dress', 'season', 'add', 'sugar']\n",
"pinenuts --> ['buri', 'rollup', 'slowcook', 'minc', 'crumpl', 'spice', 'chop', 'toast', 'grind', 'dress']\n",
"shiitake --> ['parboil', 'minc', 'wipe', 'wash', 'rins', 'chop', 'gut', 'dice', 'buri', 'debon']\n",
"vanilla --> ['beat', 'sugar', 'sweeten', 'whip', 'whisk', 'mix', 'blend', 'sour', 'add', 'mash']\n",
"pork --> ['debon', 'brais', 'bast', 'roast', 'carv', 'marin', 'fillet', 'grill', 'rub', 'season']\n",
"vinegar --> ['add', 'salt', 'sugar', 'pickl', 'minc', 'tast', 'dress', 'season', 'stir', 'spice']\n",
"chiles --> ['pickl', 'minc', 'salt', 'spice', 'grind', 'gut', 'add', 'season', 'dice', 'chop']\n",
"corn --> ['add', 'sour', 'pickl', 'stir', 'buri', 'put', 'place', 'sprinkl', 'mix', 'arrang']\n",
"tomatillos --> ['pickl', 'dice', 'minc', 'chop', 'parboil', 'buri', 'gut', 'debon', 'brais', 'peel']\n",
"radishes --> ['pickl', 'parboil', 'dice', 'buri', 'minc', 'chop', 'rins', 'wash', 'slice', 'peel']\n",
"juice --> ['add', 'minc', 'discard', 'chop', 'macer', 'sugar', 'slice', 'sprinkl', 'peel', 'stir']\n",
"pasta --> ['boil', 'thicken', 'scrambl', 'simmer', 'cover', 'drain', 'dress', 'parboil', 'wipe', 'pour']\n",
"prosciutto --> ['bread', 'arrang', 'toast', 'crumpl', 'minc', 'sprinkl', 'slice', 'chop', 'buri', 'garnish']\n",
"ghee --> ['clarifi', 'fri', 'heat', 'wipe', 'scrambl', 'reduc', 'skim', 'melt', 'lower', 'brown']\n",
"beef --> ['debon', 'stir', 'fri', 'add', 'cook', 'minc', 'dice', 'season', 'brais', 'roast']\n",
"basil --> ['minc', 'add', 'garnish', 'sprinkl', 'season', 'chop', 'salt', 'pickl', 'grate', 'stir']\n",
"baguette --> ['bread', 'toast', 'slice', 'cut', 'rollup', 'buri', 'slowcook', 'broil', 'arrang', 'crumpl']\n",
"okra --> ['parboil', 'rins', 'dice', 'wipe', 'buri', 'drain', 'wash', 'minc', 'pickl', 'gut']\n",
"mango --> ['pickl', 'dice', 'macer', 'garnish', 'sour', 'chop', 'sweeten', 'arrang', 'buri', 'add']\n",
"peaches --> ['macer', 'sweeten', 'rollup', 'squeez', 'garnish', 'whip', 'glaze', 'poach', 'peel', 'arrang']\n",
"linguine --> ['parboil', 'buri', 'drain', 'slowcook', 'boil', 'rins', 'season', 'tast', 'simmer', 'strain']\n",
"bananas --> ['fold', 'beat', 'spread', 'whip', 'arrang', 'mix', 'sweeten', 'blend', 'spoon', 'bread']\n",
"nutmeg --> ['salt', 'sugar', 'tast', 'add', 'sprinkl', 'beat', 'minc', 'flour', 'sweeten', 'mix']\n",
"yoghurt --> ['sweeten', 'sour', 'curdl', 'rollup', 'whip', 'buri', 'mash', 'dress', 'spice', 'blend']\n",
"ham --> ['debon', 'dice', 'arrang', 'buri', 'pickl', 'roast', 'chop', 'grill', 'carv', 'bread']\n",
"broccoli --> ['parboil', 'dice', 'buri', 'drain', 'debon', 'rins', 'stir', 'minc', 'cook', 'season']\n",
"noodles --> ['scrambl', 'parboil', 'steam', 'boil', 'poach', 'crack', 'break', 'pour', 'stir', 'slowcook']\n",
"cream --> ['beat', 'melt', 'sweeten', 'whisk', 'whip', 'sour', 'spread', 'mix', 'add', 'sugar']\n",
"beer --> ['pour', 'strain', 'simmer', 'add', 'debon', 'salt', 'boil', 'brais', 'pickl', 'stir']\n",
"kalamata --> ['buri', 'pickl', 'season', 'chop', 'dress', 'minc', 'slowcook', 'garnish', 'sour', 'dice']\n",
"vegetables --> ['bast', 'heat', 'cook', 'season', 'strain', 'add', 'poach', 'brush', 'brais', 'rub']\n",
"shortening --> ['beat', 'flour', 'sugar', 'clarifi', 'melt', 'whisk', 'mix', 'brown', 'sour', 'blend']\n",
"saffron --> ['salt', 'add', 'boil', 'stir', 'sugar', 'spice', 'simmer', 'minc', 'grind', 'strain']\n",
"strawberries --> ['whip', 'sweeten', 'macer', 'squeez', 'garnish', 'spoon', 'peel', 'spread', 'fold', 'scoop']\n",
"margarine --> ['sugar', 'clarifi', 'melt', 'beat', 'brown', 'flour', 'salt', 'mix', 'add', 'sweeten']\n",
"tortillas --> ['bread', 'fillet', 'spread', 'fold', 'spoon', 'arrang', 'grill', 'place', 'sour', 'crumpl']\n",
"almonds --> ['sugar', 'toast', 'add', 'sprinkl', 'garnish', 'sweeten', 'grind', 'beat', 'stir', 'spice']\n",
"cauliflower --> ['parboil', 'buri', 'steam', 'mash', 'dice', 'boil', 'simmer', 'drain', 'cook', 'cover']\n",
"asparagus --> ['parboil', 'wipe', 'slice', 'drain', 'cook', 'cover', 'poach', 'buri', 'arrang', 'grate']\n",
"chili --> ['salt', 'minc', 'pickl', 'add', 'season', 'sprinkl', 'spice', 'tast', 'sour', 'grind']\n",
"chives --> ['minc', 'add', 'garnish', 'pickl', 'salt', 'grate', 'chop', 'sour', 'buri', 'sprinkl']\n",
"bread --> ['bread', 'toast', 'spread', 'brush', 'put', 'place', 'sprinkl', 'fold', 'rub', 'crack']\n",
"couscous --> ['steam', 'simmer', 'buri', 'mash', 'dress', 'slowcook', 'parboil', 'scrambl', 'boil', 'steep']\n",
"guacamole --> ['tri', 'sour', 'dress', 'buri', 'build', 'rollup', 'slowcook', 'correct', 'pickl', 'gut']\n",
"sausages --> ['dice', 'fri', 'minc', 'scrambl', 'cook', 'buri', 'season', 'debon', 'parboil', 'grill']\n",
"arugula --> ['dress', 'arrang', 'buri', 'chop', 'slice', 'garnish', 'parboil', 'minc', 'pickl', 'dice']\n",
"spices --> ['spice', 'season', 'grind', 'rub', 'salt', 'add', 'mix', 'flour', 'sweeten', 'tast']\n",
"apples --> ['pickl', 'peel', 'stir', 'sprinkl', 'arrang', 'brown', 'minc', 'add', 'garnish', 'place']\n",
"peas --> ['parboil', 'dice', 'rins', 'stir', 'add', 'drain', 'buri', 'simmer', 'minc', 'steam']\n",
"pancetta --> ['fri', 'minc', 'dice', 'chop', 'clarifi', 'buri', 'parboil', 'break', 'heat', 'wipe']\n",
"grits --> ['skim', 'scrambl', 'correct', 'curdl', 'boil', 'poach', 'thicken', 'scorch', 'slowcook', 'batter']\n",
"lettuce --> ['arrang', 'slice', 'dice', 'dress', 'garnish', 'buri', 'chop', 'cut', 'spread', 'parboil']\n",
"mussels --> ['brais', 'steam', 'strain', 'gut', 'poach', 'open', 'boil', 'rins', 'crack', 'wipe']\n",
"coconut --> ['sweeten', 'sugar', 'pour', 'spread', 'scorch', 'add', 'sour', 'beat', 'sprinkl', 'mix']\n",
"fettucine --> ['slowcook', 'buri', 'rollup', 'parboil', 'correct', 'debon', 'fillet', 'crumpl', 'boil', 'drain']\n",
"lard --> ['clarifi', 'sugar', 'heat', 'skim', 'brown', 'fri', 'melt', 'flour', 'wipe', 'beat']\n",
"brandy --> ['sweeten', 'macer', 'sugar', 'strain', 'skim', 'sour', 'clarifi', 'steep', 'reduc', 'glaze']\n",
"kale --> ['parboil', 'drain', 'buri', 'rins', 'dress', 'wash', 'chop', 'stir', 'minc', 'macer']\n",
"olives --> ['salt', 'sprinkl', 'minc', 'dress', 'add', 'grate', 'season', 'heat', 'fri', 'put']\n",
"pecans --> ['sprinkl', 'sugar', 'toast', 'spread', 'garnish', 'sweeten', 'melt', 'mix', 'fold', 'brown']\n",
"mascarpone --> ['sour', 'whip', 'sweeten', 'beat', 'spread', 'spoon', 'melt', 'fold', 'rollup', 'grate']\n",
"daikon --> ['parboil', 'buri', 'pickl', 'dice', 'peel', 'gut', 'slowcook', 'rins', 'wash', 'minc']\n",
"mint --> ['garnish', 'macer', 'minc', 'chop', 'steep', 'pickl', 'grind', 'sweeten', 'add', 'buri']\n",
"cotija --> ['buri', 'slowcook', 'rollup', 'sour', 'grate', 'sweeten', 'dress', 'debon', 'melt', 'minc']\n",
"seasoning --> ['season', 'rub', 'salt', 'spice', 'sprinkl', 'add', 'dress', 'tast', 'marin', 'rins']\n",
"peppercorns --> ['salt', 'spice', 'minc', 'grind', 'season', 'rub', 'sugar', 'add', 'chop', 'gut']\n",
"polenta --> ['batter', 'slowcook', 'scrambl', 'serv', 'correct', 'flour', 'bread', 'glaze', 'bake', 'fillet']\n",
"meat --> ['bast', 'debon', 'pull', 'discard', 'thicken', 'roast', 'season', 'carv', 'fillet', 'cook']\n",
"pimentos --> ['pickl', 'buri', 'dice', 'minc', 'chop', 'add', 'grate', 'parboil', 'slice', 'season']\n",
"tequila --> ['sweeten', 'macer', 'rollup', 'strain', 'sugar', 'sour', 'spice', 'buri', 'slowcook', 'tast']\n",
"tofu --> ['thaw', 'buri', 'bread', 'fri', 'rins', 'steam', 'parboil', 'scrambl', 'wipe', 'wash']\n",
"pineapple --> ['pickl', 'arrang', 'garnish', 'dice', 'add', 'squeez', 'chop', 'macer', 'peel', 'place']\n",
"dashi --> ['strain', 'boil', 'debon', 'spice', 'skim', 'simmer', 'tast', 'slowcook', 'sweeten', 'steep']\n",
"pesto --> ['dress', 'season', 'spread', 'sour', 'correct', 'garnish', 'spoon', 'sprinkl', 'minc', 'chop']\n",
"chillies --> ['minc', 'pickl', 'salt', 'grind', 'add', 'spice', 'buri', 'tast', 'chop', 'gut']\n",
"seeds --> ['gut', 'grind', 'discard', 'toast', 'peel', 'spice', 'salt', 'minc', 'rub', 'pickl']\n",
"allspice --> ['salt', 'sugar', 'grind', 'minc', 'add', 'spice', 'stir', 'sprinkl', 'mix', 'tast']\n",
"gingerroot --> ['minc', 'salt', 'add', 'pickl', 'chop', 'season', 'buri', 'dice', 'tast', 'stir']\n",
"crawfish --> ['gut', 'debon', 'parboil', 'slowcook', 'discard', 'buri', 'rins', 'open', 'carv', 'pull']\n",
"turnips --> ['parboil', 'dice', 'buri', 'peel', 'minc', 'pickl', 'wash', 'chop', 'mash', 'grate']\n",
"mustard --> ['salt', 'season', 'add', 'minc', 'sugar', 'pickl', 'spice', 'sprinkl', 'rub', 'mix']\n",
"quinoa --> ['simmer', 'parboil', 'stir', 'boil', 'steam', 'mash', 'strain', 'rins', 'drain', 'buri']\n",
"penne --> ['parboil', 'boil', 'drain', 'buri', 'rins', 'slowcook', 'cook', 'simmer', 'steam', 'tast']\n",
"beets --> ['peel', 'pickl', 'parboil', 'dice', 'discard', 'buri', 'slowcook', 'macer', 'gut', 'wash']\n",
"walnuts --> ['sprinkl', 'toast', 'spread', 'minc', 'add', 'chop', 'garnish', 'mix', 'sugar', 'put']\n",
"rosemary --> ['minc', 'salt', 'season', 'add', 'sprinkl', 'rub', 'discard', 'chop', 'spice', 'grind']\n",
"ice --> ['whip', 'sweeten', 'beat', 'sour', 'macer', 'slowcook', 'batter', 'chill', 'freez', 'scoop']\n",
"kimchi --> ['pickl', 'buri', 'brais', 'parboil', 'debon', 'minc', 'gut', 'slowcook', 'dress', 'dice']\n",
"yeast --> ['knead', 'flour', 'beat', 'sugar', 'sweeten', 'boil', 'scorch', 'crack', 'whisk', 'steep']\n",
"paneer --> ['slowcook', 'buri', 'crumpl', 'gut', 'debon', 'bread', 'rollup', 'parboil', 'rins', 'wash']\n",
"watercress --> ['chop', 'dress', 'minc', 'garnish', 'pickl', 'buri', 'dice', 'arrang', 'wash', 'parboil']\n",
"cardamom --> ['salt', 'sugar', 'grind', 'spice', 'gut', 'sweeten', 'discard', 'minc', 'add', 'peel']\n",
"dough --> ['knead', 'batter', 'crumpl', 'squeez', 'spread', 'scoop', 'freez', 'flour', 'brush', 'crack']\n",
"molasses --> ['sugar', 'beat', 'whisk', 'add', 'sweeten', 'pour', 'salt', 'mix', 'burn', 'sour']\n",
"marjoram --> ['salt', 'minc', 'season', 'tast', 'add', 'chop', 'grind', 'buri', 'sprinkl', 'pickl']\n",
"ricotta --> ['sour', 'spread', 'beat', 'spoon', 'sprinkl', 'grate', 'mix', 'fold', 'whip', 'pour']\n",
"cornflour --> ['salt', 'flour', 'sweeten', 'boil', 'whisk', 'sugar', 'spice', 'sour', 'thicken', 'strain']\n",
"hazelnuts --> ['grind', 'rollup', 'sugar', 'sprinkl', 'sweeten', 'toast', 'spice', 'garnish', 'whip', 'slowcook']\n",
"beans --> ['discard', 'parboil', 'stir', 'add', 'simmer', 'dice', 'cover', 'pour', 'scoop', 'steam']\n"
]
}
],
"source": [
"for ingredient in model_ingredients:\n",
" acts = stemmed_actions[:]\n",
" best_actions = []\n",
" for i in range(10):\n",
" best = model.wv.most_similar_to_given(porter.stem(ingredient), acts)\n",
" acts.remove(best)\n",
" best_actions.append(best)\n",
" print(f\"{ingredient} --> {best_actions}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"## Inter-Category-Similarities\n",
"* checking self similarities:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Cooking Action"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"add --> ['add', 'put', 'place', 'pour', 'sprinkl', 'stir', 'arrang', 'mix', 'minc', 'chop']\n",
"adjust --> ['adjust', 'correct', 'check', 'reduc', 'tast', 'lower', 'salt', 'simmer', 'thicken', 'blend']\n",
"arrange --> ['arrang', 'place', 'put', 'cut', 'spread', 'add', 'sprinkl', 'slice', 'pour', 'fold']\n",
"bake --> ['bake', 'roast', 'broil', 'place', 'set', 'put', 'sprinkl', 'flour', 'cook', 'brush']\n",
"baste --> ['bast', 'brush', 'brais', 'check', 'marin', 'rub', 'glaze', 'broil', 'grill', 'debon']\n",
"batter --> ['batter', 'glaze', 'spread', 'flour', 'spoon', 'pour', 'knead', 'whip', 'scorch', 'cool']\n",
"beat --> ['beat', 'whisk', 'mix', 'whip', 'blend', 'sugar', 'stir', 'fold', 'add', 'knead']\n",
"blend --> ['blend', 'mix', 'beat', 'stir', 'whisk', 'add', 'chill', 'mash', 'knead', 'grind']\n",
"boil --> ['boil', 'simmer', 'cook', 'thicken', 'heat', 'stir', 'parboil', 'cover', 'reduc', 'steam']\n",
"braise --> ['brais', 'poach', 'bast', 'roast', 'cook', 'carv', 'debon', 'reduc', 'simmer', 'remov']\n",
"break --> ['break', 'pull', 'cut', 'arrang', 'scrambl', 'crack', 'put', 'chop', 'minc', 'dice']\n",
"bread --> ['bread', 'toast', 'spread', 'brush', 'put', 'place', 'sprinkl', 'fold', 'rub', 'crack']\n",
"broil --> ['broil', 'grill', 'cook', 'fillet', 'bast', 'slice', 'arrang', 'toast', 'fri', 'roast']\n",
"brown --> ['brown', 'burn', 'scorch', 'sprinkl', 'rub', 'salt', 'add', 'cook', 'mix', 'melt']\n",
"brush --> ['brush', 'bast', 'rub', 'sprinkl', 'place', 'spread', 'arrang', 'put', 'fold', 'wipe']\n",
"build --> ['build', 'close', 'prepar', 'grill', 'rollup', 'burn', 'broil', 'buri', 'open', 'slowcook']\n",
"burn --> ['burn', 'scorch', 'curdl', 'brown', 'melt', 'close', 'tri', 'break', 'scrambl', 'build']\n",
"bury --> ['buri', 'rollup', 'slowcook', 'parboil', 'gut', 'crumpl', 'mash', 'pickl', 'sweeten', 'grate']\n",
"carve --> ['carv', 'debon', 'cut', 'brais', 'pull', 'rub', 'slice', 'gut', 'roast', 'serv']\n",
"check --> ['check', 'adjust', 'correct', 'bast', 'pull', 'tast', 'stir', 'skim', 'thicken', 'parboil']\n",
"chill --> ['chill', 'refriger', 'freez', 'cool', 'blend', 'thaw', 'marin', 'mix', 'steep', 'macer']\n",
"chop --> ['chop', 'minc', 'dice', 'add', 'grind', 'slice', 'grate', 'arrang', 'cut', 'sprinkl']\n",
"clarify --> ['clarifi', 'melt', 'heat', 'sugar', 'fri', 'beat', 'reduc', 'wipe', 'scrambl', 'skim']\n",
"close --> ['close', 'open', 'build', 'burn', 'pull', 'crumpl', 'scorch', 'gut', 'rollup', 'lower']\n",
"cook --> ['cook', 'fri', 'simmer', 'heat', 'brais', 'broil', 'poach', 'add', 'grill', 'stir']\n",
"cool --> ['cool', 'thaw', 'chill', 'remov', 'set', 'steep', 'refriger', 'warm', 'macer', 'freez']\n",
"correct --> ['correct', 'adjust', 'check', 'tast', 'salt', 'reduc', 'gut', 'slowcook', 'rollup', 'thicken']\n",
"cover --> ['cover', 'place', 'put', 'set', 'simmer', 'arrang', 'wipe', 'pour', 'boil', 'cook']\n",
"crack --> ['crack', 'scrambl', 'curdl', 'break', 'open', 'grind', 'pull', 'scorch', 'wash', 'beat']\n",
"crumple --> ['crumpl', 'buri', 'slowcook', 'gut', 'rollup', 'close', 'pull', 'peel', 'arrang', 'open']\n",
"curdle --> ['curdl', 'scorch', 'scrambl', 'thicken', 'burn', 'crack', 'whisk', 'beat', 'sweeten', 'sour']\n",
"cut --> ['cut', 'slice', 'arrang', 'carv', 'dice', 'place', 'put', 'fold', 'chop', 'spread']\n",
"debone --> ['debon', 'carv', 'gut', 'marin', 'slowcook', 'rins', 'brais', 'rollup', 'parboil', 'discard']\n",
"dice --> ['dice', 'chop', 'slice', 'minc', 'cut', 'add', 'arrang', 'parboil', 'mash', 'grate']\n",
"discard --> ['discard', 'remov', 'strain', 'minc', 'wipe', 'add', 'squeez', 'gut', 'chop', 'peel']\n",
"drain --> ['drain', 'rins', 'parboil', 'strain', 'soak', 'remov', 'poach', 'macer', 'wash', 'wipe']\n",
"dress --> ['dress', 'season', 'pickl', 'marin', 'grate', 'glaze', 'spread', 'buri', 'chop', 'arrang']\n",
"fillet --> ['fillet', 'broil', 'rub', 'grill', 'season', 'marin', 'debon', 'arrang', 'brush', 'bast']\n",
"flour --> ['flour', 'sugar', 'sprinkl', 'rub', 'knead', 'beat', 'salt', 'batter', 'spread', 'brush']\n",
"fold --> ['fold', 'spread', 'sprinkl', 'arrang', 'place', 'add', 'put', 'cut', 'brush', 'mix']\n",
"freeze --> ['freez', 'refriger', 'chill', 'knead', 'thaw', 'cool', 'marin', 'steep', 'strain', 'macer']\n",
"fry --> ['fri', 'cook', 'heat', 'grill', 'broil', 'minc', 'roast', 'place', 'dice', 'put']\n",
"garnish --> ['garnish', 'sprinkl', 'serv', 'arrang', 'add', 'chop', 'place', 'put', 'pour', 'fold']\n",
"glaze --> ['glaze', 'bast', 'batter', 'brush', 'dress', 'rub', 'cool', 'slice', 'macer', 'poach']\n",
"grate --> ['grate', 'chop', 'minc', 'sprinkl', 'slice', 'dice', 'add', 'squeez', 'spread', 'buri']\n",
"grind --> ['grind', 'chop', 'minc', 'rub', 'salt', 'sprinkl', 'spice', 'put', 'rins', 'crack']\n",
"grill --> ['grill', 'broil', 'fri', 'cook', 'bast', 'roast', 'fillet', 'marin', 'build', 'brais']\n",
"gut --> ['gut', 'slowcook', 'debon', 'buri', 'rollup', 'discard', 'carv', 'crumpl', 'peel', 'parboil']\n",
"heat --> ['heat', 'cook', 'melt', 'fri', 'clarifi', 'reduc', 'simmer', 'boil', 'warm', 'thicken']\n",
"knead --> ['knead', 'beat', 'squeez', 'flour', 'freez', 'blend', 'pull', 'fold', 'refriger', 'chill']\n",
"lower --> ['lower', 'reduc', 'adjust', 'remov', 'simmer', 'poach', 'heat', 'thicken', 'pull', 'brais']\n",
"macerate --> ['macer', 'steep', 'soak', 'thaw', 'marin', 'strain', 'rollup', 'sweeten', 'drain', 'pickl']\n",
"marinate --> ['marin', 'soak', 'debon', 'steep', 'bast', 'macer', 'arrang', 'rub', 'season', 'rins']\n",
"mash --> ['mash', 'parboil', 'dice', 'blend', 'minc', 'buri', 'mix', 'break', 'add', 'chop']\n",
"melt --> ['melt', 'clarifi', 'heat', 'beat', 'set', 'reduc', 'burn', 'sugar', 'brown', 'sprinkl']\n",
"mince --> ['minc', 'chop', 'dice', 'add', 'grind', 'grate', 'pickl', 'discard', 'slice', 'parboil']\n",
"mix --> ['mix', 'blend', 'stir', 'beat', 'whisk', 'add', 'put', 'pour', 'fold', 'place']\n",
"open --> ['open', 'close', 'crack', 'pull', 'gut', 'remov', 'steam', 'cut', 'build', 'peel']\n",
"parboil --> ['parboil', 'rins', 'buri', 'wash', 'steam', 'drain', 'dice', 'mash', 'cut', 'peel']\n",
"peel --> ['peel', 'parboil', 'slice', 'discard', 'wash', 'dice', 'squeez', 'gut', 'cut', 'minc']\n",
"pickle --> ['pickl', 'minc', 'dice', 'buri', 'brais', 'parboil', 'macer', 'dress', 'chop', 'grate']\n",
"place --> ['place', 'put', 'arrang', 'add', 'pour', 'sprinkl', 'spread', 'cut', 'fold', 'brush']\n",
"poach --> ['poach', 'brais', 'cook', 'scrambl', 'simmer', 'wash', 'soak', 'rins', 'debon', 'add']\n",
"pour --> ['pour', 'add', 'put', 'place', 'spread', 'spoon', 'sprinkl', 'arrang', 'strain', 'mix']\n",
"prepare --> ['prepar', 'spread', 'place', 'put', 'pour', 'arrang', 'build', 'cover', 'serv', 'sprinkl']\n",
"pull --> ['pull', 'remov', 'break', 'carv', 'cut', 'fold', 'wipe', 'squeez', 'crack', 'open']\n",
"put --> ['put', 'place', 'add', 'arrang', 'pour', 'spread', 'sprinkl', 'mix', 'fold', 'cut']\n",
"reduce --> ['reduc', 'lower', 'thicken', 'adjust', 'simmer', 'brais', 'heat', 'stir', 'melt', 'cook']\n",
"refrigerate --> ['refriger', 'chill', 'freez', 'marin', 'cool', 'steep', 'macer', 'knead', 'strain', 'blend']\n",
"remove --> ['remov', 'pull', 'discard', 'cool', 'wipe', 'brais', 'drain', 'lower', 'break', 'place']\n",
"rinse --> ['rins', 'wash', 'drain', 'parboil', 'soak', 'debon', 'thaw', 'discard', 'poach', 'wipe']\n",
"roast --> ['roast', 'brais', 'bake', 'carv', 'grill', 'fri', 'broil', 'bast', 'cook', 'chop']\n",
"rollup --> ['rollup', 'slowcook', 'buri', 'gut', 'sweeten', 'debon', 'crumpl', 'macer', 'carv', 'build']\n",
"rub --> ['rub', 'brush', 'season', 'sprinkl', 'grind', 'wipe', 'put', 'bast', 'spread', 'carv']\n",
"salt --> ['salt', 'add', 'sprinkl', 'season', 'sugar', 'grind', 'rub', 'mix', 'stir', 'tast']\n",
"scoop --> ['scoop', 'spoon', 'spread', 'squeez', 'put', 'place', 'arrang', 'pour', 'cut', 'mash']\n",
"scorch --> ['scorch', 'burn', 'curdl', 'tri', 'brown', 'crack', 'break', 'scrambl', 'sweeten', 'pull']\n",
"scramble --> ['scrambl', 'curdl', 'crack', 'break', 'poach', 'beat', 'scorch', 'whisk', 'fri', 'burn']\n",
"season --> ['season', 'rub', 'salt', 'spice', 'sprinkl', 'add', 'dress', 'tast', 'marin', 'rins']\n",
"serve --> ['serv', 'garnish', 'carv', 'arrang', 'prepar', 'slice', 'spoon', 'place', 'cut', 'put']\n",
"set --> ['set', 'put', 'place', 'cool', 'cover', 'melt', 'pull', 'beat', 'remov', 'wipe']\n",
"simmer --> ['simmer', 'boil', 'cook', 'stir', 'reduc', 'steep', 'thicken', 'poach', 'brais', 'heat']\n",
"skim --> ['skim', 'strain', 'discard', 'brais', 'thicken', 'reduc', 'whisk', 'poach', 'steep', 'curdl']\n",
"slice --> ['slice', 'cut', 'dice', 'arrang', 'chop', 'place', 'spread', 'carv', 'grate', 'peel']\n",
"slowcook --> ['slowcook', 'rollup', 'buri', 'gut', 'debon', 'crumpl', 'tri', 'carv', 'parboil', 'correct']\n",
"soak --> ['soak', 'rins', 'steep', 'macer', 'marin', 'drain', 'wash', 'poach', 'strain', 'add']\n",
"sour --> ['sour', 'whip', 'sweeten', 'add', 'mix', 'beat', 'spread', 'pour', 'blend', 'curdl']\n",
"spice --> ['spice', 'season', 'grind', 'rub', 'salt', 'add', 'mix', 'flour', 'sweeten', 'tast']\n",
"spoon --> ['spoon', 'pour', 'spread', 'scoop', 'arrang', 'place', 'put', 'sprinkl', 'fold', 'mix']\n",
"spread --> ['spread', 'sprinkl', 'put', 'pour', 'arrang', 'place', 'fold', 'spoon', 'add', 'brush']\n",
"sprinkle --> ['sprinkl', 'add', 'spread', 'garnish', 'place', 'put', 'arrang', 'fold', 'pour', 'brush']\n",
"squeeze --> ['squeez', 'discard', 'cut', 'knead', 'fold', 'rub', 'spread', 'scoop', 'peel', 'pull']\n",
"steam --> ['steam', 'parboil', 'simmer', 'thaw', 'wash', 'boil', 'steep', 'poach', 'open', 'grill']\n",
"steep --> ['steep', 'macer', 'soak', 'marin', 'strain', 'simmer', 'cool', 'steam', 'chill', 'refriger']\n",
"stir --> ['stir', 'add', 'whisk', 'mix', 'blend', 'simmer', 'pour', 'beat', 'fold', 'cook']\n",
"strain --> ['strain', 'pour', 'drain', 'discard', 'steep', 'thicken', 'skim', 'macer', 'soak', 'brais']\n",
"sugar --> ['sugar', 'beat', 'salt', 'whisk', 'flour', 'add', 'sweeten', 'sprinkl', 'mix', 'stir']\n",
"sweeten --> ['sweeten', 'whip', 'sour', 'rollup', 'sugar', 'beat', 'curdl', 'macer', 'buri', 'grate']\n",
"taste --> ['tast', 'correct', 'adjust', 'season', 'salt', 'check', 'grind', 'spice', 'blend', 'sweeten']\n",
"thaw --> ['thaw', 'macer', 'cool', 'parboil', 'rins', 'wash', 'steam', 'chill', 'freez', 'soak']\n",
"thicken --> ['thicken', 'curdl', 'reduc', 'simmer', 'strain', 'boil', 'whisk', 'skim', 'stir', 'heat']\n",
"toast --> ['toast', 'bread', 'broil', 'grind', 'spread', 'sprinkl', 'fri', 'brown', 'place', 'arrang']\n",
"try --> ['tri', 'scorch', 'slowcook', 'gut', 'burn', 'curdl', 'rollup', 'scrambl', 'close', 'buri']\n",
"warm --> ['warm', 'cool', 'heat', 'cover', 'simmer', 'melt', 'pour', 'burn', 'soak', 'set']\n",
"wash --> ['wash', 'rins', 'parboil', 'soak', 'poach', 'peel', 'thaw', 'chop', 'steam', 'arrang']\n",
"whip --> ['whip', 'beat', 'sweeten', 'sour', 'whisk', 'fold', 'curdl', 'garnish', 'spread', 'mash']\n",
"whisk --> ['whisk', 'beat', 'stir', 'mix', 'blend', 'pour', 'sugar', 'curdl', 'whip', 'add']\n",
"wipe --> ['wipe', 'rub', 'discard', 'remov', 'brush', 'rins', 'pull', 'squeez', 'cover', 'brais']\n"
]
}
],
"source": [
"for action in model_actions:\n",
" acts = stemmed_actions[:]\n",
" best_actions = []\n",
" for i in range(10):\n",
" best = model.wv.most_similar_to_given(porter.stem(action), acts)\n",
" acts.remove(best)\n",
" best_actions.append(best)\n",
" print(f\"{action} --> {best_actions}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ingredient"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"salt --> ['salt', 'cayenn', 'nutmeg', 'paprika', 'allspic', 'marjoram', 'oregano', 'cumin', 'thyme', 'cardamom']\n",
"garlic --> ['garlic', 'shallot', 'oregano', 'cumin', 'thyme', 'coriand', 'cayenn', 'marjoram', 'tumer', 'scallion']\n",
"onions --> ['onion', 'shallot', 'scallion', 'celeri', 'gingerroot', 'leek', 'garlic', 'chili', 'caper', 'chilli']\n",
"water --> ['water', 'milk', 'sake', 'juic', 'vinegar', 'oil', 'sugar', 'mirin', 'saffron', 'salt']\n",
"sugar --> ['sugar', 'honey', 'molass', 'cinnamon', 'nutmeg', 'allspic', 'margarin', 'cardamom', 'vanilla', 'milk']\n",
"butter --> ['butter', 'margarin', 'shorten', 'lard', 'ghee', 'oil', 'cinnamon', 'honey', 'flour', 'sugar']\n",
"pepper --> ['pepper', 'peppercorn', 'cumin', 'cayenn', 'oregano', 'paprika', 'garlic', 'chilli', 'chile', 'thyme']\n",
"eggs --> ['egg', 'buttermilk', 'molass', 'margarin', 'coconut', 'butter', 'ricotta', 'flour', 'banana', 'milk']\n",
"tomatoes --> ['tomato', 'tomatillo', 'pimento', 'avocado', 'caper', 'chile', 'cucumb', 'mango', 'mushroom', 'scallion']\n",
"carrots --> ['carrot', 'turnip', 'radish', 'celeri', 'zucchini', 'daikon', 'scallion', 'leek', 'gingerroot', 'shallot']\n",
"milk --> ['milk', 'buttermilk', 'water', 'honey', 'molass', 'cream', 'sugar', 'yoghurt', 'margarin', 'shorten']\n",
"oil --> ['oil', 'kalamata', 'ghee', 'oliv', 'butter', 'honey', 'paprika', 'caper', 'cumin', 'salt']\n",
"scallions --> ['scallion', 'onion', 'shallot', 'chive', 'cilantro', 'radish', 'caper', 'pimento', 'parsley', 'gingerroot']\n",
"flour --> ['flour', 'cornmeal', 'buttermilk', 'butter', 'shorten', 'sugar', 'cinnamon', 'cornflour', 'milk', 'nutmeg']\n",
"lime --> ['lime', 'lemon', 'orang', 'mango', 'sriracha', 'cilantro', 'gingerroot', 'mint', 'pineappl', 'avocado']\n",
"ginger --> ['ginger', 'gingerroot', 'lemongrass', 'coriand', 'clove', 'allspic', 'chilli', 'cumin', 'cardamom', 'shallot']\n",
"shallots --> ['shallot', 'onion', 'scallion', 'caper', 'gingerroot', 'leek', 'garlic', 'pancetta', 'rosemari', 'parsley']\n",
"honey --> ['honey', 'molass', 'sugar', 'sriracha', 'vinegar', 'ketchup', 'mirin', 'tumer', 'cinnamon', 'mustard']\n",
"avocado --> ['avocado', 'cucumb', 'mango', 'radish', 'tomato', 'guacamol', 'lime', 'lettuc', 'tomatillo', 'scallion']\n",
"lemon --> ['lemon', 'lime', 'orang', 'caper', 'mint', 'honey', 'gingerroot', 'ginger', 'juic', 'sriracha']\n",
"paprika --> ['paprika', 'cayenn', 'cumin', 'oregano', 'marjoram', 'tumer', 'coriand', 'salt', 'allspic', 'thyme']\n",
"cilantro --> ['cilantro', 'chive', 'coriand', 'basil', 'scallion', 'parsley', 'mint', 'thyme', 'caper', 'rosemari']\n",
"salsa --> ['salsa', 'guacamol', 'cilantro', 'tomatillo', 'avocado', 'ketchup', 'pesto', 'lettuc', 'mango', 'pimento']\n",
"buttermilk --> ['buttermilk', 'milk', 'molass', 'honey', 'yoghurt', 'flour', 'egg', 'shorten', 'cornflour', 'vanilla']\n",
"cumin --> ['cumin', 'cayenn', 'coriand', 'allspic', 'tumer', 'cardamom', 'paprika', 'oregano', 'peppercorn', 'pepper']\n",
"shrimp --> ['shrimp', 'crawfish', 'mussel', 'chicken', 'asparagu', 'okra', 'linguin', 'penn', 'spinach', 'shiitak']\n",
"potatoes --> ['potato', 'zucchini', 'eggplant', 'cauliflow', 'beet', 'turnip', 'carrot', 'leek', 'cabbag', 'avocado']\n",
"chicken --> ['chicken', 'beef', 'meat', 'pork', 'shrimp', 'ham', 'mushroom', 'veget', 'eggplant', 'cabbag']\n",
"celery --> ['celeri', 'onion', 'scallion', 'turnip', 'carrot', 'leek', 'shallot', 'pimento', 'thyme', 'chive']\n",
"zucchini --> ['zucchini', 'eggplant', 'carrot', 'leek', 'turnip', 'radish', 'cucumb', 'daikon', 'potato', 'cabbag']\n",
"cucumber --> ['cucumb', 'radish', 'avocado', 'daikon', 'pimento', 'mango', 'arugula', 'turnip', 'zucchini', 'lettuc']\n",
"mayonaise --> ['mayonais', 'yoghurt', 'kimchi', 'cotija', 'tumer', 'guacamol', 'sriracha', 'fettucin', 'tequila', 'pinenut']\n",
"tumeric --> ['tumer', 'coriand', 'cumin', 'cayenn', 'allspic', 'marjoram', 'chilli', 'sriracha', 'gingerroot', 'cardamom']\n",
"mushrooms --> ['mushroom', 'shiitak', 'leek', 'shallot', 'celeri', 'scallion', 'onion', 'tomato', 'broccoli', 'zucchini']\n",
"cinnamon --> ['cinnamon', 'nutmeg', 'allspic', 'cardamom', 'sugar', 'honey', 'cayenn', 'vanilla', 'molass', 'margarin']\n",
"bacon --> ['bacon', 'pancetta', 'prosciutto', 'sausag', 'ham', 'shallot', 'pimento', 'celeri', 'scallion', 'onion']\n",
"coriander --> ['coriand', 'cilantro', 'cumin', 'tumer', 'marjoram', 'thyme', 'oregano', 'cardamom', 'rosemari', 'lemongrass']\n",
"capers --> ['caper', 'chive', 'shallot', 'kalamata', 'parsley', 'scallion', 'basil', 'pimento', 'gingerroot', 'rosemari']\n",
"leeks --> ['leek', 'turnip', 'cabbag', 'shallot', 'shiitak', 'scallion', 'celeri', 'radish', 'onion', 'mushroom']\n",
"mirin --> ['mirin', 'sake', 'sriracha', 'vinegar', 'tumer', 'dashi', 'honey', 'ketchup', 'molass', 'cornflour']\n",
"clove --> ['clove', 'ginger', 'allspic', 'gingerroot', 'peppercorn', 'rosemari', 'cardamom', 'cumin', 'lemongrass', 'thyme']\n",
"beansprouts --> ['beansprout', 'tequila', 'juic', 'tumer', 'lemongrass', 'fettucin', 'kimchi', 'pinenut', 'mayonais', 'daikon']\n",
"rice --> ['rice', 'quinoa', 'couscou', 'noodl', 'chickpea', 'spinach', 'linguin', 'grit', 'pasta', 'cauliflow']\n",
"raisins --> ['raisin', 'walnut', 'pecan', 'honey', 'brandi', 'appl', 'pineappl', 'molass', 'pinenut', 'almond']\n",
"cayenne --> ['cayenn', 'paprika', 'cumin', 'nutmeg', 'allspic', 'salt', 'oregano', 'marjoram', 'tumer', 'cardamom']\n",
"ketchup --> ['ketchup', 'sriracha', 'mustard', 'honey', 'vinegar', 'mirin', 'molass', 'tumer', 'gingerroot', 'sauc']\n",
"oregano --> ['oregano', 'marjoram', 'thyme', 'rosemari', 'basil', 'parsley', 'cayenn', 'coriand', 'cumin', 'paprika']\n",
"cheese --> ['chees', 'ricotta', 'mascarpon', 'prosciutto', 'butter', 'chive', 'zucchini', 'pesto', 'avocado', 'scallion']\n",
"cornmeal --> ['cornmeal', 'flour', 'cornflour', 'yeast', 'paprika', 'tumer', 'cinnamon', 'buttermilk', 'salt', 'cayenn']\n",
"sauce --> ['sauc', 'ketchup', 'mirin', 'salsa', 'juic', 'scallion', 'sake', 'sriracha', 'pesto', 'shallot']\n",
"eggplant --> ['eggplant', 'zucchini', 'potato', 'leek', 'avocado', 'prosciutto', 'tomato', 'cauliflow', 'shiitak', 'mushroom']\n",
"spinach --> ['spinach', 'kale', 'arugula', 'broccoli', 'watercress', 'cabbag', 'basil', 'asparagu', 'leek', 'cauliflow']\n",
"orange --> ['orang', 'lemon', 'lime', 'pineappl', 'mango', 'strawberri', 'peach', 'tequila', 'brandi', 'ginger']\n",
"peanuts --> ['peanut', 'hazelnut', 'honey', 'pecan', 'walnut', 'almond', 'coconut', 'sriracha', 'margarin', 'sugar']\n",
"lemongrass --> ['lemongrass', 'gingerroot', 'coriand', 'ginger', 'tumer', 'rosemari', 'scallion', 'chilli', 'cilantro', 'cardamom']\n",
"spaghetti --> ['spaghetti', 'linguin', 'pasta', 'penn', 'noodl', 'fettucin', 'cauliflow', 'quinoa', 'couscou', 'broccoli']\n",
"cabbage --> ['cabbag', 'turnip', 'kale', 'leek', 'radish', 'broccoli', 'spinach', 'daikon', 'lettuc', 'arugula']\n",
"sake --> ['sake', 'mirin', 'dashi', 'vinegar', 'sriracha', 'cornflour', 'tumer', 'tequila', 'saffron', 'brandi']\n",
"parsley --> ['parsley', 'chive', 'basil', 'marjoram', 'thyme', 'oregano', 'rosemari', 'cilantro', 'caper', 'scallion']\n",
"chickpeas --> ['chickpea', 'quinoa', 'tomatillo', 'kale', 'bean', 'cucumb', 'caper', 'kimchi', 'pea', 'tomato']\n",
"thyme --> ['thyme', 'rosemari', 'marjoram', 'oregano', 'parsley', 'basil', 'coriand', 'chive', 'cilantro', 'cayenn']\n",
"Sriracha --> ['sriracha', 'mirin', 'ketchup', 'tumer', 'gingerroot', 'honey', 'mustard', 'sake', 'yoghurt', 'cayenn']\n",
"pinenuts --> ['pinenut', 'kalamata', 'marjoram', 'oregano', 'caper', 'cotija', 'watercress', 'fettucin', 'gingerroot', 'arugula']\n",
"shiitake --> ['shiitak', 'leek', 'okra', 'mushroom', 'pimento', 'shallot', 'turnip', 'radish', 'scallion', 'zucchini']\n",
"vanilla --> ['vanilla', 'molass', 'cardamom', 'cinnamon', 'honey', 'sugar', 'shorten', 'almond', 'nutmeg', 'coconut']\n",
"pork --> ['pork', 'meat', 'beef', 'chicken', 'ham', 'sausag', 'pancetta', 'eggplant', 'prosciutto', 'cabbag']\n",
"vinegar --> ['vinegar', 'mirin', 'honey', 'sake', 'ketchup', 'molass', 'sriracha', 'gingerroot', 'caper', 'tumer']\n",
"chiles --> ['chile', 'chili', 'chilli', 'tomatillo', 'cumin', 'coriand', 'garlic', 'oregano', 'onion', 'cayenn']\n",
"corn --> ['corn', 'tomatillo', 'carrot', 'scallion', 'pimento', 'onion', 'chili', 'oregano', 'ketchup', 'cilantro']\n",
"tomatillos --> ['tomatillo', 'chile', 'tomato', 'chickpea', 'gingerroot', 'mango', 'okra', 'cilantro', 'avocado', 'kale']\n",
"radishes --> ['radish', 'daikon', 'turnip', 'cucumb', 'scallion', 'watercress', 'carrot', 'pimento', 'leek', 'kimchi']\n",
"juice --> ['juic', 'lemon', 'vinegar', 'beansprout', 'honey', 'lime', 'shallot', 'orang', 'cumin', 'molass']\n",
"pasta --> ['pasta', 'spaghetti', 'linguin', 'penn', 'noodl', 'fettucin', 'asparagu', 'quinoa', 'cauliflow', 'mussel']\n",
"prosciutto --> ['prosciutto', 'pancetta', 'bacon', 'ham', 'baguett', 'pimento', 'sausag', 'eggplant', 'shallot', 'watercress']\n",
"ghee --> ['ghee', 'lard', 'butter', 'oil', 'margarin', 'oliv', 'pancetta', 'sake', 'shorten', 'peanut']\n",
"beef --> ['beef', 'meat', 'chicken', 'pork', 'sausag', 'ham', 'kimchi', 'bacon', 'potato', 'okra']\n",
"basil --> ['basil', 'parsley', 'oregano', 'marjoram', 'thyme', 'cilantro', 'chive', 'rosemari', 'mint', 'caper']\n",
"baguette --> ['baguett', 'bread', 'prosciutto', 'avocado', 'eggplant', 'paneer', 'cucumb', 'pancetta', 'pinenut', 'banana']\n",
"okra --> ['okra', 'shiitak', 'leek', 'tomatillo', 'kimchi', 'zucchini', 'kale', 'shallot', 'broccoli', 'daikon']\n",
"mango --> ['mango', 'avocado', 'pineappl', 'peach', 'strawberri', 'cucumb', 'orang', 'lime', 'tomatillo', 'radish']\n",
"peaches --> ['peach', 'strawberri', 'mango', 'banana', 'appl', 'pineappl', 'orang', 'avocado', 'lime', 'beet']\n",
"linguine --> ['linguin', 'penn', 'fettucin', 'spaghetti', 'pasta', 'quinoa', 'noodl', 'couscou', 'broccoli', 'asparagu']\n",
"bananas --> ['banana', 'peach', 'strawberri', 'mango', 'appl', 'avocado', 'pineappl', 'almond', 'coconut', 'orang']\n",
"nutmeg --> ['nutmeg', 'allspic', 'cayenn', 'cinnamon', 'cardamom', 'salt', 'paprika', 'tumer', 'cumin', 'marjoram']\n",
"yoghurt --> ['yoghurt', 'mayonais', 'sriracha', 'tumer', 'tequila', 'mascarpon', 'buttermilk', 'guacamol', 'honey', 'mint']\n",
"ham --> ['ham', 'prosciutto', 'pork', 'sausag', 'bacon', 'beef', 'pancetta', 'meat', 'pimento', 'chicken']\n",
"broccoli --> ['broccoli', 'cauliflow', 'asparagu', 'spinach', 'pea', 'kale', 'cabbag', 'turnip', 'linguin', 'daikon']\n",
"noodles --> ['noodl', 'pasta', 'spaghetti', 'linguin', 'penn', 'broccoli', 'fettucin', 'asparagu', 'couscou', 'quinoa']\n",
"cream --> ['cream', 'mascarpon', 'milk', 'ricotta', 'margarin', 'vanilla', 'honey', 'cotija', 'chive', 'yoghurt']\n",
"beer --> ['beer', 'ketchup', 'tequila', 'dashi', 'lemongrass', 'molass', 'sriracha', 'mirin', 'vinegar', 'tumer']\n",
"kalamata --> ['kalamata', 'caper', 'pinenut', 'pimento', 'oil', 'gingerroot', 'oregano', 'marjoram', 'basil', 'watercress']\n",
"vegetables --> ['veget', 'broccoli', 'oliv', 'cauliflow', 'scallion', 'carrot', 'mushroom', 'onion', 'asparagu', 'chicken']\n",
"shortening --> ['shorten', 'margarin', 'butter', 'lard', 'vanilla', 'molass', 'flour', 'buttermilk', 'milk', 'sugar']\n",
"saffron --> ['saffron', 'tumer', 'cardamom', 'lemongrass', 'cumin', 'thyme', 'marjoram', 'coriand', 'cayenn', 'oregano']\n",
"strawberries --> ['strawberri', 'peach', 'mango', 'banana', 'pineappl', 'orang', 'appl', 'mint', 'tequila', 'lime']\n",
"margarine --> ['margarin', 'butter', 'shorten', 'lard', 'honey', 'cinnamon', 'sugar', 'molass', 'ghee', 'nutmeg']\n",
"tortillas --> ['tortilla', 'baguett', 'lettuc', 'dough', 'salsa', 'noodl', 'bread', 'prosciutto', 'guacamol', 'chees']\n",
"almonds --> ['almond', 'hazelnut', 'pecan', 'walnut', 'coconut', 'cinnamon', 'vanilla', 'peanut', 'banana', 'mint']\n",
"cauliflower --> ['cauliflow', 'broccoli', 'kale', 'turnip', 'asparagu', 'leek', 'zucchini', 'cabbag', 'potato', 'daikon']\n",
"asparagus --> ['asparagu', 'broccoli', 'cauliflow', 'leek', 'spinach', 'linguin', 'kale', 'watercress', 'shiitak', 'turnip']\n",
"chili --> ['chili', 'chile', 'chilli', 'cayenn', 'oregano', 'cumin', 'tumer', 'onion', 'coriand', 'paprika']\n",
"chives --> ['chive', 'parsley', 'cilantro', 'scallion', 'marjoram', 'basil', 'caper', 'thyme', 'rosemari', 'pimento']\n",
"bread --> ['bread', 'baguett', 'prosciutto', 'eggplant', 'tortilla', 'paneer', 'avocado', 'ham', 'banana', 'almond']\n",
"couscous --> ['couscou', 'quinoa', 'linguin', 'rice', 'penn', 'fettucin', 'kale', 'broccoli', 'cauliflow', 'chickpea']\n",
"guacamole --> ['guacamol', 'salsa', 'pesto', 'avocado', 'mayonais', 'yoghurt', 'cotija', 'lettuc', 'ketchup', 'sriracha']\n",
"sausages --> ['sausag', 'bacon', 'pancetta', 'beef', 'ham', 'prosciutto', 'meat', 'pork', 'leek', 'eggplant']\n",
"arugula --> ['arugula', 'watercress', 'lettuc', 'kale', 'spinach', 'basil', 'cilantro', 'cucumb', 'radish', 'pimento']\n",
"spices --> ['spice', 'peppercorn', 'season', 'cumin', 'tumer', 'allspic', 'cinnamon', 'cardamom', 'cayenn', 'mustard']\n",
"apples --> ['appl', 'peach', 'pineappl', 'beet', 'banana', 'strawberri', 'mango', 'orang', 'raisin', 'turnip']\n",
"peas --> ['pea', 'broccoli', 'bean', 'radish', 'turnip', 'scallion', 'chickpea', 'spinach', 'celeri', 'carrot']\n",
"pancetta --> ['pancetta', 'prosciutto', 'bacon', 'shallot', 'sausag', 'leek', 'ham', 'onion', 'mushroom', 'caper']\n",
"grits --> ['grit', 'polenta', 'couscou', 'fettucin', 'quinoa', 'mussel', 'linguin', 'pasta', 'penn', 'rice']\n",
"lettuce --> ['lettuc', 'arugula', 'watercress', 'cabbag', 'cucumb', 'radish', 'avocado', 'kale', 'basil', 'spinach']\n",
"mussels --> ['mussel', 'crawfish', 'fettucin', 'shrimp', 'linguin', 'penn', 'couscou', 'okra', 'pasta', 'asparagu']\n",
"coconut --> ['coconut', 'almond', 'walnut', 'pecan', 'hazelnut', 'peanut', 'banana', 'vanilla', 'cinnamon', 'butter']\n",
"fettucine --> ['fettucin', 'linguin', 'penn', 'spaghetti', 'pasta', 'pinenut', 'crawfish', 'mayonais', 'mussel', 'couscou']\n",
"lard --> ['lard', 'margarin', 'shorten', 'ghee', 'butter', 'molass', 'oil', 'sugar', 'vanilla', 'peanut']\n",
"brandy --> ['brandi', 'tequila', 'molass', 'honey', 'raisin', 'sake', 'orang', 'mirin', 'vinegar', 'sriracha']\n",
"kale --> ['kale', 'arugula', 'spinach', 'watercress', 'cabbag', 'cauliflow', 'turnip', 'broccoli', 'leek', 'chickpea']\n",
"olives --> ['oliv', 'caper', 'chive', 'oregano', 'cilantro', 'rosemari', 'garlic', 'oil', 'scallion', 'shallot']\n",
"pecans --> ['pecan', 'walnut', 'hazelnut', 'almond', 'raisin', 'cinnamon', 'peanut', 'coconut', 'appl', 'pinenut']\n",
"mascarpone --> ['mascarpon', 'ricotta', 'cream', 'cotija', 'yoghurt', 'chees', 'pesto', 'mayonais', 'tequila', 'guacamol']\n",
"daikon --> ['daikon', 'radish', 'turnip', 'cucumb', 'carrot', 'beet', 'watercress', 'leek', 'cabbag', 'zucchini']\n",
"mint --> ['mint', 'basil', 'cilantro', 'coriand', 'rosemari', 'marjoram', 'thyme', 'watercress', 'chive', 'oregano']\n",
"cotija --> ['cotija', 'mascarpon', 'pimento', 'pinenut', 'mayonais', 'ricotta', 'guacamol', 'fettucin', 'chive', 'kalamata']\n",
"seasoning --> ['season', 'cayenn', 'oregano', 'marjoram', 'pepper', 'thyme', 'paprika', 'salt', 'spice', 'cumin']\n",
"peppercorns --> ['peppercorn', 'cardamom', 'cumin', 'allspic', 'pepper', 'cayenn', 'oregano', 'marjoram', 'paprika', 'coriand']\n",
"polenta --> ['polenta', 'grit', 'cornmeal', 'fettucin', 'cotija', 'linguin', 'couscou', 'penn', 'eggplant', 'tofu']\n",
"meat --> ['meat', 'beef', 'pork', 'chicken', 'sausag', 'ham', 'eggplant', 'crawfish', 'shrimp', 'tofu']\n",
"pimentos --> ['pimento', 'chive', 'scallion', 'caper', 'parsley', 'radish', 'cilantro', 'watercress', 'cucumb', 'marjoram']\n",
"tequila --> ['tequila', 'brandi', 'tumer', 'sriracha', 'yoghurt', 'cornflour', 'beansprout', 'mirin', 'lime', 'sake']\n",
"tofu --> ['tofu', 'paneer', 'pancetta', 'kimchi', 'eggplant', 'prosciutto', 'shrimp', 'sausag', 'okra', 'beef']\n",
"pineapple --> ['pineappl', 'mango', 'orang', 'peach', 'appl', 'strawberri', 'lime', 'banana', 'lemon', 'raisin']\n",
"dashi --> ['dashi', 'sake', 'mirin', 'saffron', 'kimchi', 'tumer', 'cornflour', 'beer', 'tequila', 'sriracha']\n",
"pesto --> ['pesto', 'ricotta', 'guacamol', 'arugula', 'basil', 'avocado', 'salsa', 'watercress', 'sriracha', 'mascarpon']\n",
"chillies --> ['chilli', 'chili', 'chile', 'tumer', 'coriand', 'gingerroot', 'oregano', 'cumin', 'garlic', 'cayenn']\n",
"seeds --> ['seed', 'cardamom', 'coriand', 'tumer', 'garlic', 'cumin', 'lemongrass', 'allspic', 'gingerroot', 'ginger']\n",
"allspice --> ['allspic', 'nutmeg', 'cayenn', 'cardamom', 'cumin', 'peppercorn', 'tumer', 'marjoram', 'cinnamon', 'coriand']\n",
"gingerroot --> ['gingerroot', 'ginger', 'lemongrass', 'shallot', 'marjoram', 'tumer', 'oregano', 'caper', 'cumin', 'sriracha']\n",
"crawfish --> ['crawfish', 'mussel', 'shrimp', 'shiitak', 'fettucin', 'linguin', 'okra', 'penn', 'lemongrass', 'asparagu']\n",
"turnips --> ['turnip', 'daikon', 'radish', 'leek', 'cabbag', 'carrot', 'beet', 'cauliflow', 'celeri', 'kale']\n",
"mustard --> ['mustard', 'ketchup', 'oregano', 'cumin', 'sriracha', 'paprika', 'cayenn', 'gingerroot', 'chili', 'thyme']\n",
"quinoa --> ['quinoa', 'couscou', 'rice', 'linguin', 'chickpea', 'penn', 'kale', 'pasta', 'fettucin', 'cauliflow']\n",
"penne --> ['penn', 'linguin', 'fettucin', 'spaghetti', 'pasta', 'quinoa', 'noodl', 'broccoli', 'couscou', 'cauliflow']\n",
"beets --> ['beet', 'turnip', 'daikon', 'radish', 'cabbag', 'potato', 'cucumb', 'appl', 'carrot', 'mango']\n",
"walnuts --> ['walnut', 'pecan', 'hazelnut', 'almond', 'raisin', 'pinenut', 'peanut', 'coconut', 'cinnamon', 'coriand']\n",
"rosemary --> ['rosemari', 'thyme', 'marjoram', 'oregano', 'parsley', 'basil', 'chive', 'coriand', 'mint', 'caper']\n",
"ice --> ['ice', 'strawberri', 'tequila', 'mascarpon', 'cornflour', 'brandi', 'shorten', 'pineappl', 'yoghurt', 'coconut']\n",
"kimchi --> ['kimchi', 'gingerroot', 'radish', 'mayonais', 'turnip', 'pimento', 'sriracha', 'tumer', 'okra', 'daikon']\n",
"yeast --> ['yeast', 'cornmeal', 'molass', 'cornflour', 'buttermilk', 'shorten', 'milk', 'sake', 'flour', 'honey']\n",
"paneer --> ['paneer', 'tofu', 'daikon', 'baguett', 'okra', 'pancetta', 'prosciutto', 'radish', 'shiitak', 'eggplant']\n",
"watercress --> ['watercress', 'arugula', 'kale', 'radish', 'chive', 'caper', 'basil', 'lettuc', 'cilantro', 'parsley']\n",
"cardamom --> ['cardamom', 'allspic', 'peppercorn', 'cumin', 'coriand', 'tumer', 'cayenn', 'nutmeg', 'cinnamon', 'saffron']\n",
"dough --> ['dough', 'tortilla', 'yeast', 'butter', 'flour', 'ice', 'cornmeal', 'banana', 'prosciutto', 'bread']\n",
"molasses --> ['molass', 'honey', 'sugar', 'vanilla', 'vinegar', 'mirin', 'buttermilk', 'ketchup', 'brandi', 'sriracha']\n",
"marjoram --> ['marjoram', 'oregano', 'thyme', 'rosemari', 'parsley', 'basil', 'cayenn', 'coriand', 'chive', 'paprika']\n",
"ricotta --> ['ricotta', 'mascarpon', 'pesto', 'cotija', 'chees', 'cream', 'spinach', 'basil', 'arugula', 'chive']\n",
"cornflour --> ['cornflour', 'mirin', 'sake', 'tequila', 'tumer', 'sriracha', 'saffron', 'cornmeal', 'dashi', 'molass']\n",
"hazelnuts --> ['hazelnut', 'pecan', 'walnut', 'almond', 'peanut', 'coconut', 'pinenut', 'coriand', 'cinnamon', 'mint']\n",
"beans --> ['bean', 'chickpea', 'pea', 'tomatillo', 'chile', 'tomato', 'chili', 'turnip', 'peppercorn', 'broccoli']\n"
]
}
],
"source": [
"for ingredient in model_ingredients:\n",
" ings = stemmed_ingredients[:]\n",
" best_ingredients = []\n",
" for i in range(10):\n",
" best = model.wv.most_similar_to_given(porter.stem(ingredient), ings)\n",
" ings.remove(best)\n",
" best_ingredients.append(best)\n",
" print(f\"{ingredient} --> {best_ingredients}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}