07 Aug 2026
从评论标注到在线预测:小林的 AI 评论分类项目
这是一篇写给初学者的 AI 业务流程科普。文章不讨论具体系统和基础设施,只用一个完整故事解释:什么是标注、开发、训练、评估、推理和上线。
一、业务问题是什么?
一家电商公司每天都会收到大量用户评论:
“物流很快,产品也很好用。”
“软件更新以后经常崩溃。”
“感觉一般,没有特别满意。”
“客服一直不处理我的退款申请。”
运营人员不可能每天手工阅读几十万条评论。他们希望自动识别:
- 正面评价
- 负面评价
- 中性评价
- 需要优先处理的投诉
算法工程师小林的工作,就是开发一个评论分类模型。以后每收到一条新评论,系统都能自动给出分类结果。
输入:客服一直不处理退款
输出:投诉,置信度 96%
整个项目可以概括为:
收集评论
→ 人工标注
→ 整理数据集
→ 开发和小规模试验
→ 正式训练
→ 评估效果
→ 推理测试
→ 上线为在线服务
→ 收集反馈并继续改进
二、数据标注:先给模型准备“标准答案”
为什么需要标注?
模型一开始不知道什么是正面、负面或投诉。小林必须先给它看大量“题目和标准答案”。
| 评论内容 | 人工标注的答案 |
|---|---|
| 产品很好用,物流也很快 | 正面 |
| 软件更新后一直崩溃 | 负面 |
| 感觉一般 | 中性 |
| 客服拒绝处理退款 | 投诉 |
这个给原始数据添加正确答案的过程,就叫数据标注。
标注时要注意什么?
小林需要先和运营人员明确规则。例如:
“商品很好,但客服太差了”算负面还是投诉?
“一般般”算中性还是负面?
如果标注人员理解不一致,模型也会学得混乱。因此,标注之前要先写清楚标签定义,并抽查标注质量。
最直白地说:
标注就是给模型准备带答案的练习题。
三、整理数据集:把练习题分成三份
标注完成后,小林不会把全部数据一股脑交给模型,而是通常分成三份:
| 数据 | 用途 |
|---|---|
| 训练集 | 让模型学习 |
| 验证集 | 训练过程中比较不同配置 |
| 测试集 | 最后独立检查真实效果 |
可以类比为:
训练集 = 平时练习题
验证集 = 模拟考试
测试集 = 最终考试
小林还要检查:
- 是否有空评论、乱码和重复数据
- 各类评论数量是否严重失衡
- 标签是否存在明显错误
- 用户隐私是否已经去除
- 训练集和测试集是否意外包含相同内容
最直白地说:
数据集不是“文件放在一起”就完成了,还要清洗、检查和合理划分。
四、开发:先把方法和代码调通
小林要开发什么?
小林需要编写一套程序,完成:
读取评论
→ 清理文本
→ 把文字转换成模型能处理的数字
→ 加载基础模型
→ 训练模型
→ 保存结果
→ 评估模型
她通常会使用 Python、PyTorch 和 Transformers 等工具,也可能使用 JupyterLab 查看数据和快速试验。
为什么不能直接正式训练?
正式训练可能运行几小时甚至几天。如果代码在开始几分钟后就因为路径错误而失败,会浪费大量时间。
所以小林会先用 100 条评论做一个小实验,检查:
- 数据能否正常读取
- 标签是否正确
- 模型能否加载
- 代码是否报错
- 训练结果能否保存
- 一条新评论能否得到预测结果
最直白地说:
开发阶段不是为了得到最终模型,而是先证明整套方法能够跑通。
五、选择基础模型:不从零开始学习语言
小林通常不会从零创造一个语言模型,而是选择一个已经具备中文理解能力的基础模型,例如 BERT 类模型。
基础模型已经知道一些通用语言规律:
“非常满意”通常表达积极情绪
“一直崩溃”通常表达消极情绪
“但是”前后可能出现意思转折
但它还不知道这家公司的具体分类规则。因此,小林要使用公司的带标签评论继续训练它。
这个过程叫微调(Fine-tuning):
已经掌握中文基础知识的模型
+
公司的带标签评论
↓
专门判断公司评论的模型
最直白地说:
基础模型像一个已经学过语文的学生,微调是让它继续学习公司的专门业务规则。
六、训练:让模型反复做题并改正错误
训练过程可以简化为:
模型读取一批评论
→ 尝试预测标签
→ 与正确答案比较
→ 计算错误程度
→ 调整内部参数
→ 继续学习下一批评论
例如:
评论:客服拒绝退款
正确答案:投诉
模型预测:负面
模型发现自己答得不够准确
→ 调整内部参数
→ 下次更可能识别为投诉
为什么训练需要时间和 GPU?
模型内部可能有数百万甚至更多参数。训练需要对大量评论反复计算,并不断调整这些参数。
GPU 擅长同时进行大量数学计算,因此通常比 CPU 更适合训练模型。
小林需要决定哪些配置?
常见配置包括:
- 学习率:每次调整参数的幅度
- Epoch:完整学习全部训练数据的次数
- Batch Size:一次处理多少条评论
- 最大文本长度:过长评论如何处理
最直白地说:
训练就是让模型大量做题,根据错误不断调整自己,最后学会分类规律。
七、评估:模型训练完,不代表模型真的好用
训练结束后,小林必须使用模型没有见过的测试数据进行检查。
最简单的指标:准确率
如果模型判断 100 条评论,答对 90 条:
准确率 = 90%
但只看准确率可能不够。假设 100 条评论中只有 5 条投诉,模型把这 5 条全部漏掉,整体准确率仍然可能很高,但业务价值很差。
因此,小林还会关心:
- 投诉有没有被漏掉
- 正面评论是否经常被误判
- 每个类别分别表现如何
- 模型对新评论是否稳定
- 预测速度是否满足要求
她还会人工阅读错误案例:
评论:产品不错,但是售后非常差。
模型预测:正面
这可能说明模型只注意到了“产品不错”,没有理解后面的转折。
最直白地说:
训练是学习,评估是考试;模型能运行,不等于模型考得好。
八、推理:让训练好的模型回答新问题
推理是使用已经训练好的模型处理新的、没有参与训练的数据。
新评论:这款手机续航很好
↓
训练好的评论分类模型
↓
正面,置信度 95%
训练和推理的区别:
| 阶段 | 目的 | 输入 | 输出 |
|---|---|---|---|
| 训练 | 让模型学习 | 大量评论和正确标签 | 训练后的模型文件 |
| 推理 | 使用模型 | 一条或一批新评论 | 分类结果和置信度 |
最直白地说:
训练是让模型学习,推理是让学会后的模型正式答题。
九、上线:把模型变成其他系统能调用的服务
训练完成后,小林得到的是一组模型文件。模型文件本身不能直接接收电商后台的网络请求。
因此,她还需要编写一个推理程序:
接收评论
→ 使用与训练时相同的文本处理方式
→ 调用模型进行推理
→ 返回标签和置信度
对外接口可能是:
POST /predict
Content-Type: application/json
{
"text": "物流很快,商品也很好用"
}
返回:
{
"label": "positive",
"confidence": 0.96
}
上线后,电商后台就可以自动处理新评论:
用户提交评论
→ 电商后台调用模型接口
→ 模型返回分类结果
→ 后台保存结果
→ 高风险投诉转交人工处理
最直白地说:
上线就是把模型包装成一个长期可调用的接口,让模型真正进入业务流程。
十、上线不是结束:还要监控和持续改进
用户的表达方式会变化,新产品也会带来新的问题。例如,以前用户抱怨物流,后来可能开始集中反馈直播、会员或支付问题。
小林需要持续观察:
- 每天处理多少条评论
- 接口响应是否稳定
- 模型是否经常给出低置信度结果
- 哪些评论被运营人员纠正
- 新出现的表达是否经常判断错误
运营人员纠正的错误案例,可以重新加入数据:
线上错误案例
→ 人工重新标注
→ 加入新数据集
→ 再次训练和评估
→ 发布新的模型版本
这就形成了持续改进的闭环。
最直白地说:
模型不是开发一次就永远不变,而是要根据真实业务反馈不断更新。
十一、小林最终交付了什么?
小林最终交付的不只是一个模型文件,而是一套完整成果:
清晰的标签定义
经过检查的评论数据集
数据处理和训练代码
训练后的模型
模型评估报告
处理新评论的推理程序
供业务调用的在线接口
后续监控和改进方案
十二、用一张图回顾完整业务
业务提出问题
“能否自动识别评论情绪和投诉?”
↓
收集历史评论
↓
人工标注正确类别
↓
清洗并划分数据集
↓
编写代码和小规模试验
↓
使用业务数据微调基础模型
↓
使用测试集评估效果
↓
对新评论进行推理
↓
包装为在线接口
↓
业务系统正式调用
↓
收集错误案例并继续改进
十三、核心概念速记
数据标注 = 给原始评论添加标准答案
数据集 = 模型学习和考试使用的材料
开发 = 编写、调试和验证处理方法
基础模型 = 已经掌握通用语言知识的模型
微调 = 使用业务数据继续训练基础模型
训练 = 让模型做题、计算错误并调整参数
评估 = 使用未见过的数据检查模型效果
推理 = 使用训练好的模型处理新评论
在线推理服务 = 持续接收评论并返回预测结果的接口
持续改进 = 用真实错误案例重新标注和训练
小林完成的事情,可以用一句话概括:
她把历史评论整理成带标准答案的数据集,用这些数据训练并检查一个评论分类模型,再把模型做成可供电商后台长期调用的在线接口。
LEo
at 00:12