From 9ff2dda8159282ce1f367d21c999441eea47e16a Mon Sep 17 00:00:00 2001 From: TurconiAndrea Date: Sun, 23 Jan 2022 20:20:23 +0100 Subject: [PATCH] Refactored the util file. The categories and the other words now are json files where contributors can place other languages --- README.md | 3 +- recipe_tagger/provider/words_to_group.json | 54 ++ recipe_tagger/provider/words_to_remove.json | 814 ++++++++++++++++++ recipe_tagger/util.py | 909 +------------------- setup.py | 4 +- tests/test_recipe_tagger.py | 14 +- 6 files changed, 916 insertions(+), 882 deletions(-) create mode 100644 recipe_tagger/provider/words_to_group.json create mode 100644 recipe_tagger/provider/words_to_remove.json diff --git a/README.md b/README.md index 704cb44..007a4bb 100644 --- a/README.md +++ b/README.md @@ -110,5 +110,6 @@ Default language is English, if the "language" argument is not provided. - [x] Handling of Wikipedia pages. - [x] Better search over dictionary and Wikipedia pages of ingredient. - [x] Calculate the water foorprint of a recipe -- [ ] A the possibility to add an ingredient after search if it is not present into the embedding. +- [ ] Add the possibility to add an ingredient after search if it is not present into the embedding. - [ ] An explanation in order to provided an other language. +- [ ] A method for automatic translation when providing another language. diff --git a/recipe_tagger/provider/words_to_group.json b/recipe_tagger/provider/words_to_group.json new file mode 100644 index 0000000..5b4cca0 --- /dev/null +++ b/recipe_tagger/provider/words_to_group.json @@ -0,0 +1,54 @@ +{ + "it": [ + "gelato", + "sale", + "pepe", + "olio", + "uova", + "mozzarella", + "pollo", + "farina", + "latte", + "zucchero", + "vino", + "birra", + "aceto", + "colomba", + "pizza", + "riso", + "te", + "insalata", + "carne", + "verdure", + "cioccolato", + "funghi", + "fungo", + "tonnato" + ], + "en": [ + "ice cream", + "salt", + "pepper", + "oil", + "eggs", + "egg", + "mozzarella", + "chicken", + "flour", + "milk", + "sugar", + "wine", + "beer", + "winegar", + "dove", + "pizza", + "rice", + "tea", + "salad", + "meat", + "vegetable", + "chocolate", + "mushroom", + "veal" + ] +} \ No newline at end of file diff --git a/recipe_tagger/provider/words_to_remove.json b/recipe_tagger/provider/words_to_remove.json new file mode 100644 index 0000000..9658d99 --- /dev/null +++ b/recipe_tagger/provider/words_to_remove.json @@ -0,0 +1,814 @@ +{ + "it": [ + "gr", + "g", + "freschi", + "fresche", + "fresco", + "fresca", + "navel", + "rubis", + "uht", + "galbusera", + "igp", + "dalfour", + "vasetto", + "barattolo", + "vetro", + "biologico", + "biologica", + "allevate", + "terra", + "italia", + "cat", + "sardegna", + "it", + "granarolo", + "accadì", + "william's", + "artigianale", + "d'italia", + "az", + "luganica", + "agricola", + "verga", + "ml", + "vaschetta", + "gusti", + "gusto", + "spalmabile", + "molle", + "simile", + "cavalieri", + "classico", + "circa", + "xg", + "bio", + "contiene", + "o'henry", + "large", + "medium", + "small", + "orange", + "ferrero", + "italiano", + "pronto", + "consumo", + "milano", + "pettinicchio", + "wagyu", + "campana", + "palieri", + "trentino", + "st", + "rapsodia", + "petti", + "parzialmente", + "scremato", + "cucina", + "essicato", + "siciliano", + "dop", + "naturale", + "regina", + "aperta", + "parma", + "affettato", + "montare", + "adulto", + "julienne", + "fili", + "extra", + "d", + "krumiro", + "pezzi", + "spremere", + "romano", + "datterini", + "sungold", + "croccante", + "fatto", + "fatti", + "bastoncini", + "lavati", + "mondati", + "vergine", + "baffo", + "verde", + "nero", + "giallo", + "azzurro", + "caldo", + "rosso", + "rossa", + "fettina", + "panata", + "asciutta", + "asciutto", + "tenero", + "pronti", + "consumo", + "italia", + "formia", + "lt", + "composta", + "dalfour", + "origine", + "cuore", + "spagna", + "libano", + "gran bretagna", + "small", + "cubettate", + "preparato", + "surgelati", + "baffo", + "panatura", + "panato", + "punta", + "anca", + "stagionato", + "stagionata", + "scaglie", + "affumicata", + "affumicato", + "cubettato", + "tritata", + "tritato", + "grattuggiato", + "galline", + "aperto", + "antibiotici", + "madras", + "vaccina", + "mezza", + "luna", + "pronta", + "fette", + "mix", + "mascognaz", + "cubetti", + "bocconcini", + "taggiasche", + "rondelle", + "tondo", + "cotti", + "forno", + "pelle", + "pinne", + "gialle", + "coltello", + "eviscerato", + "d'anca", + "rosette", + "fette", + "altamura", + "essicato", + "petit", + "royal", + "summer", + "bianco", + "cubettata", + "confettura", + "%", + "frutta", + "mondate", + "fettine", + "cubetti", + "filetto", + "curry", + "ciliegini", + "carnaroli", + "cotto", + "grigliate", + "trebbiano", + "dry", + "oltrepo", + "pavese", + "pan", + "gran", + "brut", + "oltrepò", + "metodo", + "docg", + "blanc", + "de", + "noir", + "granella", + "tropicale", + "vegetale", + "carnaroli", + "blau", + "dell’oltrepò", + "quaquarini", + "vigna", + "poggio", + "anna", + "crudo", + "silano", + "alta", + "qualità", + "qualita", + "salsa", + "pronta", + "secchi", + "mare", + "atlantica", + "brodo", + "bue", + "caprese", + "carpaccio", + "provincia", + "pavia", + "igt", + "coscia", + "straccetti", + "gialla", + "tritate", + "verdi", + "rossi", + "gialli", + "fesa", + "paillard", + "tagliati", + "filetti", + "greciacroazia", + "tonda", + "crema", + "affettati", + "ortolana", + "integrali", + "integrale", + "girella", + "sardi", + "suino", + "sesamo", + "camone", + "all'olio oliva", + "marmara", + "lesso", + "ciliegine", + "artigianali", + "giganti", + "pepite", + "mesi", + "rino", + "spumante", + "quarto", + "veraci", + "code", + "argentino", + "gocce", + "fusi", + "tagliate", + "spiedino", + "rio", + "velo", + "dischetti", + "arcobaleno", + "m&m's", + "precotta", + "precotto", + "lesse", + "trito", + "sottili", + "nordico", + "mezze", + "estivo", + "base", + "cremor", + "tartaro", + "fosfati", + "semola", + "grano", + "duro", + "lamon", + "quadrate", + "bastoncino", + "lattosio", + "dopparmigiano", + "mesi", + "valtellinesi", + "feschi", + "parboiled", + "rotolini", + "pz", + "xgr", + "xl", + "scaloppe", + "quadrati", + "golden", + "cruda", + "bovinosuino", + "impasto", + "tortino", + "puliti", + "punte", + "griglia", + "nazionale", + "cotta", + "reale", + "spicchi", + "borghella", + "surgelate", + "nere", + "bavarese", + "petto", + "grappolo", + "gelo", + "sp", + "filone", + "corta", + "mediterranea", + "bonduelle", + "proporzioni", + "variabili", + "cubettati", + "vapore", + "germogli", + "persico", + "congelati", + "misto", + "fiocchi", + "grigliare", + "porzione", + "almaverde", + "diamond", + "fuji", + "pianta", + "lavate", + "sgusciati", + "devenati", + "sottofesa", + "secche", + "semi", + "vivace", + "rio", + "qualità", + "lessi" + ], + "en": [ + "crushed", + "crumbles", + "ground", + "minced", + "powder", + "chopped", + "sliced", + "teaspoon", + "tablespoon", + "fluid", + "ounce", + "gill", + "cup", + "pint", + "quart", + "gallon", + "gr", + "ml", + "l", + "dl", + "pound", + "mg", + "g", + "kg", + "mm", + "cm", + "m", + "inch", + "clove", + "red", + "bunch", + "glass", + "glasses", + "fresh", + "chopped", + "a", + "red", + "bunch", + "and", + "or", + "leaf", + "chilli", + "large", + "extra", + "sprig", + "ground", + "handful", + "free", + "small", + "virgin", + "range", + "from", + "dried", + "sustainable", + "black", + "peeled", + "higher", + "welfare", + "seed", + "for", + "finely", + "freshly", + "sea", + "quality", + "white", + "ripe", + "few", + "piece", + "source", + "to", + "organic", + "flat", + "smoked", + "ginger", + "sliced", + "green", + "picked", + "the", + "stick", + "plain", + "plus", + "mixed", + "your", + "optional", + "serve", + "unsalted", + "baby", + "fat", + "ask", + "natural", + "skin", + "roughly", + "into", + "such", + "cut", + "good", + "brown", + "grated", + "trimmed", + "yellow", + "dusting", + "knob", + "frozen", + "on", + "deseeded", + "low", + "runny", + "balsamic", + "cooked", + "streaky", + "rasher", + "zest", + "pin", + "breadcrumb", + "halved", + "grating", + "stalk", + "light", + "tinned", + "dry", + "soft", + "rocket", + "bone", + "colour", + "washed", + "skinless", + "leftover", + "splash", + "removed", + "dijon", + "thick", + "big", + "hot", + "drained", + "sized", + "watercress", + "fishmonger", + "english", + "dill", + "raw", + "worcestershire", + "flake", + "tbsp", + "leg", + "pine", + "wild", + "if", + "fine", + "herb", + "shoulder", + "cube", + "dressing", + "with", + "chunk", + "spice", + "thumb", + "garam", + "new", + "little", + "punnet", + "peppercorn", + "shelled", + "other", + "chopped", + "taste", + "can", + "sauce", + "water", + "diced", + "package", + "italian", + "shredded", + "divided", + "all", + "purpose", + "crushed", + "more", + "bell", + "needed", + "thinly", + "boneless", + "half", + "cubed", + "jar", + "seasoning", + "extract", + "sweet", + "baking", + "beaten", + "heavy", + "seeded", + "tin", + "uncooked", + "crumb", + "style", + "thin", + "coarsely", + "spring", + "chili", + "cornstarch", + "strip", + "rinsed", + "root", + "quartered", + "head", + "softened", + "container", + "crumbled", + "frying", + "lean", + "cooking", + "roasted", + "warm", + "whipping", + "thawed", + "pitted", + "sun", + "kosher", + "bite", + "toasted", + "split", + "melted", + "degree", + "lengthwise", + "romano", + "packed", + "pod", + "anchovy", + "rom", + "prepared", + "juiced", + "fluid", + "floret", + "room", + "active", + "seasoned", + "mix", + "deveined", + "lightly", + "anise", + "thai", + "size", + "unsweetened", + "torn", + "wedge", + "sour", + "basmati", + "marinara", + "dark", + "temperature", + "garnish", + "bouillon", + "loaf", + "shell", + "reggiano", + "canola", + "parmigiano", + "round", + "canned", + "ghee", + "crust", + "long", + "broken", + "ketchup", + "bulk", + "cleaned", + "condensed", + "sherry", + "provolone", + "cold", + "soda", + "cottage", + "spray", + "tamarind", + "pecorino", + "shortening", + "part", + "bottle", + "sodium", + "cocoa", + "grain", + "french", + "roast", + "stem", + "link", + "firm", + "asafoetida", + "mild", + "dash", + "boiling", + "chopped", + "skin off", + "bone out", + "from sustrainable sources", + "fillet steak", + "curry", + "cherry tomatoes", + "carnaroli", + "cooked", + "grilling", + "trebbiano", + "dry", + "Oltrepo", + "bunting", + "Pan", + "great", + "brut", + "beyond", + "method", + "doc", + "blanc", + "de", + "noir", + "grain", + "tropical", + "vegetable", + "carnaroli", + "blau", + "from beyond", + "quaquarini", + "vineyard", + "knoll", + "anna", + "you", + "raw", + "silane", + "high", + "quality", + "sauce", + "ready", + "buckets", + "sea", + "atlantic", + "broth", + "ox", + "Caprese", + "carpaccio", + "province", + "pavia", + "igt", + "thigh", + "rags", + "yellow", + "chopped", + "greens", + "red", + "Detective stories", + "rump", + "paillard", + "cut yourself", + "fillets", + "greciacroatia", + "round", + "cream", + "sliced", + "vegetable garden", + "integral", + "whole wheat", + "swivel", + "Sardinians", + "pig", + "sesame", + "camone", + "with olive oil", + "marmara", + "boiled", + "cherries", + "artisanal", + "giants", + "nuggets", + "months", + "rino", + "bubbly wine", + "fourth", + "true", + "code", + "Argentine", + "drops", + "fused", + "cut", + "skewer", + "rio", + "veil", + "floppy disks", + "Rainbow", + "m & m's", + "pre-cooked", + "pre-cooked", + "read", + "chopped", + "thin", + "Nordic", + "mezze", + "summer", + "base", + "cremor", + "tartar", + "phosphates", + "semolina", + "grain", + "hard", + "lamon", + "square", + "stick", + "lactose", + "Dopparmigiano", + "months", + "Valtellina", + "feschi", + "parboiled", + "rolls", + "pcs", + "xgr", + "xl", + "scallops", + "squares", + "golden", + "raw", + "bovinosuino", + "dough", + "pie", + "clean", + "tips", + "Grill", + "national", + "cooked", + "real", + "wedges", + "borghella", + "frozen", + "black", + "Bavarian", + "chest", + "bunch", + "frost", + "sp", + "vein", + "short", + "Mediterranean", + "bonduelle", + "proportions", + "variables", + "diced", + "vapor", + "sprouts", + "perch", + "frozen", + "mixed", + "flakes", + "to grill", + "portion", + "almaverde", + "diamond", + "fuji", + "plant", + "washed", + "shelled", + "devenati", + "underside", + "dry", + "seeds", + "boiled" + ] +} \ No newline at end of file diff --git a/recipe_tagger/util.py b/recipe_tagger/util.py index b1fc682..bbcd2b4 100644 --- a/recipe_tagger/util.py +++ b/recipe_tagger/util.py @@ -2,6 +2,7 @@ Module containing all the support method of the package. """ import io +import json import pkgutil import re @@ -10,881 +11,45 @@ from stop_words import get_stop_words from textblob import Word -__other_words = { - "it": [ - "gr", - "g", - "freschi", - "fresche", - "fresco", - "fresca", - "navel", - "rubis", - "uht", - "galbusera", - "igp", - "dalfour", - "vasetto", - "barattolo", - "vetro", - "biologico", - "biologica", - "allevate", - "terra", - "italia", - "cat", - "sardegna", - "it", - "granarolo", - "accadì", - "william's", - "artigianale", - "d'italia", - "az", - "luganica", - "agricola", - "verga", - "ml", - "vaschetta", - "gusti", - "gusto", - "spalmabile", - "molle", - "simile", - "cavalieri", - "classico", - "circa", - "xg", - "bio", - "contiene", - "o'henry", - "large", - "medium", - "small", - "orange", - "ferrero", - "italiano", - "pronto", - "consumo", - "milano", - "pettinicchio", - "wagyu", - "campana", - "palieri", - "trentino", - "st", - "rapsodia", - "petti", - "parzialmente", - "scremato", - "cucina", - "essicato", - "siciliano", - "dop", - "naturale", - "regina", - "aperta", - "parma", - "affettato", - "montare", - "adulto", - "julienne", - "fili", - "extra", - "d", - "krumiro", - "pezzi", - "spremere", - "romano", - "datterini", - "sungold", - "croccante", - "fatto", - "fatti", - "bastoncini", - "lavati", - "mondati", - "vergine", - "baffo", - "verde", - "nero", - "giallo", - "azzurro", - "caldo", - "rosso", - "rossa", - "fettina", - "panata", - "asciutta", - "asciutto", - "tenero", - "pronti", - "consumo", - "italia", - "formia", - "lt", - "composta", - "dalfour", - "origine", - "cuore", - "spagna", - "libano", - "gran bretagna", - "small", - "cubettate", - "preparato", - "surgelati", - "baffo", - "panatura", - "panato", - "punta", - "anca", - "stagionato", - "stagionata", - "scaglie", - "affumicata", - "affumicato", - "cubettato", - "tritata", - "tritato", - "grattuggiato", - "galline", - "aperto", - "antibiotici", - "madras", - "vaccina", - "mezza", - "luna", - "pronta", - "fette", - "mix", - "mascognaz", - "cubetti", - "bocconcini", - "taggiasche", - "rondelle", - "tondo", - "cotti", - "forno", - "pelle", - "pinne", - "gialle", - "coltello", - "eviscerato", - "d'anca", - "rosette", - "fette", - "altamura", - "essicato", - "petit", - "royal", - "summer", - "bianco", - "cubettata", - "confettura", - "%", - "frutta", - "mondate", - "fettine", - "cubetti", - "filetto", - "curry", - "ciliegini", - "carnaroli", - "cotto", - "grigliate", - "trebbiano", - "dry", - "oltrepo", - "pavese", - "pan", - "gran", - "brut", - "oltrepò", - "metodo", - "docg", - "blanc", - "de", - "noir", - "granella", - "tropicale", - "vegetale", - "carnaroli", - "blau", - "dell’oltrepò", - "quaquarini", - "vigna", - "poggio", - "anna", - "crudo", - "silano", - "alta", - "qualità" "qualita", - "salsa", - "pronta", - "secchi", - "mare", - "atlantica", - "brodo", - "bue", - "caprese", - "carpaccio", - "provincia", - "pavia", - "igt", - "coscia", - "straccetti", - "gialla", - "tritate", - "verdi", - "rossi", - "gialli", - "fesa", - "paillard", - "tagliati", - "filetti", - "greciacroazia", - "tonda", - "crema", - "affettati", - "ortolana", - "integrali", - "integrale", - "girella", - "sardi", - "suino", - "sesamo", - "camone", - "all'olio oliva", - "marmara", - "lesso", - "ciliegine", - "artigianali", - "giganti", - "pepite", - "mesi", - "rino", - "spumante", - "quarto", - "veraci", - "code", - "argentino", - "gocce", - "fusi", - "tagliate", - "spiedino", - "rio", - "velo", - "dischetti", - "arcobaleno", - "m&m's", - "precotta", - "precotto", - "lesse", - "trito", - "sottili", - "nordico", - "mezze", - "estivo", - "base", - "cremor", - "tartaro", - "fosfati", - "semola", - "grano", - "duro", - "lamon", - "quadrate", - "bastoncino", - "lattosio", - "dopparmigiano", - "mesi", - "valtellinesi", - "feschi", - "parboiled", - "rotolini", - "pz", - "xgr", - "xl", - "scaloppe", - "quadrati", - "golden", - "cruda", - "bovinosuino", - "impasto", - "tortino", - "puliti", - "punte", - "griglia", - "nazionale", - "cotta", - "reale", - "spicchi", - "borghella", - "surgelate", - "nere", - "bavarese", - "petto", - "grappolo", - "gelo", - "sp", - "filone", - "corta", - "mediterranea", - "bonduelle", - "proporzioni", - "variabili", - "cubettati", - "vapore", - "germogli", - "persico", - "congelati", - "misto", - "fiocchi", - "grigliare", - "porzione", - "almaverde", - "diamond", - "fuji", - "pianta", - "lavate", - "sgusciati", - "devenati", - "sottofesa", - "secche", - "semi", - "vivace", - "rio", - "qualità", - "lessi", - ], - "en": [ - "crushed", - "crumbles", - "ground", - "minced", - "powder", - "chopped", - "sliced", - "teaspoon", - "tablespoon", - "fluid", - "ounce", - "gill", - "cup", - "pint", - "quart", - "gallon", - "gr", - "ml", - "l", - "dl", - "pound", - "mg", - "g", - "kg", - "mm", - "cm", - "m", - "inch", - "clove", - "red", - "bunch", - "glass", - "glasses", - "fresh", - "chopped", - "a", - "red", - "bunch", - "and", - "or", - "leaf", - "chilli", - "large", - "extra", - "sprig", - "ground", - "handful", - "free", - "small", - "virgin", - "range", - "from", - "dried", - "sustainable", - "black", - "peeled", - "higher", - "welfare", - "seed", - "for", - "finely", - "freshly", - "sea", - "quality", - "white", - "ripe", - "few", - "piece", - "source", - "to", - "organic", - "flat", - "smoked", - "ginger", - "sliced", - "green", - "picked", - "the", - "stick", - "plain", - "plus", - "mixed", - "your", - "optional", - "serve", - "unsalted", - "baby", - "fat", - "ask", - "natural", - "skin", - "roughly", - "into", - "such", - "cut", - "good", - "brown", - "grated", - "trimmed", - "yellow", - "dusting", - "knob", - "frozen", - "on", - "deseeded", - "low", - "runny", - "balsamic", - "cooked", - "streaky", - "rasher", - "zest", - "pin", - "breadcrumb", - "halved", - "grating", - "stalk", - "light", - "tinned", - "dry", - "soft", - "rocket", - "bone", - "colour", - "washed", - "skinless", - "leftover", - "splash", - "removed", - "dijon", - "thick", - "big", - "hot", - "drained", - "sized", - "watercress", - "fishmonger", - "english", - "dill", - "raw", - "worcestershire", - "flake", - "tbsp", - "leg", - "pine", - "wild", - "if", - "fine", - "herb", - "shoulder", - "cube", - "dressing", - "with", - "chunk", - "spice", - "thumb", - "garam", - "new", - "little", - "punnet", - "peppercorn", - "shelled", - "other", - "chopped", - "taste", - "can", - "sauce", - "water", - "diced", - "package", - "italian", - "shredded", - "divided", - "all", - "purpose", - "crushed", - "more", - "bell", - "needed", - "thinly", - "boneless", - "half", - "cubed", - "jar", - "seasoning", - "extract", - "sweet", - "baking", - "beaten", - "heavy", - "seeded", - "tin", - "uncooked", - "crumb", - "style", - "thin", - "coarsely", - "spring", - "chili", - "cornstarch", - "strip", - "rinsed", - "root", - "quartered", - "head", - "softened", - "container", - "crumbled", - "frying", - "lean", - "cooking", - "roasted", - "warm", - "whipping", - "thawed", - "pitted", - "sun", - "kosher", - "bite", - "toasted", - "split", - "melted", - "degree", - "lengthwise", - "romano", - "packed", - "pod", - "anchovy", - "rom", - "prepared", - "juiced", - "fluid", - "floret", - "room", - "active", - "seasoned", - "mix", - "deveined", - "lightly", - "anise", - "thai", - "size", - "unsweetened", - "torn", - "wedge", - "sour", - "basmati", - "marinara", - "dark", - "temperature", - "garnish", - "bouillon", - "loaf", - "shell", - "reggiano", - "canola", - "parmigiano", - "round", - "canned", - "ghee", - "crust", - "long", - "broken", - "ketchup", - "bulk", - "cleaned", - "condensed", - "sherry", - "provolone", - "cold", - "soda", - "cottage", - "spray", - "tamarind", - "pecorino", - "shortening", - "part", - "bottle", - "sodium", - "cocoa", - "grain", - "french", - "roast", - "stem", - "link", - "firm", - "asafoetida", - "mild", - "dash", - "boiling", - "chopped", - "skin off", - "bone out", - "from sustrainable sources", - "fillet steak", - "curry", - "cherry tomatoes", - "carnaroli", - "cooked", - "grilling", - "trebbiano", - "dry", - "Oltrepo", - "bunting", - "Pan", - "great", - "brut", - "beyond", - "method", - "doc", - "blanc", - "de", - "noir", - "grain", - "tropical", - "vegetable", - "carnaroli", - "blau", - "from beyond", - "quaquarini", - "vineyard", - "knoll", - "anna", - "you", - "raw", - "silane", - "high", - "quality" "quality", - "sauce", - "ready", - "buckets", - "sea", - "atlantic", - "broth", - "ox", - "Caprese", - "carpaccio", - "province", - "pavia", - "igt", - "thigh", - "rags", - "yellow", - "chopped", - "greens", - "red", - "Detective stories", - "rump", - "paillard", - "cut yourself", - "fillets", - "greciacroatia", - "round", - "cream", - "sliced", - "vegetable garden", - "integral", - "whole wheat", - "swivel", - "Sardinians", - "pig", - "sesame", - "camone", - "with olive oil", - "marmara", - "boiled", - "cherries", - "artisanal", - "giants", - "nuggets", - "months", - "rino", - "bubbly wine", - "fourth", - "true", - "code", - "Argentine", - "drops", - "fused", - "cut", - "skewer", - "rio", - "veil", - "floppy disks", - "Rainbow", - "m & m's", - "pre-cooked", - "pre-cooked", - "read", - "chopped", - "thin", - "Nordic", - "mezze", - "summer", - "base", - "cremor", - "tartar", - "phosphates", - "semolina", - "grain", - "hard", - "lamon", - "square", - "stick", - "lactose", - "Dopparmigiano", - "months", - "Valtellina", - "feschi", - "parboiled", - "rolls", - "pcs", - "xgr", - "xl", - "scallops", - "squares", - "golden", - "raw", - "bovinosuino", - "dough", - "pie", - "clean", - "tips", - "Grill", - "national", - "cooked", - "real", - "wedges", - "borghella", - "frozen", - "black", - "Bavarian", - "chest", - "bunch", - "frost", - "sp", - "vein", - "short", - "Mediterranean", - "bonduelle", - "proportions", - "variables", - "diced", - "vapor", - "sprouts", - "perch", - "frozen", - "mixed", - "flakes", - "to grill", - "portion", - "almaverde", - "diamond", - "fuji", - "plant", - "washed", - "shelled", - "devenati", - "underside", - "dry", - "seeds", - "boiled", - ], +__adjectives_pattern = { + "it": "[a-zA-Z]*ato", + "en": "[a-zA-Z]*ed", } -__categories = { - "it": [ - "gelato", - "sale", - "pepe", - "olio", - "uova", - "mozzarella", - "pollo", - "farina", - "latte", - "zucchero", - "vino", - "birra", - "aceto", - "colomba", - "pizza", - "riso", - "te", - "insalata", - "carne", - "verdure", - "cioccolato", - "funghi", - "fungo", - "tonnato", - ], - "en": [ - "ice cream", - "salt", - "pepper", - "oil", - "eggs", - "egg", - "mozzarella", - "chicken", - "flour", - "milk", - "sugar", - "wine", - "beer", - "winegar", - "dove", - "pizza", - "rice", - "tea", - "salad", - "meat", - "vegetable", - "chocolate", - "mushroom", - "veal", - ], -} +def __read_json(file_name): + """ + Get the json file as a dictionary. Json file are stored into the + provider folder. + :param file_name: the name of the configuration file. + :return: a dictionary with the content of json file. + """ + file = io.BytesIO(pkgutil.get_data(__name__, f"provider/{file_name}")) + data = json.load(file) + return data -__adjectives_pattern = { - "it": "[a-zA-Z]*ato", - "en": "[a-zA-Z]*ed", -} + +def __get_categories(): + """ + Get the provided word_to_group file provided into the provider folder. + This file contains the words for all the supported languages that + must be simplified if an ingredients contains the word. + + :return: a dict containing the words for each language. + """ + return __read_json("words_to_group.json") + + +def __get_excluded_words(): + """ + Get the provided word_to_remove file provided into the provider folder. + This file contains the words for all the supported languages that + must be considered as stop words and removed from the recipes. + + :return: a dict containing the words for each language. + """ + return __read_json("words_to_remove.json") def __get_stop_words(language="en"): @@ -896,7 +61,7 @@ def __get_stop_words(language="en"): :return: a list containing all the stopwords of the language. """ stop_words = get_stop_words(language) - return stop_words + __other_words[language] + return stop_words + __get_excluded_words()[language] def __strip_numeric(string): @@ -930,7 +95,7 @@ def __categorize_words(string, language="en"): :return: a categorized string or the same string and a boolean to state if the string has been categorized or not. """ - category = __categories[language] + category = __get_categories()[language] word_list = string.split() intersection = list(set(word_list) & set(category)) return (intersection[0], True) if intersection else (string, False) diff --git a/setup.py b/setup.py index ed113e5..b1a5f26 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ name="recipe-tagger", packages=find_packages(include=["recipe_tagger"]), version="0.4.12", - description="A library for tagging and classify recipes", + description="A library for tagging, classify and calculate the water footprint of food recipes", author="Andrea Turconi", license="MIT", long_description=README, @@ -36,5 +36,5 @@ "stop-words", ], test_suite="tests", - package_data={"": ["data/*.npy"]}, + package_data={"": ["data/*.npy", "provider/*.json"]}, ) diff --git a/tests/test_recipe_tagger.py b/tests/test_recipe_tagger.py index 5f87701..310dfa7 100644 --- a/tests/test_recipe_tagger.py +++ b/tests/test_recipe_tagger.py @@ -7,7 +7,7 @@ from recipe_tagger import recipe_tagger -@pytest.mark.skip() +# @pytest.mark.skip() def test_is_ingredient_vegan(): """ Test for is_ingredient_vegan method. @@ -18,7 +18,7 @@ def test_is_ingredient_vegan(): assert recipe_tagger.is_ingredient_vegan("chicken") == False -@pytest.mark.skip() +#  @pytest.mark.skip() def test_is_recipe_vegan(): """ Test for is_recipe_vegan method. @@ -29,7 +29,7 @@ def test_is_recipe_vegan(): assert recipe_tagger.is_recipe_vegan(["apple", "pear"]) == True -@pytest.mark.skip() +# @pytest.mark.skip() def test_add_ingredient(): """ Test for add_ingredient method. @@ -38,7 +38,7 @@ def test_add_ingredient(): assert recipe_tagger.add_ingredient("milk", "dairy") == False -@pytest.mark.skip() +# @pytest.mark.skip() def test_search_ingredient_hypernyms(): """ Test for search_ingredient_hypernyms method. @@ -52,7 +52,7 @@ def test_search_ingredient_hypernyms(): assert recipe_tagger.search_ingredient_hypernyms("egg") == "egg" -@pytest.mark.skip() +# @pytest.mark.skip() def test_search_ingredient_class(): """ Test for search_ingredient_class method. @@ -81,7 +81,7 @@ def test_get_ingredient_class(): assert recipe_tagger.get_ingredient_class("orata", language="it") == "seafood" -@pytest.mark.skip() +# @pytest.mark.skip() def test_get_recipe_class_percentage(): """ Test for get_recipe_class_percentage method. @@ -93,7 +93,7 @@ def test_get_recipe_class_percentage(): ) == [("meat", "66.67%"), ("fruit", "33.33%")] -@pytest.mark.skip() +# @pytest.mark.skip() def test_get_recipe_tags(): """ Test for get_recipe_tags method.