标准菜品名称清洗#
借助大模型将中台历史商品名称批量匹配到 OA 标准单品名称,生成名称映射表。属于一次性/不定期清洗,日常核对见 标准菜品名称核对。
目录结构#
标准菜品名称
├─ 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。
匹配规则#
通过大模型批量语义匹配,核心 prompt 构建如下:
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"}}, ...]}}"""