给一堆没标注的工单打标签,我是这么做的
社区讨论 · 其他

给一堆没标注的工单打标签,我是这么做的

硅谷回来的硅谷回来的10月28日2026/10/28 117 浏览

上周三下午,一个做 SaaS 的朋友发消息过来,说他手上有几千条客服工单,想训个模型自动分流,问我能不能找人标。

他问了外包报价,按条算,改一次类目定义重标一遍再收一次钱。

他沉默了半分钟。这事其实不用这么干。

数据集即服务这类产品值不值得用,看三个条件。原始数据够不够多,几百条以上;类目定义稳不稳定;团队里有没有一个人能把判定标准写成一句话。三条都满足,能省掉大量重复劳动。反过来,如果连「什么算投诉、什么算咨询」内部都吵不清,上什么工具都是白搭。工具解决的是效率,解决不了定义模糊。

我拿 Snorkel AI 那套 data-as-a-service 跑了一遍,用一个小场景,把工单分成功能故障、账单问题、功能建议三类。它的思路是把数据当成按需取用的东西,你不用自己搭一整套标注系统,规则、抽样、导出都在一个工作区里完成。下面是完整路径。

第一步,把任务写成一句话。

这步最容易被跳过,也最容易翻车。我一开始就写了给工单分类,结果后面全乱。正确的写法要带边界,一条工单只要提到扣款金额、发票、退款,就算账单问题;只要描述某个按钮点了没反应、页面报错,就算功能故障;说希望增加某某功能,才算建议。

写在文档里,谁标都按这个来。这步不花工具,花的是你自己的时间。

第二步,进工作区,建项目。

注册完进去,左边一栏是项目列表,右上角有个新建入口,选数据集项目那一类。会要你填项目名和标签集合。项目名建议英文加下划线,别用中文,后面导文件省事。标签集合就是上面那三类,一行一个,别加空格。

第三步,上传原始数据。

支持直接传 CSV。我这边测下来,最稳的格式是两列,一列 id,一列 text。表头用英文,编码存 UTF-8。上传完界面会给一个预览,前几十行摊开,你能肉眼扫一遍有没有串行。

第一个坑就在这。

我第一次传的时候表头是中文的「工单编号」「内容描述」,界面能读进去,但后面做筛选和导出的时候全变成乱码字段。改成英文再传一次就通了。另外 CSV 里如果有换行符没转义,一条工单会被切成两条,预览里能看出来,行数对不上就是这个问题。

第四步,先写规则,别急着人工标。

这是这套东西跟传统标注最不一样的地方。传统是雇人一条条看,这里是先让你写一批判定规则,让机器按规则先跑一遍。规则可以简单到一个关键词,比如文本里出现「退款」就打成账单问题;也可以是一段正则,匹配报错码格式。

界面上每条规则是一张卡片,写完点保存,它会实时告诉你这条规则命中了多少条。命中太少的规则基本没用,删掉。

规则之间会打架。一条工单同时命中「退款」和「希望增加自动续费开关」,到底算账单还是建议。界面里有个冲突处理设置,我选了按优先级,把更具体的规则排在前面。这里不设,冲突条目会直接空着,先检查配置,别急着怀疑数据。

第五步,抽一批自己标,看规则准不准。

规则跑完不等于能交付。系统会让你抽样本做人工核对,我抽了一两百条,一条条过。这步别省,也别只抽前面几十条。我第一次图省事从头抽,前面全是老工单,格式规整,看着挺准;抽到后面新工单才发现一堆口语化表达全漏了。抽样要随机,界面上有随机抽样选项,勾上。

核对完会给两个数,覆盖率是多少条被规则命中了,准确率是命中的里面有多少是对的。我这边跑下来,覆盖率刚过一半,剩下没被任何规则命中的会自动进人工队列。覆盖率低不代表工具不行,多半是规则写少了。我加了七八条针对口语表达的规则之后,覆盖率明显往上走。

第六步,导出。

确认没问题就导。导出来是一个标准表格,带三列,原始文本、最终标签、置信度。置信度低的建议单独拎出来人工再看一遍,别直接拿去训模型。

我一般会把这个文件和原始工单表在飞书多维表格里用 id 关联对一遍,看有没有漏的。之前写过一篇讲数据管道漏字段的帖子,道理一样,光留空没用,得有个干净的目录做约束,不然脏数据还是混进来。

学完这个,下一步可以试同一批数据跑第二遍,这次不写规则,先人工标五十条做种子,看系统能不能自己给出建议规则。两条路对比一下,你就知道自己的数据适合哪种。

整套流程跑下来,工具的部分其实不多。判定标准那份文档写清楚了,换什么工具都能用。

2 条回复

?
Ctrl + Enter 快速回复
一只鹿
一只鹿6 天前

抽前面全是老工单看着挺准」这句太真实了,我上次抽样本也栽在这,后来强制随机才挖出口语化那批漏网的。

黑产克星
黑产克星10月29日

规则覆盖度只过一半就导出,置信度低的样本黑产最爱钻,人工队列得单独设阈值卡。