数据标注智能体可以帮助筛出容易的样本和需要人看的样本,但候选标签仍是候选。将模型输出直接覆盖最终标签,会让后续训练无法区分“模型猜测”与“人工确认”,也会失去争议样本的审查路径。
把候选、路由和最终标签分开
教学表包含文本编号、模型候选标签及一个分数。示例把分数小于 0.90 的样本放进 human_review;其余样本只进入 sample_review,并没有自动确认为最终标签。阈值 0.90 只是展示分流机制,不代表该模型在真实数据上的精度。

最终表另存人工确认标签和复核人。例子中 t2 的候选“咨询”被人工改为“投诉”。如果只保留最后一列,就无法分析智能体在哪些语义上容易错。
运行分流与复核队列脚本
安装 pandas,复制代码保存为 annotation_queue.py 并运行。候选分数是人工构造,脚本未训练、调用或评估真实模型。要接入真实标注平台,应再记录模型版本、批次和预测时间。
import pandas as pd
# 模型候选标签与分数为人工构造,分数未校准,门槛只是演示工作流。
candidates=pd.DataFrame({'id':['t1','t2','t3'],'candidate':['退款','咨询','退款'],'score':[0.96,0.53,0.88]})
threshold=0.90
candidates['route']=candidates['score'].ge(threshold).map({True:'sample_review',False:'human_review'})
final_labels=pd.DataFrame({'id':['t1','t2','t3'],'human_label':['退款','投诉','退款'],'reviewer':['甲','乙','甲']})
review_queue=candidates.loc[candidates['route'].eq('human_review'),['id','candidate','score']]
print('review_queue=\n'+review_queue.to_string(index=False))
print('candidate_table=\n'+candidates.to_string(index=False))
print('final_table=\n'+final_labels.to_string(index=False))
print('candidate_is_final=',candidates['candidate'].tolist()==final_labels['human_label'].tolist())
核对队列和最终表
运行结果会把 t2 放进人工队列,候选表仍保留三个模型输出,最终表写着人工标签。candidate_is_final=False 提醒两张表不能混用。抽样复核发现高分错误时,应扩大复核范围,并单独评估不同类别的错误率。
review_queue=
id candidate score
t2 咨询 0.53
t3 退款 0.88
candidate_table=
id candidate score route
t1 退款 0.96 sample_review
t2 咨询 0.53 human_review
t3 退款 0.88 human_review
final_table=
id human_label reviewer
t1 退款 甲
t2 投诉 乙
t3 退款 甲
candidate_is_final= False
scikit-learn 的概率校准指南说明分类器分数与真实概率的一致性需要检验,不能把 0.90 直接理解成“90% 一定正确”。pandas 基础指南可用于核对条件筛选和表格字段。
实际部署的限制
阈值应由独立验证集、类别风险和人工成本共同确定。医疗、金融等高风险标签不应因高分而跳过复核。若模型没有可靠分数,改用规则触发或全量人工复核,也不能捏造置信度。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31706.html