Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
Sijun He 8a338ddbed | 1 year ago | |
---|---|---|
.. | ||
hierarchical | 1 year ago | |
multi_class | 1 year ago | |
multi_label | 1 year ago | |
README.md | 1 year ago | |
doccano.md | 1 year ago | |
doccano.py | 1 year ago |
目录
文本分类应用针对多分类、多标签、层次分类等高频场景开源了产业级分类应用方案,打通数据标注-模型训练-模型调优-模型压缩-预测部署全流程,旨在解决细分场景应用的痛点和难点,快速实现文本分类产品落地。
文本分类简单来说就是对给定的一个句子或一段文本使用分类模型分类。虽然文本分类在金融、医疗、法律、工业等领域都有广泛的成功实践应用,但如何选择合适的方案和预训练模型、数据标注质量差、效果调优困难、AI入门成本高、如何高效训练部署等问题使部分开发者望而却步。针对文本分类领域的痛点和难点,PaddleNLP文本分类应用提出了多种前沿解决方案,助力开发者简单高效实现文本分类数据标注、训练、调优、上线,降低文本分类落地技术门槛。
文本分类应用技术特色:
文本分类应用涵盖多分类(multi class)、多标签(multi label)、层次分类(hierarchical)三种场景,接下来我们将以下图的新闻文本分类为例介绍三种分类场景的区别。
多分类🚶: 数据集的标签集含有两个或两个以上的类别,所有输入句子/文本有且只有一个标签。在文本多分类场景中,我们需要预测输入句子/文本最可能来自 n
个标签类别中的哪一个类别。以上图多分类中新闻文本为例,该新闻文本的标签为 娱乐
。快速开启多分类任务参见 👉 多分类指南
多标签👫 : 数据集的标签集含有两个或两个以上的类别,输入句子/文本具有一个或多个标签。在文本多标签任务中,我们需要预测输入句子/文本可能来自 n
个标签类别中的哪几个类别。以上图多标签中新闻文本为例,该新闻文本具有 相机
和 芯片
两个标签。快速开启多标签任务参见 👉 多标签指南 。
层次分类👪 : 数据集的标签集具有多级标签且标签之间具有层级结构关系,输入句子/文本具有一个或多个标签。在文本层次分类任务中,我们需要预测输入句子/文本可能来自于不同级标签类别中的某一个或几个类别。以上图层次分类中新闻文本为例(新闻为根节点),该新闻一级分类标签为 体育
,二级分类标签为 足球
。快速开启层次分类任务参见 👉 层次分类指南 。
【方案选择】对于大多数任务,我们推荐使用预训练模型微调作为首选的文本分类方案,预训练模型微调提供了数据标注-模型训练-模型分析-模型压缩-预测部署全流程,有效减少开发时间,低成本迁移至实际应用场景。
【方案介绍】ERNIE 3.0 轻量级模型不能直接在文本分类任务上使用,预训练模型微调在预训练模型 [CLS]
输出向量后接入线性层作为文本分类器,用具体任务数据进行微调训练文本分类器,使预训练模型”更懂”这个任务。
【方案效果】下表展示在多标签任务CAIL2019—婚姻家庭要素提取数据集中ERNIE 3.0 系列轻量级模型效果评测。
【快速开始】
【方案选择】提示学习(Prompt Learning)适用于标注成本高、标注样本较少的文本分类场景。在小样本场景中,相比于预训练模型微调学习,提示学习能取得更好的效果。对于标注样本充足、标注成本较低的场景,我们仍旧推荐使用充足的标注样本进行文本分类预训练模型微调。
【方案介绍】提示学习的主要思想是将文本分类任务转换为构造提示中掩码 [MASK]
的分类预测任务,也即在掩码 [MASK]
向量后接入线性层分类器预测掩码位置可能的字或词。提示学习使用待预测字的预训练向量来初始化分类器参数(如果待预测的是词,则为词中所有字的预训练向量平均值),充分利用预训练语言模型学习到的特征和标签文本,从而降低样本需求。提示学习同时提供 R-Drop 和 RGL 策略,帮助提升模型效果。
我们以下图情感二分类任务为例来具体介绍提示学习流程,分类任务标签分为 0:负向
和 1:正向
。在文本加入构造提示 我[MASK]喜欢。
,将情感分类任务转化为预测掩码 [MASK]
的待预测字是 不
还是 很
。具体实现方法是在掩码[MASK]
的输出向量后接入线性分类器(二分类),然后用不
和很
的预训练向量来初始化分类器进行训练,分类器预测分类为 0:不
或 1:很
对应原始标签 0:负向
或 1:正向
。而预训练模型微调则是在预训练模型[CLS]
向量接入随机初始化线性分类器进行训练,分类器直接预测分类为 0:负向
或 1:正向
。
【方案效果】我们比较预训练模型微调与提示学习在多分类、多标签、层次分类小样本场景的模型表现(多分类精度为准确率,多标签和层次分类精度为Macro F1值),可以看到在样本较少的情况下,提示学习比预训练模型微调有明显优势。
【快速开始】
更多测评和使用细节详见各场景文档:
【方案选择】基于语义索引的文本分类方案适用于标签类别不固定的场景,对于新增标签类别或新的相关分类任务无需重新训练,模型仍然能获得较好预测效果,方案具有良好的拓展性。
【方案介绍】语义索引目标是从海量候选召回集中快速、准确地召回一批与输入文本语义相关的文本。基于语义索引的文本分类方法具体来说是将标签集作为召回目标集,召回与输入文本语义相似的标签作为文本的标签类别。
【快速开始】
近年来,大量的研究表明在超大规模的语料采用无监督或者弱监督的方式训练模型,模型能够获得语言相关的知识。预训练模型学习到的文本语义表示能够避免从零开始训练模型,同时有利于下游自然语言处理(NLP)任务。预训练模型与具体的文本分类任务的关系可以直观地理解为,预训练模型已经懂得了相关句法、语义的语言知识,用具体任务数据训练使得预训练模型”更懂”这个任务,在预训练过程中学到的知识基础使学习文本分类任务事半功倍。
文本分类应用使用ERNIE 3.0轻量级模型作为预训练模型,ERNIE 3.0 轻量级模型是文心大模型ERNIE 3.0基础上通过在线蒸馏技术得到的轻量级模型。下面是ERNIE 3.0 效果-时延图,ERNIE 3.0 轻量级模型在精度和性能上的综合表现已全面领先于 UER-py、Huawei-Noah 以及 HFL 的中文模型,具体的测评细节可以见ERNIE 3.0 效果和性能测评文档。
有这么一句话在业界广泛流传,"数据决定了机器学习的上限,而模型和算法只是逼近这个上限",可见数据质量的重要性。文本分类应用依托TrustAI可信增强能力和数据增强API开源了模型分析模块,针对标注数据质量不高、训练数据覆盖不足、样本数量少等文本分类常见数据痛点,提供稀疏数据筛选、脏数据清洗、数据增强三种数据优化方案,解决训练数据缺陷问题,用低成本方式获得大幅度的效果提升。
我们采用在多分类、多标签、层次分类场景中评测稀疏数据-数据增强策略和稀疏数据-数据标注策略,下图表明稀疏数据筛选方案在各场景能够有效提高模型表现(多分类精度为准确率,多标签和层次分类精度为Macro F1值)。
我们采用在多分类、多标签、层次分类场景中评测脏数据清洗方案,实验表明方案能够高效筛选出训练集中脏数据,提高模型表现(多分类精度为准确率,多标签和层次分类精度为Macro F1值)。
【快速开始】
更多使用方法和测评细节详见各场景模型分析模块:
文本分类应用提供了简单易用的数据标注-模型训练-模型调优-模型压缩-预测部署全流程方案,我们将以预训练模型微调方案为例介绍文本分类应用的全流程:
1.数据准备阶段
如果没有已标注的数据集,我们推荐doccano数据标注工具进行标注,详见文本分类标注指南。如果已有标注好的本地数据集,我们需要根据不同任务要求将数据集整理为文档要求的格式,详见各分类场景文档。
2.模型训练
数据准备完成后,开始进行预训练模型微调训练。可以根据实际数据调整可配置参数,选择使用GPU或CPU进行模型训练,脚本默认保存在开发集最佳表现模型参数。
训练结束后,使用模型分析(analysis)模块对分析模型表现,同时模型分析(analysis)模块依托TrustAI可信增强能力和数据增强API提供稀疏数据筛选、脏数据清洗、数据增强三种优化方案帮助提升模型效果。
模型训练、调优完成后,可以通过预测脚本加载最佳模型参数,打印模型预测结果。
3.模型部署
模型部署需要将保存的最佳模型参数(动态图参数)导出成静态图参数,用于后续的推理部署。p.s.模型裁剪之后会默认导出静态图模型
文本分类应用提供了离线部署,并且支持在GPU设备使用FP16,在CPU设备使用动态量化的低精度加速推理;同时提供基于Paddle Serving的在线服务化部署,详见各分类场景文档中模型部署介绍。
多分类数据集:
情感分类数据集(多分类):
多标签数据集:
层次分类数据集:
👑 Easy-to-use and powerful NLP library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Documen
Python C++ Cuda Shell Markdown other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》