diff --git a/data/grammars/terminal_allergen_de.lark b/data/grammars/terminal_allergen_de.lark new file mode 100644 index 0000000000..1ddd8bc83c --- /dev/null +++ b/data/grammars/terminal_allergen_de.lark @@ -0,0 +1,302 @@ +// This file has been generated automatically, DO NOT EDIT! +ALLERGEN_DE.1: /\bgluten enthaltendes getreide\b/ // "en:gluten" + | /\bgluten-enthaltendes-getreide\b/ // "en:gluten" + | /\bvollmilchschokolade[üu]berzug\b/ // "en:milk" + | /\bschwefeldioxid und sulfite\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bmagermilchjoghurtpulver\b/ // "en:milk" + | /\banderen schalenfr[üu]chten\b/ // "en:nuts" + | /\bh[üu]hnerei-trockeneiwei(ß|ss)\b/ // "en:eggs" + | /\bh[üu]hnerei-eiweisspulver\b/ // "en:eggs" + | /\bh[üu]hnertrockeneieiweiss\b/ // "en:eggs" + | /\bmagermilchpulverzusatz\b/ // "en:milk" + | /\bvollkorn-weizenflocken\b/ // "en:gluten" + | /\bweitere schalenfr[üu]chte\b/ // "en:nuts" + | /\bh[üu]hnerei-eiwei(ß|ss)pulver\b/ // "en:eggs" + | /\bh[üu]hnertrockeneieiwei(ß|ss)\b/ // "en:eggs" + | /\bsojaproteinhydrolysat\b/ // "en:soybeans" + | /\bsojaeiweisskonzentrat\b/ // "en:soybeans" + | /\bmilcheiweisserzeugnis\b/ // "en:milk" + | /\bvollkorn-haferflocken\b/ // "en:gluten" + | /\bweizenvollkornflocken\b/ // "en:gluten" + | /\broggenvollkornflocken\b/ // "en:gluten" + | /\bdinkelvollkornflocken\b/ // "en:gluten" + | /\balaska-seelachs-filet\b/ // "en:fish" + | /\bh[üu]hnereieiwei(ß|ss)pulver\b/ // "en:eggs" + | /\bh[üu]hnertrockeneiweiss\b/ // "en:eggs" + | /\bsojaeiwei(ß|ss)konzentrat\b/ // "en:soybeans" + | /\bmagermilchkonzentrat\b/ // "en:milk" + | /\bmilcheiwei(ß|ss)erzeugnis\b/ // "en:milk" + | /\bhafervollkornflocken\b/ // "en:gluten" + | /\bvollkornhaferflocken\b/ // "en:gluten" + | /\broggenvollkornschrot\b/ // "en:gluten" + | /\bweizenvollkornschrot\b/ // "en:gluten" + | /\bdinkelvollkornschrot\b/ // "en:gluten" + | /\balaska-seelachsfilet\b/ // "en:fish" + | /\bh[üu]hnertrockeneiwei(ß|ss)\b/ // "en:eggs" + | /\bh[üu]hnereiweisspulver\b/ // "en:eggs" + | /\bvollmilchschokolade\b/ // "en:milk" + | /\bgerstenvollkornmehl\b/ // "en:gluten" + | /\bvollkornhaferschrot\b/ // "en:gluten" + | /\bh[üu]hnervolleipulver\b/ // "en:eggs" + | /\bh[üu]hnereigelbpulver\b/ // "en:eggs" + | /\bh[üu]hnereiklarpulver\b/ // "en:eggs" + | /\bh[üu]hnereiwei(ß|ss)pulver\b/ // "en:eggs" + | /\bhafer-vollkornmehl\b/ // "en:gluten" + | /\bvollkorn-hafermehl\b/ // "en:gluten" + | /\bvollkornweizenmehl\b/ // "en:gluten" + | /\bweizenvollkornmehl\b/ // "en:gluten" + | /\bgerstenmalzextrakt\b/ // "en:gluten" + | /\broggenvollkornmehl\b/ // "en:gluten" + | /\bdinkelvollkornmehl\b/ // "en:gluten" + | /\bweizenrostmalzmehl\b/ // "en:gluten" + | /\bsojaproteinisolat\b/ // "en:soybeans" + | /\bbuttermilchpulver\b/ // "en:milk" + | /\bmilcherzeugnissen\b/ // "en:milk" + | /\bmagermilchjoghurt\b/ // "en:milk" + | /\bkondensmagermilch\b/ // "en:milk" + | /\bhafervollkornmehl\b/ // "en:gluten" + | /\bvollkornhafermehl\b/ // "en:gluten" + | /\bweizenspeisekleie\b/ // "en:gluten" + | /\bsojasossenpulver\b/ // "en:soybeans" + | /\bsojaeiwei(ß|ss)isolat\b/ // "en:soybeans" + | /\bblauschimmelk[äa]se\b/ // "en:milk" + | /\bmilcherzeugnisse\b/ // "en:milk" + | /\bmagermilchpulver\b/ // "en:milk" + | /\bmolkeneiwei(ß|ss)k[äa]se\b/ // "en:milk" + | /\bs[üu]ssmolkenpulver\b/ // "en:milk" + | /\bjoghurterzeugnis\b/ // "en:milk" + | /\barachis hypogaea\b/ // "en:peanuts" + | /\bhartweizengriess\b/ // "en:gluten" + | /\bh[üu]hnerei-eiwei(ß|ss)\b/ // "en:eggs" + | /\bsojaso(ß|ss)enpulver\b/ // "en:soybeans" + | /\bmolkenerzeugnis\b/ // "en:milk" + | /\bmilchschokolade\b/ // "en:milk" + | /\bsauermilchquark\b/ // "en:milk" + | /\bsauerrahmpulver\b/ // "en:milk" + | /\bs[üu](ß|ss)molkenpulver\b/ // "en:milk" + | /\bvollmilchpulver\b/ // "en:milk" + | /\bs[üu]ssmolkepulver\b/ // "en:milk" + | /\bweizensauerteig\b/ // "en:gluten" + | /\bhartweizengrie(ß|ss)\b/ // "en:gluten" + | /\bgerstenmalzmehl\b/ // "en:gluten" + | /\bweizenquellmehl\b/ // "en:gluten" + | /\bweichweizenmehl\b/ // "en:gluten" + | /\bschalenfr[üu]chten\b/ // "en:nuts" + | /\bmandelst[üu]ckchen\b/ // "en:nuts" + | /\bqueenslandn[üu]sse\b/ // "en:nuts" + | /\bhaselnussst[üu]cke\b/ // "en:nuts" + | /\bstaudensellerie\b/ // "en:celery" + | /\bstangensellerie\b/ // "en:celery" + | /\bknollensellerie\b/ // "en:celery" + | /\bselleriebl[äa]tter\b/ // "en:celery" + | /\bsellerieextrakt\b/ // "en:celery" + | /\balaska-seelachs\b/ // "en:fish" + | /\bh[üu]hnereieiwei(ß|ss)\b/ // "en:eggs" + | /\bh[üu]hnereieigelb\b/ // "en:eggs" + | /\bsoja-lecithine\b/ // "en:soybeans" + | /\bbutterreinfett\b/ // "en:milk" + | /\bs[üu](ß|ss)molkepulver\b/ // "en:milk" + | /\bvollkorn-hafer\b/ // "en:gluten" + | /\bweizenmalzmehl\b/ // "en:gluten" + | /\bgerstenflocken\b/ // "en:gluten" + | /\bvollkornweizen\b/ // "en:gluten" + | /\bschalenfr[üu]chte\b/ // "en:nuts" + | /\bhaselnussmasse\b/ // "en:nuts" + | /\bhaselnusskerne\b/ // "en:nuts" + | /\bhaselnusspaste\b/ // "en:nuts" + | /\bmacadamian[üu]sse\b/ // "en:nuts" + | /\bschwefeldioxid\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bs[üu](ß|ss)lupinenmehl\b/ // "en:lupin" + | /\bmakrelenfilets\b/ // "en:fish" + | /\bsojalecithine\b/ // "en:soybeans" + | /\bsojaerzeugnis\b/ // "en:soybeans" + | /\bjoghurtpulver\b/ // "en:milk" + | /\bmolkeneiweiss\b/ // "en:milk" + | /\bmolkenprotein\b/ // "en:milk" + | /\bbuttereinfett\b/ // "en:milk" + | /\bvollkornhafer\b/ // "en:gluten" + | /\bweizenflocken\b/ // "en:gluten" + | /\broggenflocken\b/ // "en:gluten" + | /\bdinkelflocken\b/ // "en:gluten" + | /\bhaselnussmark\b/ // "en:nuts" + | /\bparanusskerne\b/ // "en:nuts" + | /\bsellerieblatt\b/ // "en:celery" + | /\bselleriesamen\b/ // "en:celery" + | /\bsesambr[öo]tchen\b/ // "en:sesame-seeds" + | /\bheringsfilets\b/ // "en:fish" + | /\bmakrelenfilet\b/ // "en:fish" + | /\beigelbpulver\b/ // "en:eggs" + | /\beiklarpulver\b/ // "en:eggs" + | /\bh[üu]hnereiwei(ß|ss)\b/ // "en:eggs" + | /\bh[üu]hnervollei\b/ // "en:eggs" + | /\bvolleipulver\b/ // "en:eggs" + | /\bh[üu]hnereigelb\b/ // "en:eggs" + | /\bh[üu]hnereiklar\b/ // "en:eggs" + | /\bsojalecithin\b/ // "en:soybeans" + | /\bsojabohnen[öo]l\b/ // "en:soybeans" + | /\bkondensmilch\b/ // "en:milk" + | /\bkuhvollmilch\b/ // "en:milk" + | /\bmolkenpulver\b/ // "en:milk" + | /\bsahnejoghurt\b/ // "en:milk" + | /\bk[äa]sereimilch\b/ // "en:milk" + | /\bmilchprotein\b/ // "en:milk" + | /\bmolkeneiwei(ß|ss)\b/ // "en:milk" + | /\berdnusskerne\b/ // "en:peanuts" + | /\bhaferflocken\b/ // "en:gluten" + | /\bweizengluten\b/ // "en:gluten" + | /\bweizenst[äa]rke\b/ // "en:gluten" + | /\bweizenkleber\b/ // "en:gluten" + | /\bweizengriess\b/ // "en:gluten" + | /\broggenschrot\b/ // "en:gluten" + | /\bmandelst[üu]cke\b/ // "en:nuts" + | /\bwalnusskerne\b/ // "en:nuts" + | /\bandere n[üu]sse\b/ // "en:nuts" + | /\bselleriesaft\b/ // "en:celery" + | /\bheringsfilet\b/ // "en:fish" + | /\bsojaprotein\b/ // "en:soybeans" + | /\bsojaflocken\b/ // "en:soybeans" + | /\bbuttermilch\b/ // "en:milk" + | /\bedamer-k[äa]se\b/ // "en:milk" + | /\bmilchzucker\b/ // "en:milk" + | /\bmilcheiwei(ß|ss)\b/ // "en:milk" + | /\bmilchpulver\b/ // "en:milk" + | /\bspeisequark\b/ // "en:milk" + | /\bsahnepulver\b/ // "en:milk" + | /\brahmjoghurt\b/ // "en:milk" + | /\bschlagsahne\b/ // "en:milk" + | /\bziegenmilch\b/ // "en:milk" + | /\bschafsmilch\b/ // "en:milk" + | /\bmolkepulver\b/ // "en:milk" + | /\bgerstenmehl\b/ // "en:gluten" + | /\bgerstenmalz\b/ // "en:gluten" + | /\bweizengrie(ß|ss)\b/ // "en:gluten" + | /\bweizenkleie\b/ // "en:gluten" + | /\bmandelkerne\b/ // "en:nuts" + | /\bhaseln[üu]ssen\b/ // "en:nuts" + | /\bkaschun[üu]sse\b/ // "en:nuts" + | /\bcashewkerne\b/ // "en:nuts" + | /\bcashewn[üu]sse\b/ // "en:nuts" + | /\bsesamk[öo]rner\b/ // "en:sesame-seeds" + | /\blupinenmehl\b/ // "en:lupin" + | /\blachsfilets\b/ // "en:fish" + | /\bkrebstieren\b/ // "en:crustaceans" + | /\bh[üu]hnereier\b/ // "en:eggs" + | /\bsojabohnen\b/ // "en:soybeans" + | /\bsojaeiwei(ß|ss)\b/ // "en:soybeans" + | /\bsojaschrot\b/ // "en:soybeans" + | /\bemmentaler\b/ // "en:milk" + | /\bfrischk[äa]se\b/ // "en:milk" + | /\bgorgonzola\b/ // "en:milk" + | /\bk[äa]sepulver\b/ // "en:milk" + | /\bmagermilch\b/ // "en:milk" + | /\bmagerquark\b/ // "en:milk" + | /\bmozzarella\b/ // "en:milk" + | /\bsauermilch\b/ // "en:milk" + | /\bbutterfett\b/ // "en:milk" + | /\bschafmilch\b/ // "en:milk" + | /\bsauermolke\b/ // "en:milk" + | /\bhaferkleie\b/ // "en:gluten" + | /\bweizenmehl\b/ // "en:gluten" + | /\bhartweizen\b/ // "en:gluten" + | /\broggenmehl\b/ // "en:gluten" + | /\bdinkelmehl\b/ // "en:gluten" + | /\bweizenmalz\b/ // "en:gluten" + | /\bhaferfaser\b/ // "en:gluten" + | /\bhaseln[üu]sse\b/ // "en:nuts" + | /\bpecann[üu]sse\b/ // "en:nuts" + | /\bsesamsamen\b/ // "en:sesame-seeds" + | /\bsesampaste\b/ // "en:sesame-seeds" + | /\bsenfk[öo]rner\b/ // "en:mustard" + | /\bsenfsaaten\b/ // "en:mustard" + | /\bsenfschrot\b/ // "en:mustard" + | /\blachsfilet\b/ // "en:fish" + | /\bkrebstiere\b/ // "en:crustaceans" + | /\bweichtiere\b/ // "en:molluscs" + | /\bsojamilch\b/ // "en:soybeans" + | /\bsojakerne\b/ // "en:soybeans" + | /\bsojakleie\b/ // "en:soybeans" + | /\bsojasauce\b/ // "en:soybeans" + | /\bsojagrie(ß|ss)\b/ // "en:soybeans" + | /\bsojasosse\b/ // "en:soybeans" + | /\bcamembert\b/ // "en:milk" + | /\bsauerrahm\b/ // "en:milk" + | /\bvollmilch\b/ // "en:milk" + | /\bs[üu]ssmolke\b/ // "en:milk" + | /\bmilchfett\b/ // "en:milk" + | /\berdn[üu]ssen\b/ // "en:peanuts" + | /\bhafermehl\b/ // "en:gluten" + | /\bwalnuss[öo]l\b/ // "en:nuts" + | /\bparan[üu]sse\b/ // "en:nuts" + | /\bpistazien\b/ // "en:nuts" + | /\bhaselnuss\b/ // "en:nuts" + | /\berdnuss[öo]l\b/ // "en:nuts" + | /\bsesamkorn\b/ // "en:sesame-seeds" + | /\bsenfsamen\b/ // "en:mustard" + | /\bthunfisch\b/ // "en:fish" + | /\beipulver\b/ // "en:eggs" + | /\bh[üu]hnerei\b/ // "en:eggs" + | /\bfrischei\b/ // "en:eggs" + | /\bsojafett\b/ // "en:soybeans" + | /\bsojamehl\b/ // "en:soybeans" + | /\bsojaso(ß|ss)e\b/ // "en:soybeans" + | /\bbergk[äa]se\b/ // "en:milk" + | /\bhartk[äa]se\b/ // "en:milk" + | /\bkuhmilch\b/ // "en:milk" + | /\brohmilch\b/ // "en:milk" + | /\bpecorino\b/ // "en:milk" + | /\bs[üu](ß|ss)molke\b/ // "en:milk" + | /\berdn[üu]sse\b/ // "en:peanuts" + | /\bmalzmehl\b/ // "en:gluten" + | /\bwaln[üu]sse\b/ // "en:nuts" + | /\bsulphite\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bsellerie\b/ // "en:celery" + | /\bsenfmehl\b/ // "en:mustard" + | /\bsenfsaat\b/ // "en:mustard" + | /\bsenfkorn\b/ // "en:mustard" + | /\beiweiss\b/ // "en:eggs" + | /\bcheddar\b/ // "en:milk" + | /\bjoghurt\b/ // "en:milk" + | /\blaktose\b/ // "en:milk" + | /\bricotta\b/ // "en:milk" + | /\berdnuss\b/ // "en:peanuts" + | /\bgersten\b/ // "en:gluten" + | /\bmandeln\b/ // "en:nuts" + | /\bsulfite\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bsesam[öo]l\b/ // "en:sesame-seeds" + | /\blupinen\b/ // "en:lupin" + | /\bmakrele\b/ // "en:fish" + | /\bfisch[öo]l\b/ // "en:fish" + | /\beigelb\b/ // "en:eggs" + | /\beiklar\b/ // "en:eggs" + | /\bvollei\b/ // "en:eggs" + | /\beiwei(ß|ss)\b/ // "en:eggs" + | /\bsoja[öo]l\b/ // "en:soybeans" + | /\bbutter\b/ // "en:milk" + | /\bedamer\b/ // "en:milk" + | /\bgluten\b/ // "en:gluten" + | /\bweizen\b/ // "en:gluten" + | /\broggen\b/ // "en:gluten" + | /\bgerste\b/ // "en:gluten" + | /\bdinkel\b/ // "en:gluten" + | /\bmandel\b/ // "en:nuts" + | /\bfische\b/ // "en:fish" + | /\bhering\b/ // "en:fish" + | /\beiern\b/ // "en:eggs" + | /\bmilch\b/ // "en:milk" + | /\bgouda\b/ // "en:milk" + | /\bquark\b/ // "en:milk" + | /\bsahne\b/ // "en:milk" + | /\bmolke\b/ // "en:milk" + | /\bhafer\b/ // "en:gluten" + | /\bkamut\b/ // "en:gluten" + | /\bn[üu]sse\b/ // "en:nuts" + | /\bsesam\b/ // "en:sesame-seeds" + | /\bfisch\b/ // "en:fish" + | /\blachs\b/ // "en:fish" + | /\beier\b/ // "en:eggs" + | /\bsoja\b/ // "en:soybeans" + | /\bk[äa]se\b/ // "en:milk" + | /\brahm\b/ // "en:milk" + | /\bsenf\b/ // "en:mustard" + | /\bei\b/ // "en:eggs" + diff --git a/data/grammars/terminal_allergen_es.lark b/data/grammars/terminal_allergen_es.lark new file mode 100644 index 0000000000..febad6d40b --- /dev/null +++ b/data/grammars/terminal_allergen_es.lark @@ -0,0 +1,106 @@ +// This file has been generated automatically, DO NOT EDIT! +ALLERGEN_ES.1: /\bcereales que contienen gluten\b/ // "en:gluten" + | /\botros frutos secos de c[áa]scara\b/ // "en:nuts" + | /\bfrutos de c[áa]scara y derivados\b/ // "en:nuts" + | /\bproductos derivados de huevo\b/ // "en:eggs" + | /\bdi[óo]xido de azufre y sulfitos\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bharina de trigo integral\b/ // "en:gluten" + | /\bfrutos secos de c[áa]scara\b/ // "en:nuts" + | /\botros frutos de c[áa]scara\b/ // "en:nuts" + | /\btrigo de joras[áa]n kamut\b/ // "en:gluten" + | /\bleche y sus derivados\b/ // "en:milk" + | /\bsemillas de ajonjol[íi]\b/ // "en:sesame-seeds" + | /\baceite de cacahuete\b/ // "en:peanuts" + | /\baceite de cacahuate\b/ // "en:peanuts" + | /\bcereales con gluten\b/ // "en:gluten" + | /\bnueces del amazonas\b/ // "en:nuts" + | /\bnueces de macadamia\b/ // "en:nuts" + | /\bnueces de australia\b/ // "en:nuts" + | /\bsemillas de mostaza\b/ // "en:mustard" + | /\bfrutos con c[áa]scara\b/ // "en:nuts" + | /\botros frutos secos\b/ // "en:nuts" + | /\bsemillas de s[ée]samo\b/ // "en:sesame-seeds" + | /\bgranos de ajonjol[íi]\b/ // "en:sesame-seeds" + | /\bderivados l[áa]cteos\b/ // "en:milk" + | /\bproductos l[áa]cteos\b/ // "en:milk" + | /\bleche y derivados\b/ // "en:milk" + | /\bprote[íi]na de leche\b/ // "en:milk" + | /\bfrutos de c[áa]scara\b/ // "en:nuts" + | /\bnueces de [áa]rboles\b/ // "en:nuts" + | /\bdi[óo]xido de azufre\b/ // "en:sulphur-dioxide-and-sulphites" + | /\blecitina de soja\b/ // "en:soybeans" + | /\blecitina de soya\b/ // "en:soybeans" + | /\barachis hypogaea\b/ // "en:peanuts" + | /\bnueces de brasil\b/ // "en:nuts" + | /\bnueces macadamia\b/ // "en:nuts" + | /\bgranos de s[ée]samo\b/ // "en:sesame-seeds" + | /\bharina de trigo\b/ // "en:gluten" + | /\bcangrejo de r[íi]o\b/ // "en:crustaceans" + | /\bnuez de brasil\b/ // "en:nuts" + | /\bhabas de soja\b/ // "en:soybeans" + | /\bhabas de soya\b/ // "en:soybeans" + | /\bfrutos secos\b/ // "en:nuts" + | /\botros nueces\b/ // "en:nuts" + | /\bcacahuetes\b/ // "en:peanuts" + | /\bcacahuates\b/ // "en:peanuts" + | /\balf[óo]ncigos\b/ // "en:nuts" + | /\baltramuces\b/ // "en:lupin" + | /\bcrust[áa]ceos\b/ // "en:crustaceans" + | /\blangostino\b/ // "en:crustaceans" + | /\bmejillones\b/ // "en:molluscs" + | /\bcacahuete\b/ // "en:peanuts" + | /\bcacahuate\b/ // "en:peanuts" + | /\balmendras\b/ // "en:nuts" + | /\bavellanas\b/ // "en:nuts" + | /\banacardos\b/ // "en:nuts" + | /\bpistachos\b/ // "en:nuts" + | /\bescal[óo]pas\b/ // "en:molluscs" + | /\bcaracoles\b/ // "en:molluscs" + | /\bcereales\b/ // "en:gluten" + | /\bcoquitos\b/ // "en:nuts" + | /\bpistacho\b/ // "en:nuts" + | /\bcastañas\b/ // "en:nuts" + | /\bsulfitos\b/ // "en:sulphur-dioxide-and-sulphites" + | /\bajonjol[íi]\b/ // "en:sesame-seeds" + | /\baltramuz\b/ // "en:lupin" + | /\bcangrejo\b/ // "en:crustaceans" + | /\blangosta\b/ // "en:crustaceans" + | /\bmoluscos\b/ // "en:molluscs" + | /\bmejill[óo]n\b/ // "en:molluscs" + | /\blactosa\b/ // "en:milk" + | /\bl[áa]cteos\b/ // "en:milk" + | /\bcenteno\b/ // "en:gluten" + | /\bespelta\b/ // "en:gluten" + | /\bpacanas\b/ // "en:nuts" + | /\bcoquito\b/ // "en:nuts" + | /\bpiñones\b/ // "en:nuts" + | /\bcastaña\b/ // "en:nuts" + | /\bmostaza\b/ // "en:mustard" + | /\bpescado\b/ // "en:fish" + | /\bcamar[óo]n\b/ // "en:crustaceans" + | /\bmolusco\b/ // "en:molluscs" + | /\balmejas\b/ // "en:molluscs" + | /\bcalamar\b/ // "en:molluscs" + | /\bcaracol\b/ // "en:molluscs" + | /\bhuevos\b/ // "en:eggs" + | /\bgluten\b/ // "en:gluten" + | /\bcebada\b/ // "en:gluten" + | /\bnueces\b/ // "en:nuts" + | /\bs[ée]samo\b/ // "en:sesame-seeds" + | /\bostras\b/ // "en:molluscs" + | /\bvieras\b/ // "en:molluscs" + | /\bhuevo\b/ // "en:eggs" + | /\bleche\b/ // "en:milk" + | /\bqueso\b/ // "en:milk" + | /\btrigo\b/ // "en:gluten" + | /\bkamut\b/ // "en:gluten" + | /\bpiñ[óo]n\b/ // "en:nuts" + | /\bgamba\b/ // "en:crustaceans" + | /\bsepia\b/ // "en:molluscs" + | /\bostra\b/ // "en:molluscs" + | /\bviera\b/ // "en:molluscs" + | /\bsoja\b/ // "en:soybeans" + | /\bsoya\b/ // "en:soybeans" + | /\bnuez\b/ // "en:nuts" + | /\bapio\b/ // "en:celery" + diff --git a/data/grammars/terminal_allergen_es_map.json b/data/grammars/terminal_allergen_es_map.json new file mode 100644 index 0000000000..a5c80ad87d --- /dev/null +++ b/data/grammars/terminal_allergen_es_map.json @@ -0,0 +1 @@ +{"cereales que contienen gluten":["en:gluten"],"otros frutos secos de cáscara":["en:nuts"],"frutos de cáscara y derivados":["en:nuts"],"productos derivados de huevo":["en:eggs"],"dióxido de azufre y sulfitos":["en:sulphur-dioxide-and-sulphites"],"harina de trigo integral":["en:gluten"],"frutos secos de cáscara":["en:nuts"],"otros frutos de cáscara":["en:nuts"],"trigo de jorasán kamut":["en:gluten"],"leche y sus derivados":["en:milk"],"semillas de ajonjolí":["en:sesame-seeds"],"aceite de cacahuete":["en:peanuts"],"aceite de cacahuate":["en:peanuts"],"cereales con gluten":["en:gluten"],"nueces del amazonas":["en:nuts"],"nueces de macadamia":["en:nuts"],"nueces de australia":["en:nuts"],"semillas de mostaza":["en:mustard"],"frutos con cáscara":["en:nuts"],"otros frutos secos":["en:nuts"],"semillas de sésamo":["en:sesame-seeds"],"granos de ajonjolí":["en:sesame-seeds"],"derivados lácteos":["en:milk"],"productos lácteos":["en:milk"],"leche y derivados":["en:milk"],"proteína de leche":["en:milk"],"frutos de cáscara":["en:nuts"],"nueces de árboles":["en:nuts"],"dióxido de azufre":["en:sulphur-dioxide-and-sulphites"],"lecitina de soja":["en:soybeans"],"lecitina de soya":["en:soybeans"],"arachis hypogaea":["en:peanuts"],"nueces de brasil":["en:nuts"],"nueces macadamia":["en:nuts"],"granos de sésamo":["en:sesame-seeds"],"harina de trigo":["en:gluten"],"cangrejo de río":["en:crustaceans"],"nuez de brasil":["en:nuts"],"habas de soja":["en:soybeans"],"habas de soya":["en:soybeans"],"frutos secos":["en:nuts"],"otros nueces":["en:nuts"],"cacahuetes":["en:peanuts"],"cacahuates":["en:peanuts"],"alfóncigos":["en:nuts"],"altramuces":["en:lupin"],"crustáceos":["en:crustaceans"],"langostino":["en:crustaceans"],"mejillones":["en:molluscs"],"cacahuete":["en:peanuts"],"cacahuate":["en:peanuts"],"almendras":["en:nuts"],"avellanas":["en:nuts"],"anacardos":["en:nuts"],"pistachos":["en:nuts"],"escalópas":["en:molluscs"],"caracoles":["en:molluscs"],"cereales":["en:gluten"],"coquitos":["en:nuts"],"pistacho":["en:nuts"],"castañas":["en:nuts"],"sulfitos":["en:sulphur-dioxide-and-sulphites"],"ajonjolí":["en:sesame-seeds"],"altramuz":["en:lupin"],"cangrejo":["en:crustaceans"],"langosta":["en:crustaceans"],"moluscos":["en:molluscs"],"mejillón":["en:molluscs"],"lactosa":["en:milk"],"lácteos":["en:milk"],"centeno":["en:gluten"],"espelta":["en:gluten"],"pacanas":["en:nuts"],"coquito":["en:nuts"],"piñones":["en:nuts"],"castaña":["en:nuts"],"mostaza":["en:mustard"],"pescado":["en:fish"],"camarón":["en:crustaceans"],"molusco":["en:molluscs"],"almejas":["en:molluscs"],"calamar":["en:molluscs"],"caracol":["en:molluscs"],"huevos":["en:eggs"],"gluten":["en:gluten"],"cebada":["en:gluten"],"nueces":["en:nuts"],"sésamo":["en:sesame-seeds"],"ostras":["en:molluscs"],"vieras":["en:molluscs"],"huevo":["en:eggs"],"leche":["en:milk"],"queso":["en:milk"],"trigo":["en:gluten"],"kamut":["en:gluten"],"piñón":["en:nuts"],"gamba":["en:crustaceans"],"sepia":["en:molluscs"],"ostra":["en:molluscs"],"viera":["en:molluscs"],"soja":["en:soybeans"],"soya":["en:soybeans"],"nuez":["en:nuts"],"apio":["en:celery"]} \ No newline at end of file diff --git a/data/grammars/traces.lark b/data/grammars/traces.lark index cf9f2d500d..b35c2787fc 100644 --- a/data/grammars/traces.lark +++ b/data/grammars/traces.lark @@ -33,12 +33,22 @@ traces_fr: can_contain_fr | can_contain_2_fr | contains_fr | manufactured_in_fr // It may contain traces of nuts, peanuts, sesame, sulphites and gluten. can_contain_en: ("it"i WS)? "may" WS "contain" WS ("traces" WS "of" WS)? trace_list_en -contain_en: "contains"i (WS "traces" WS "of")? (WS? ":" WS?)? trace_list_en +contain_en: "contains"i (WS "traces" WS "of")? (WS? ":")? WS? trace_list_en manufactured_in_en: "prepared"i WS "in" WS "premises" WS "where" WS "traces" WS "of" WS trace_list_en WS "are" WS "used" trace_list_en: ALLERGEN_EN (WS? ("," WS)? (("and" WS)? ("of" WS)?)? ALLERGEN_EN)* traces_en: can_contain_en | contain_en | manufactured_in_en -traces: traces_fr | traces_en +// ## ES ## + +// PUEDE CONTENER LECHE +can_contain_es: ("este" WS "producto" WS)? "puede" WS "contener"i (WS? ":")? WS? trace_list_es +// Contiene leche +contain_es: ("este" WS "producto" WS)? "contiene"i (WS? ":")? WS? trace_list_es +trace_list_es: ALLERGEN_ES (WS? ("," WS)? (("y" WS)?)? ALLERGEN_ES)* +traces_es: contain_es | can_contain_es + + +traces: traces_fr | traces_en | traces_fr | traces_es start: (traces | junk | WS)+ // all other words junk: OTHER+ @@ -46,3 +56,4 @@ junk: OTHER+ %import common.WS %import .terminal_allergen_fr.ALLERGEN_FR %import .terminal_allergen_en.ALLERGEN_EN +%import .terminal_allergen_es.ALLERGEN_ES diff --git a/robotoff/prediction/ingredient_list/postprocess.py b/robotoff/prediction/ingredient_list/postprocess.py index ab78acac59..37f8fd6988 100644 --- a/robotoff/prediction/ingredient_list/postprocess.py +++ b/robotoff/prediction/ingredient_list/postprocess.py @@ -11,7 +11,11 @@ rf"{ASTERISK_SYMBOL}?ingr[ée]dients?( agricoles?)? {FROM_ORGANIC_FARMING_FR}" rf"|{ASTERISK_SYMBOL}?produits? {FROM_ORGANIC_FARMING_FR}" rf"|{ASTERISK_SYMBOL}?{FROM_ORGANIC_FARMING_FR}" - rf"|{ASTERISK_SYMBOL}organic( farming)?", + rf"|{ASTERISK_SYMBOL}organic( farming)?" + rf"|{ASTERISK_SYMBOL}?aus biologischer landwirtschaft" + rf"|{ASTERISK_SYMBOL}?procedentes del cultivo ecol[óo]gico" + rf"|{ASTERISK_SYMBOL}?de cultivo ecol[óo]gico certificado" + rf"|{ASTERISK_SYMBOL}?ingredientes? ecol[óo]gicos?", re.I, ) diff --git a/tests/unit/prediction/ingredient_list/test_postprocess.py b/tests/unit/prediction/ingredient_list/test_postprocess.py index 47f21e180f..59216bbd90 100644 --- a/tests/unit/prediction/ingredient_list/test_postprocess.py +++ b/tests/unit/prediction/ingredient_list/test_postprocess.py @@ -21,6 +21,8 @@ ("* = ingrédients issus de l'agriculture durable", True), ("* Produit issu de l'Agriculture Biologique", True), ("*organic", True), + ('"aus biologischer Landwirtschaft', True), + ("*de cultivo ecologico certificado", True), ("organic", False), ("agriculture biologique", False), ("produit issu", False), @@ -67,29 +69,47 @@ def test_detect_additional_mentions(text: str, initial_end_idx, new_end_idx: int @pytest.mark.parametrize( - "text, initial_end_idx, new_end_idx", + "text, new_end_idx", [ - ("Peut contenir des traces de fruit à coque.", 0, 41), + ("Peut contenir des traces de fruit à coque.", 41), ( "Peut contenir des traces de soja, lait, sésame, amande, noisette, noix de cajou et arachide !", - 0, 91, ), - ("Eau, banane", 0, 0), - ("peut contenir des traces d'arachides et de cacahuètes. Attention", 0, 53), + ("Eau, banane", 0), + ("peut contenir des traces d'arachides et de cacahuètes. Attention", 53), ( "produit élaboré dans un atelier utilisant du lait demi-écrémé et du gorgonzola. OTHER", - 0, 78, ), # This should not match, as the string does not start with the # allergen mention - ("OTHER. Peut contenir des traces d'arachides et de cacahuètes", 0, 0), - ("contient naturellement du jaune d'oeuf. Info nutritionnelles", 0, 38), + ("OTHER. Peut contenir des traces d'arachides et de cacahuètes", 0), + ("contient naturellement du jaune d'oeuf. Info nutritionnelles", 38), # This should not match, as the first word is "acontient" and not # "contient" (we check for word boundaries) - ("acontient naturellement du jaune d'oeuf. Info nutritionnelles", 0, 0), + ("acontient naturellement du jaune d'oeuf. Info nutritionnelles", 0), + # EN + ("contains wheat", 14), + ], +) +def test_detect_trace_mention(text: str, new_end_idx: int): + assert detect_trace_mention(text, end_idx=0) == new_end_idx + + +@pytest.mark.parametrize( + "text", + [ + # FR + "Peut contenir des traces de fruit à coque", + # ES + "CONTIENE LECHE", + "Contiene lecitina de soya", + "Este producto contiene espelta, trigo y gluten", + "PUEDE CONTENER LECHE", ], ) -def test_detect_trace_mention(text: str, initial_end_idx, new_end_idx: int): - assert detect_trace_mention(text, end_idx=initial_end_idx) == new_end_idx +def test_detect_trace_mention_full_match(text: str): + """Test that the trace mention detection works (only full matches are + tested here).""" + assert detect_trace_mention(text, end_idx=0) == len(text)