Ingredient-Parser 2.0.0版本发布:食材解析工具的重大升级
项目简介
Ingredient-Parser是一个专注于解析食谱食材列表的Python工具库。它能够将自然语言描述的食材用量信息(如"2汤匙黄油或橄榄油")转换为结构化的数据格式,包括数量、单位、食材名称等关键信息。这个工具在食谱管理、营养计算、购物清单生成等场景中非常有用。
2.0.0版本核心变化
1. 数据结构重大调整
新版本对解析结果的数据结构进行了重要调整:
-
将
ParsedIngredient.name字段从单一值改为IngredientText对象列表。当解析器识别出多个备选食材时(如"黄油或橄榄油"),会返回包含多个元素的列表;如果未识别出食材名称,则返回空列表。 -
移除了
quantity_fractions参数,现在IngredientAmount.quantity和IngredientAmount.quantity_max直接返回fractions.Fraction对象。开发者可以通过float()函数将其转换为浮点数,如round(float(quantity), 3)进行四舍五入。
2. 新增依赖项
新版本引入了floret库作为依赖项,这是一个高效的词嵌入工具,用于提升模型的特征表示能力。
功能增强
1. 备选食材识别
解析器现在能够智能识别并分离出配方中的备选食材选项:
# 简单示例
parse_ingredient("2 tbsp butter or olive oil").name
# 返回两个IngredientText对象:butter和olive oil
# 复杂示例
parse_ingredient("2 cups chicken or beef stock").name
# 返回chicken stock和beef stock
开发者可以通过设置separate_ingredients=False来禁用此功能,此时将只返回一个食材名称。
2. 预处理标记增强
新增了PREPARED_INGREDIENT标记,用于标识处理后的食材量(如"可产出2杯..."中的量)。
3. 单位转换功能
新增了convert_to()方法,支持在IngredientAmount和CompositeIngredientAmount对象间进行单位转换:
p = parse_ingredient("1 8 ounce can chopped tomatoes")
# 将8盎司转换为克
p.amount[1].convert_to("g") # 返回226.80克
注意:当数量或单位是字符串时无法进行转换。
模型改进
新版本在模型层面引入了自定义词嵌入作为特征,这得益于新加入的floret库。词嵌入技术能够更好地捕捉食材名称和烹饪术语的语义关系,从而提升解析准确率。
升级建议
对于现有项目升级到2.0.0版本,开发者需要注意:
- 检查所有使用
ParsedIngredient.name的代码,适应新的列表结构 - 移除对
quantity_fractions参数的依赖 - 考虑是否需要安装新的floret依赖项
- 评估是否启用备选食材分离功能
这个版本通过更精细的数据结构和更强大的解析能力,为食谱管理和食品分析应用提供了更专业的技术支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



