Skip to content

Latest commit

 

History

History
90 lines (63 loc) · 2.33 KB

README.md

File metadata and controls

90 lines (63 loc) · 2.33 KB

ingredient-slicer

Python 📦 package for extracting quantities, units, and food words from unstructured recipe ingredients text.

ingredient-slicer works by standardizing the input text and then applying a set of rules and heuristic methods to parse out quantities, units, and food words from unstructured recipe ingredients text. ingredient-slicer was designed to provide a robust and lightweight method for parsing recipe ingredients text without relying on any external dependencies or NLP/ML models. That being said, it is not perfect and can always be improved upon.

Table of Contents:


Installation:

ingredient_slicer can be downloaded from PyPI via pip like so:

pip install ingredient-slicer

Usage:

Provide a string to the IngredientSlicer class and thats it. Invoke the to_json() method to return the parsed ingredient.

import ingredient_slicer

slicer = ingredient_slicer.IngredientSlicer("2 (15-ounces) cans chickpeas, rinsed and drained")

slicer.to_json()

{   
    'ingredient': '2 (15-ounces) cans chickpeas, rinsed and drained', 
    'standardized_ingredient': '2 cans chickpeas, rinsed and drained', 
    'food': 'chickpeas', 

    # primary quantity and units
    'quantity': '30', 
    'unit': 'ounces', 
    'standardized_unit': 'ounce', 

    # any other secondary quantity and units found in the string
    'secondary_quantity': '2', 
    'secondary_unit': 'cans', 
    'standardized_secondary_unit': 'can', 

    'gram_weight': '850.49', 
    'prep': ['drained', 'rinsed'], 
    'size_modifiers': [], 
    'dimensions': [], 
    'is_required': True, 
    'parenthesis_content': ['15 ounce']
}

Individual ingredient components can also be found using methods like food(), quantity(), or unit()

import ingredient_slicer

slicer = ingredient_slicer.IngredientSlicer("3 tbsp unsalted butter, softened at room temperature")

slicer.food() 
>>> 'unsalted butter'

slicer.quantity() 
>>> '3' 

slicer.unit() 
>>> 'tbsp'

slicer.standardized_unit() 
>>> 'tablespoon'

slicer.prep() 
>>> ['room temperature', 'softened']

Contributing/Issues:

If you find a bug or have an idea for a new feature, please open an issue or submit a pull request :)