笔者近期在使用一些开源算法解决低资源场景分类时,发现使用一些在modelscope社区上开源的零样本分类模型可以极大提高分类准确率,因此对零样本文本分类模型进行了梳理,希望对大家有所帮助~
模型传送门:
基于自然语言推理的零样本分类模型:StructBERT零样本分类-中文-base。
基于文本生成的零样本分类模型:全任务零样本学习-mT5分类增强版-中文-base。
为了更直观地体现零样本分类模型在低资源场景下的优势,下面我们先来看一个实际案例。
实际案例——工单分类
一些在线平台每天都会产生大量的问题工单,产研同学需要对这些工单进行归类和分析,进而定位问题、了解变化趋势并优化产品。由于产品的变化较快,因此产品的分类体系需要灵活调整,人工打标的方式无法满足日常的工单分析需求,费时费力。基于modelscope开源社区开放的领先算法模型,我们针对工单分类的需求,研发了分类算法,旨在帮助产研团队针对工单内容实现自动化归类,进而提升工单处理和产品迭代的效率。
在解决工单分类任务中,遇到的主要难点有:
- 业务方初期可投入的人力资源有限。
- 有效的标注数据很少,存在平均每个类别只有不到10个样本的情况。
- 常规的分类算法得到的模型效果非常之差,难以满足基本使用需求。
针对上述难点,我们选择了采用零样本分类模型进行算法的构建。通过零样本文本分类模型高质量建模工单文本与各个标签文本的相关性,再将预测结果进行整合排序,最终得到与工单文本最相关的标签。实验结果如下表所示,在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。
业务方 |
共性数据问题 |
分类模型(StructBERT-base) |
零样本分类模型 |
云原生-ARMS |
样本数量少,类别多,长尾分布占大多数,大量只有少于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 |
计算平台-dataworks |
样本数:612 类别数:2级层级分类,铺平64类 效果: 整体acc 0.13,一级acc 0.46 |
样本数:612 类别数:2层层级分类,铺平64类 效果: 整体acc: 0.64,一级acc: 0.70 |
|
计算平台-maxcompute |
样本数:366 类别数:2级层级分类,铺平39类 效果: 整体acc 0.15,一级acc 0.53 |
样本数:366 类别数:2层层级分类,铺平39类 效果: 整体acc: 0.69,一级acc: 0.75 |
表1 零样本分类模型在实际业务中的表现
前言
零样本学习(Zero-Shot Learning)是一种机器学习范式,它使用在训练阶段从未学习过的样本和类别标签来测试模型。因此,零样本学习的模型应当具备一定的对从未学习过的分类任务直接进行预测的能力。机器学习(Machine Learning)已经在各个领域取得了广泛的应用,而其中分类是最基础的机器学习任务,它需要分析未分类数据,并确定如何将其归属到已知类别中。通常分类任务需要大量已知类别的数据来构建和训练模型,然而获取任何特定任务、特定领域的已标注数据都是一个非常昂贵且耗时的过程,这使得零样本学习最近变得越来越流行。
文本分类(Text Classification)是自然语言处理(NLP)领域中的一种任务,它指的是将文本数据(如新闻文章、电子邮件或社交媒体帖子)自动分配到一个或多个预定义的类别(如政治、体育、娱乐等)中。这可以通过训练机器学习模型来实现,该模型可以根据文本的词汇、语法等特征来预测它的类别。
零样本文本分类(Zero-Shot Text Classification)是一种文本分类方法,其优势在于它不需要任何预先标记的训练样本来分类文本。 这意味着,即使在缺乏预先标记的数据的情况下,也可以对文本进行分类。传统的文本分类方法需要大量预先标记的训练样本来训练模型,但在实际应用中,很难收集到足够的预先标记的样本。 因此,零样本文本分类可以作为一种替代方案,以便在缺乏预先标记的数据的情况下进行文本分类。图1展示了零样本分类的测试效果,从图中不难发现,零样本分类模型可以支持标签的自定义,从而使得可以对任何文本分类任务进行推理。
图1 零样本分类模型用例测试
常见的零样本分类模型主要可以分为以下两类。
- 基于自然语言推理的模型
- 模型特点:在训练阶段仅使用NLI相关数据集进行训练,在进行零样本分类时,需要将样本转换成nli样本形式。
- 模型优势:进行推理时,在各种分类任务上的表现比较均衡,受到训练数据的影响较小,分类结果稳定。
- 模型缺点:每次推理时都需要推理n个样本(其中n为标签数量),模型推理时间随标签数量线性增长。
- 基于文本生成的模型
- 模型特点:需要设计prompt来结合文本和标签,让模型生成文本对应的标签。
- 模型优势:推理效率较高,每次推理只需要推理1个样本。
- 模型缺点:由于是生成模型,生成的结果可能不稳定,即生成的文本不存在与候选标签中。同时该模型在训练时使用了大量文本分类数据集进行训练,因此在不同分类任务上表现出的性能可能存在较大差异。
下面我们将对这两个模型分别进行介绍。
基于自然语言推理的零样本文本分类模型
该系列模型基于StructBERT[1]在xnli_zh数据集(将英文数据集重新翻译得到的中文数据集)上面进行训练得到。
自然语言推理(Natural Language Inference, NLI)是指利用自然语言的语法和语义知识来判断一个给定的文本片段(如两个句子)的关系,例如它们是否是矛盾、是否相关或是否是一个是另一个的后续。而使用预训练的自然语言推理模型来实现零样本分类的方式,如图2所示,是将要分类的文本设置为自然语言推理的前提,然后使用每个标签构建一个假设,接着对每个假设进行推理得到文本所属的标签,即去判断给定文本片段与给定的标签之间的关系。
图2 基于NLI的零样本分类模型图