recipe-ingredient-parser-v3
Version:
Natural language parser for recipes and ingredient lists, incl. combining ingredients
50 lines (44 loc) โข 1.44 kB
text/typescript
// Petra version to be used in petra application
// Wrapper for the parse method
import { petraPostprocessing, petraPreprocessing } from "./petra-convert";
import { parse } from "../";
import { extractAllUnits } from "../units";
export function petraParse(
recipeString: string,
language: string,
keywords?: string[]
) {
// the unitsMap is a map of language to units. It contains an arar
const unitsArray = extractAllUnits(language);
recipeString = petraPreprocessing(recipeString, unitsArray, keywords);
const result = parse(recipeString, language);
result.ingredient = petraPostprocessing(result.ingredient);
return result;
}
export function petraMultiLineParse(recipeString: string, language: string) {
let ingredients = recipeString.split(/,|๐๐ป|๐|\r|\n|-|;/g);
ingredients = ingredients.filter((line) => {
// Verifica se la riga contiene una qualsiasi delle varianti della parola "ingredienti"
if (/ingredient[ei]/i.test(line)) {
return false;
}
// Verifica se la riga contiene solo numeri
if (/^\d+$/.test(line)) {
return false;
}
// Verifica se la riga contiene solo spazi bianchi o รจ vuota
if (/^\s*$/.test(line)) {
return false;
}
return true;
});
let result = [];
let i;
for (var ingredient of ingredients) {
i = petraParse(ingredient, language);
if (i["ingredient"]) {
result.push(i);
}
}
return result;
}