笔者近期在使用一些开源算法解决低资源场景分类时,发现使用一些在modelscope社区上开源的零样本分类模型可以极大提高分类准确率,因此对零样本文本分类模型进行了梳理,希望对大家有所帮助~
模型传送门:
基于自然语言推理的零样本分类模型:StructBERT零样本分类-中文-base。
基于文本生成的零样本分类模型:全任务零样本学习-mT5分类增强版-中文-base。
为了更直观地体现零样本分类模型在低资源场景下的优势,下面我们先来看一个实际案例。
实际案例——工单分类
一些在线平台每天都会产生大量的问题工单,产研同学需要对这些工单进行归类和分析,进而定位问题、了解变化趋势并优化产品。由于产品的变化较快,因此产品的分类体系需要灵活调整,人工打标的方式无法满足日常的工单分析需求,费时费力。基于modelscope开源社区开放的领先算法模型,我们针对工单分类的需求,研发了分类算法,旨在帮助产研团队针对工单内容实现自动化归类,进而提升工单处理和产品迭代的效率。
在解决工单分类任务中,遇到的主要难点有:
业务方初期可投入的人力资源有限。
有效的标注数据很少,存在平均每个类别只有不到10个样本的情况。
常规的分类算法得到的模型效果非常之差,难以满足基本使用需求。
针对上述难点,我们选择了采用零样本分类模型进行算法的构建。通过零样本文本分类模型高质量建模工单文本与各个标签文本的相关性,再将预测结果进行整合排序,最终得到与工单文本最相关的标签。实验结果如表1所示,在3个低资源的工单分类任务上,该模型相较于普通分类模型均取得了明显的提升,其中:
平台1:整体准确率从0.11提升至0.33,一级类别准确率从0.22提升至0.47,二级类别准确率从0.19提升至0.46。
平台2:整体准确率从0.13提升至0.64,一级类别准确率从0.46提升至0.70。
平台3:整体准确率从0.15提升至0.69,一级类别准确率从0.53提升至0.75。
表1 零样本分类模型在实际业务中的表现
业务方 |
共性数据问题 |
分类模型(StructBERT-base) |
零样本分类模型 |
平台1 |
样本数量少,类别多,长尾分布占大多数,大量只有少于10个样本的类。 |
样本数:827 类别数:3层层级分类,铺平131类 效果: 整体acc 0.11,一级acc:0.22,二级acc:0.19 |
样本数:827 类别数:3层层级分类,铺平131类 效果: 整体acc: 0.33,一级acc: 0.47,二级acc: 0.46 |
平台2 |
样本数:612 类别数:2级层级分类,铺平64类 效果: 整体acc 0.13,一级acc 0.46 |
样本数:612 类别数:2层层级分类,铺平64类 效果: 整体acc: 0.64,一级acc: 0.70 |
|
平台3 |
样本数:366 类别数:2级层级分类,铺平39类 效果: 整体acc 0.15,一级acc 0.53 |