标准菜品名称清洗#
需求背景#
清洗产品名称,统一为标准菜品名称。
需求频率#
不定时
目录结构#
标准菜品名称
├─ main.py # 主程序
├─ README.md # 项目说明。
├─ 所有产品名称.csv # 输入产品名称。
├─ 标准单品名称.xlsx # 输入标准菜品名称。
├─ 标准菜品名称映射.json # 输出匹配结果。
└─ 标准菜品名称映射.xlsx # 输出匹配结果。数据获取#
获取所有待清洗产品名称#
文件名保存:所有产品名称.csv
SELECT DISTINCT
item_name AS 商品名称
FROM
ads_dbs_trade_food_di
WHERE
business_date LIKE '202605%'
AND dp_item_count > 0
ORDER BY
item_name获取标准菜品名称#
OA标准单品名称.xlsx。
数据清洗#
def build_prompt(batch_products):
"""为一批商品名称构建匹配 prompt"""
product_list = "\n".join([f"{i+1}. {name}" for i, name in enumerate(batch_products)])
return f"""你是一个餐饮行业商品名称匹配专家。请将以下【待匹配商品名称】逐一匹配到最合适的【标准单品名称】。
规则:
1. 语义相似即可匹配,不需要完全一样。例如"一桶水果茶1000ml"可以匹配"一桶水果茶"。
2. 忽略容量、温度、赠品描述等修饰词。例如"蜂蜜冰茉莉(500ml)"匹配"蜂蜜冰茉莉"。
3. 如果一个待匹配名称包含多个独立商品(如一桶水果茶+一桶全家福),请分别评估每个子商品与标准库的匹配置信度,仅输出你最有把握、匹配度最高的那一个单品。
4. 如果找不到合适的匹配,标记为"无匹配"。
5. 只返回 JSON 数组,不要任何其他文字。
【标准单品名称列表】(共{len(standard_names)}个):
{standard_list_text}
【待匹配商品名称】(共{len(batch_products)}个):
{product_list}
请返回 JSON 对象,格式如下:
{{"matches": [{{"商品名称": "xxx", "匹配标准名称": "yyy"}}, ...]}}"""项目地址#
https://fuwenyue.coding.net/p/tianlala/d/standard_food_name/git