针对产业级分类场景中任务多样、数据稀缺、标签迁移难度大等挑战,百度提出了一个大一统的通用文本分类技术UTC(Universal Text Classfication)。

UTC在ZeroCLUE和FewCLUE两个榜单上均位居榜首,证明了其优异的零样本和小样本学习能力。飞桨PaddleNLP结合文心大模型中的知识增强NLP大模型文心ERNIE,开源了首个面向通用文本分类的产业级技术方案,仅三行代码即可快速体验多任务文本分类效果,同时提供了端到端的模型训练部署方案,支持复杂场景的产业落地。

图:ZeroCLUE榜单(2023.01.12)

图:FewCLUE榜单(2023.01.12)

榜单介绍

CLUE(Chinese Language Understanding Evaluation)作为中文语言理解权威测评榜单,在学术界和工业界都有着广泛影响。ZeroCLUE和FewCLUE是其设立的中文零/小样本学习测评子榜,旨在探索低资源场景下的最佳模型与实践。自发布以来已经吸引了美团、IDEA研究院、澜舟科技、网易、腾讯微信、阿里云等多家企业和研究院的参与。

通用文本分类技术UTC

随着企业智能化转型的加速,文本分类技术被广泛应用于各行各业的文本处理中,如对话意图识别、金融研报文档分类、票据归档、事件检测等。

分类任务看似简单,然而在产业级文本分类落地实践中,面临着诸多挑战:

  • 任务多样:单标签、多标签、层次标签、大规模标签等不同的文本分类任务,需要开发不同的分类模型,模型架构往往特化于具体任务,难以使用统一形式建模;

  • 数据稀缺:部分领域数据稀缺,难以获取,且领域专业性使得数据标注门槛高;

  • 标签迁移:不同领域的标签多样,并且迁移难度大,尤其不同领域间的标签知识很难迁移。

针对以上难题,百度构建了“任务架构统一、通用能力共享”的通用文本分类技术UTC,其实现了良好的零/少样本迁移性能。UTC是一个大一统诸多任务的开放域分类技术方案,其总体框架如下图所示。

图:UTC总体框架

在详细分享其技术思路之前,先来看看UTC有哪些亮点。

UTC亮点

亮点1:多任务统一建模

在传统技术方案中,针对不同的分类任务需要构建多个分类模型,模型需单独训练且数据和知识不共享。而在UTC方案下,单个模型能解决所有分类需求,包括但不限于单标签分类、多标签分类、层次标签分类、大规模事件标签检测、蕴含推理、语义相似度计算等,降低了开发成本和机器成本。

图:传统方案 vs UTC统一建模方案

亮点2:零样本分类和小样本迁移能力强

UTC通过大规模多任务预训练后,可以适配不同的行业领域,不同的分类标签。例如,在财务报销场景,无需训练数据,即可全部分类正确(图左)。针对稍复杂场景,标注少量数据微调即完成任务适配,例如金融文档分类(图中)和政务服务分类(图右)中,仅标注了几条样本,分类效果就取得大幅提升,大大降低标注门槛和成本。

图:文本分类零样本和小样本效果展示

综合来看,在医疗、金融、法律等领域中,无需训练数据的零样本情况下UTC效果平均可达到70%+(如下表所示),标注少样本也可带来显著的效果提升:每个标签仅仅标注1条样本后,平均提升了10个点!也就是说,即使在某些场景下表现欠佳,人工标几个样本,丢给模型后就会有大幅的效果提升。

图:自建数据集上UTC效果

说明:0-shot表示无训练数据直接预测,1-shot表示每个标签基于1条标注数据进行模型微调。

快速使用UTC

PaddleNLP结合文心ERNIE,基于UTC技术开源了首个面向通用文本分类的产业级技术方案。对于简单任务,通过调用 paddlenlp.Taskflow API ,仅用三行代码即可实现零样本(Zero-shot)通用文本分类,可支持情感分析、意图识别、语义匹配、蕴含推理等各种可转换为分类问题的NLU任务。仅使用一个模型即可同时支持多个任务,便捷高效!

from pprint import pprint
from paddlenlp import Taskflow
# 情感分析
cls = Taskflow("zero_shot_text_classification", schema=["这是一条好评", "这是一条差评"])
cls("房间干净明亮,非常不错")
>>>
[{'predictions': [{'label': '这是一条好评', 'score': 0.9695149765679986}], 'text_a': '房间干净明亮,非常不错'}]# 意图识别
schema = ["病情诊断", "治疗方案", "病因分析", "指标解读", "就医建议", "疾病表述", "后果表述", "注意事项", "功效作用", "医疗费用", "其他"]
pprint(cls("先天性厚甲症去哪里治"))
>>>
[{'predictions': [{'label': '就医建议', 'score': 0.9628814210597645}], 'text_a': '先天性厚甲症去哪里治'}]# 语义相似度
cls = Taskflow("zero_shot_text_classification", schema=["不同", "相同"])
pprint(cls([["怎么查看合同", "从哪里可以看到合同"], ["为什么一直没有电话来确认借款信息", "为何我还款了,今天却接到客服电话通知"]]))
>>>
[{'predictions': [{'label': '相同', 'score': 0.9775065319076257}],'text_a': '怎么查看合同','text_b': '从哪里可以看到合同'},{'predictions': [{'label': '不同', 'score': 0.9918983379165037}],'text_a': '为什么一直没有电话来确认借款信息','text_b': '为何我还款了,今天却接到客服电话通知'}]# 蕴含推理
cls = Taskflow("zero_shot_text_classification", schema=["中立", "蕴含", "矛盾"])
pprint(cls([["一个骑自行车的人正沿着一条城市街道朝一座有时钟的塔走去。", "骑自行车的人正朝钟楼走去。"],["一个留着长发和胡须的怪人,在地铁里穿着一件颜色鲜艳的衬衫。", "这件衬衫是新的。"],["一个穿着绿色衬衫的妈妈和一个穿全黑衣服的男人在跳舞。", "两人都穿着白色裤子。"]]))
>>>
[{'predictions': [{'label': '蕴含', 'score': 0.9944843058584897}], 'text_a': '一个骑自行车的人正沿着一条城市街道朝一座有时钟的塔走去。','text_b': '骑自行车的人正朝钟楼走去。'},{'predictions': [{'label': '中立', 'score': 0.6659998351201399}], 'text_a': '一个留着长发和胡须的怪人,在地铁里穿着一件颜色鲜艳的衬衫。','text_b': '这件衬衫是新的。'},{'predictions': [{'label': '矛盾', 'score': 0.9270557883904931}], 'text_a': '一个穿着绿色衬衫的妈妈和一个穿全黑衣服的男人在跳舞。','text_b': '两人都穿着白色裤子。'}]

对于复杂任务,可以标注少量数据(Few-shot)进行模型训练,以进一步提升模型分类效果。PaddleNLP打通了数据标注-模型训练-模型调优-预测部署全流程,多场景文本分类任务可用单一模型实现,进一步节省模型训练和部署资源,助力高效文本分类产业落地。

  • 了解详情

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/zero_shot_text_classification

UTC技术思路

UTC基于百度最新提出的统一语义匹配框架USM(Unified Semantic Matching)[1],将分类任务统一建模为标签与文本之间的匹配任务,对不同标签的分类任务进行统一建模。具体地说:

(1)为了实现任务架构统一,UTC设计了标签与文本之间的词对连接操作(Label–>CLS-Token Linking),这使得模型能够适应不同领域和任务的标签信息,并按需求进行分类,从而实现了开放域场景下的通用文本分类。

例如,对于事件检测任务,可将一系列事件标签拼接为[L]上映[L]夺冠[L]下架 ,然后与原文本一起作为整体输入到UTC中,UTC将不同标签标识符[L]与[CLS]进行匹配,可对不同标签类型的分类任务统一建模,直接上图:

图:UTC模型架构图

(2)为了实现通用能力共享,让不同领域间的标签知识跨域迁移,UTC构建了统一的异质监督学习方法进行多任务预训练,使不同领域任务具备良好的零/少样本迁移性能。统一的异质监督学习方法主要包括三种不同的监督信号:

  • 直接监督:分类任务直接相关的数据集,如情感分类、新闻分类、意图识别等。

  • 间接监督:分类任务间接相关的数据集,如选项式阅读理解、问题-文章匹配等。

  • 远程监督:标签知识库或层级标题与文本对齐后弱标注数据。

想详细了解UTC的强大能力,可访问:

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/zero_shot_text_classification

商业合作

在开源版本之外,商业版本融合了百度多年的业务落地经验,具有更好的效果和更完善的落地方案:

  • 效果更好:同任务上零/少样本效果会更好,同时包含更多预定义能力。

  • 支持大规模标签:支持千级别以上的大规模标签分类任务。

  • 部署成本更低:单卡GPU可以支持上百个任务同时部署。

  • 预置多种场景:减少产品探索,同时提供定制人力。

如果您对商业合作感兴趣,欢迎通过邮件联系

zhiyan_contact@baidu.com

未来展望 

通过这次ZeroCLUE和FewCLUE的实践,验证了UTC具备良好的零/少样本迁移性能。未来PaddleNLP将进一步提升UTC的零样本能力,做到更大规模场景下的“开箱即用”。

如果我们的开源工作对你有帮助,欢迎STAR支持。

相关地址

  • GitHub地址

https://github.com/PaddlePaddle/PaddleNLP

  • Gitee地址

https://gitee.com/paddlepaddle/PaddleNLP

参考

[1]Universal Information Extraction as Unified Semantic Matching:

https://arxiv.org/pdf/2301.03282.pdf

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~

大一统多任务,UTC通用文本分类模型,刷榜了!简单、易用、高效的UTC通用文本分类技术,解决分类任务难题相关推荐

  1. nmt模型源文本词项序列_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-14 引言 两篇文章与大家分享,第一篇作者对通用文本匹配模型进行探索,研究了构建一个快速优良的文本 ...

  2. antd 文本域超长问题_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-14 引言     两篇文章与大家分享,第一篇作者对通用文本匹配模型进行探索,研究了构建一个快速优 ...

  3. weka使用训练集分类测试集_科学网—使用独立测试集对分类模型进行评估 - 李向东的博文...

    这两天还是纠结于分类模型的准确率.因为对从网上随机摘录的文本进行分类时,结果总是不甚理想,不像使用cross-validation得到的结果那么好. 于是决定使用独立测试集(含1402个实例)进行评估 ...

  4. 情感分类模型介绍CNN、RNN、LSTM、栈式双向LSTM

    情感分类模型介绍CNN.RNN.LSTM.栈式双向LSTM 1.文本卷积神经网络(CNN) 卷积神经网络经常用来处理具有类似网格拓扑结构(grid-like topology)的数据.例如,图像可以视 ...

  5. 关于分类模型评估指标的理解

    准确度.精确率.召回率.F1值作为评估指标,经常用到评估模型的分类效率.准确度评估预测正确的比例,精确率评估预测正例的查准率,召回率评估真实正例的查全率,二分类问题比较好理解,面对多分类问题拆分成多个 ...

  6. bert中文分类模型训练+推理+部署

    文章预览: 0. bert简介 1. bert结构 1. bert中文分类模型训练 1 下载bert项目代码 代码结构 2 下载中文预训练模型 3 制作中文训练数据集 2. bert模型推理 1.te ...

  7. MaixPy K210 目标分类模型在线训练及使用教程

    MaixPy K210 目标分类模型在线训练及使用教程 相关步骤 准备数据集 在线训练 运行模型 相关步骤 本文的资料来自于MaixPy官方文档,更多详细内容可进入MaixPy官方文档进行查询. 官方 ...

  8. 基于蝗虫(蚱蜢)优化算法优化的支持向量机分类模型及其MATLAB实现-附代码

    基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 文章目录 基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 1. 模型 ...

  9. 分类模型(将回归模型的输出离散化)

    对于二分类模型,我们将介绍逻辑回归(logistic regression)和Fisher线性判别分析两种分类算法:对于多分类模型,我们将简单介绍Spss中的多分类线性判别分析和多分类逻辑回归的操作步 ...

  10. 分类模型 · 学习笔记一

    文章目录 分类模型 分类算法一:逻辑回归 一.直接采用线性概率模型是否可行? 二.模型的构建 1. 两点分布(伯努利分布) 2. 那么连接函数 F ( x , β ) F(x,\beta) F(x,β ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验九:视图的定义与使用
  2. 一次深夜优化,MySQL亿级数据分页的奇妙经历
  3. (笔试题)小米Git
  4. 学文科的优势_男生学文科有优势吗?
  5. POJ 2186 Popular Cows(Tarjan)
  6. 使用WMI筛选器管理组策略应用
  7. Eclipse用法和技巧六:自动生成get和set方法1
  8. 微信小程序投诉页面与交互设计
  9. 软件配置 | pip下载第三方库文件及配置pip源的不完全总结
  10. TCP/IP协议第一章笔记
  11. 关于发送邮件附件中文文件名称乱码的问题
  12. Python -- 找出100以内的所有质数
  13. 攻防世界杂项(misc)--新手练习区(详解十二道题完结,附件做题过程中使用到的各种工具和网站)
  14. OpenCV入门系列1:图像组成与OpenCV基本操作函数
  15. 台电U盘“加密大师”制作方法
  16. android Facebook deeplink 坑坑坑
  17. 艾默生流量计选择电极应考虑的因素
  18. 网络教育计算机统考-文字处理操作题
  19. ffmpeg 转换flv压缩大小_简单几步教你怎样使用FFmpeg工具快速的转换FLV视频为MP4格式...
  20. 1.1.1 计算机的四代变化与元件的更新换代

热门文章

  1. 读书笔记2014年第2本:《信息简史》
  2. django分页(两种办法)
  3. K8S学习-高可用集群-多Master节点安装(二)
  4. 论文查重会涉及专利和文献吗?
  5. 根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:
  6. Okio精简高效的IO库
  7. Android搭建ftp服务器/客户端
  8. JAVA中Switch的用法
  9. T-SQL象数组一样处理字符串 Tsql大秘密
  10. k8s的service和endpoint