# 商品品类分析脚本 ## 功能说明 这个脚本用于批量分析商品标题,提取商品的品类、适用人群、标签、场景、季节和材质/功能等信息。 ### 主要特性 1. **批量处理**:每次处理20条数据,提高效率 2. **完整日志**:记录所有API请求、响应和解析结果 3. **断点续传**:每处理完一个批次自动保存,支持中断后继续 4. **ID映射**:使用序号1-20,最后映射回原始ID 5. **Markdown解析**:高效解析LLM返回的markdown表格 ## 输出字段 | 字段 | 说明 | 示例 | |------|------|------| | id | 原始商品ID | 107365 | | title | 原始英文标题 | Sunglasses Men Polarized... | | title_cn | 中文标题 | 男士偏光飞行员太阳镜 | | category_path | 品类路径(大类>细分) | 配件>眼镜>太阳镜 | | tags | 细分标签 | 偏光,金属框,复古 | | target_audience | 适用人群 | 男女通用,成人 | | usage_scene | 使用场景 | 驾驶,钓鱼,户外 | | season | 适用季节 | 四季 | | key_attributes | 关键属性 | UV400防护,防眩光 | | material | 材质说明 | 金属框架,树脂镜片 | | features | 功能特点 | 偏光防眩,轻量化设计 | | selling_points | 商品卖点 | 专业偏光镜片,有效过滤眩光,适合驾驶和户外运动 | ## 安装依赖 ```bash pip install requests ``` ## 使用方法 ### 1. 设置API密钥 ```bash export DASHSCOPE_API_KEY="your_api_key_here" ``` ### 2. 测试运行(处理前40条) ```bash # 创建测试数据 python test_process.py # 运行测试脚本 python process_products_test.py ``` ### 3. 正式运行(处理全部数据) ```bash python process_products.py ``` ## 文件结构 ``` . ├── saas_170_products.csv # 输入文件(原始数据) ├── process_products.py # 主处理脚本 ├── test_process.py # 测试准备脚本 ├── output_logs/ # 输出目录 │ ├── products_analyzed.csv # 最终结果(CSV格式) │ └── logs/ # 日志目录 │ ├── process_*.log # 主日志文件 │ └── batch_*.json # 每个批次的详细日志 │ ├── input_products # 输入数据 │ ├── raw_response # 原始响应 │ ├── full_response_json # 完整API响应JSON │ ├── parsed_results # 解析后的markdown表格 │ └── final_results # 最终格式化结果 ``` ## 日志说明 每个批次的JSON日志包含: 1. **input_products**: 输入的商品列表(使用临时序号1-20) 2. **raw_response**: LLM返回的原始markdown文本 3. **full_response_json**: 完整的API响应(包括usage、model等) 4. **parsed_results**: 从markdown解析出的结构化数据 5. **final_results**: 映射回原始ID后的最终结果 ## 配置参数 可以在脚本开头修改以下参数: ```python BATCH_SIZE = 20 # 每批处理数量 MODEL_NAME = "qwen-turbo" # 模型名称 INPUT_FILE = "saas_170_products.csv" # 输入文件 OUTPUT_FILE = "output_logs/products_analyzed.csv" # 输出文件 ``` ## 注意事项 1. 确保 `DASHSCOPE_API_KEY` 环境变量已设置 2. 处理4万条数据约需2000次API调用,请确保API配额充足 3. 每个批次会自动保存,可随时中断和恢复 4. 日志文件可能较大,请确保磁盘空间充足 ## 预计时间 - 每批次约10-15秒 - 总批次约2270批(45389条 ÷ 20) - 预计总时间:6-9小时 ## 结果格式示例 ```csv id,title,title_cn,category_path,tags,target_audience,usage_scene,season,key_attributes,material,features,selling_points 107365,"Sunglasses Men Polarized...","男士偏光飞行员太阳镜","配件>眼镜>太阳镜","偏光,金属框,复古","男女通用,成人","驾驶,钓鱼,户外","四季","UV400防护,防眩光","金属框架,树脂镜片","偏光防眩,轻量化","专业偏光镜片,有效过滤眩光,适合驾驶和户外运动" 107366,"Nintendo Switch™...","任天堂Switch游戏机","电子产品>游戏机>掌机","家用,便携,双人","通用,青少年","家庭娱乐,聚会,旅行","四季","无线连接,HD震动","电子元件,塑料","便携设计,多人游戏","任天堂官方正品,支持多种游戏模式,适合家庭娱乐" ``` ## 故障排查 ### API密钥错误 ``` Error: DASHSCOPE_API_KEY environment variable not set! ``` 解决:设置环境变量 `export DASHSCOPE_API_KEY="your_key"` ### API请求失败 检查日志文件中的详细错误信息,可能原因: - API配额不足 - 网络连接问题 - 代理设置问题(脚本已自动禁用代理) - 请求格式错误 脚本已内置重试机制(最多重试3次,间隔5秒),可以自动处理临时网络问题。 ### 解析失败 查看 `batch_*.json` 日志中的 `raw_response` 字段,检查LLM返回格式是否符合预期 ### 代理连接错误 如果遇到代理连接错误: 1. 脚本已自动设置 `NO_PROXY=*` 环境变量 2. 脚本已在请求中明确禁用代理 3. 如果仍有问题,手动取消系统代理设置: ```bash unset http_proxy unset https_proxy unset HTTP_PROXY unset HTTPS_PROXY ```