{ "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": [ "
\n", "\n", "100%\n", "100000/100000\n", "[06:06<00:00, 0.00s/it]
" ], "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 }