查看原文
其他

PaddleNLP开源UTC通用文本分类技术,斩获ZeroCLUE、FewCLUE双榜第一

飞桨 百度AI 2023-03-16


 概述 


针对产业级分类场景中任务多样、数据稀缺、标签迁移难度大等挑战,百度提出了一个大一统的通用文本分类技术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(Universal Text Classfication),其实现了良好的零/少样本迁移性能。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 pprintfrom 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


也欢迎加入 PaddleNLP 官方技术交流群,探讨零样本、小样本前沿方案,交流 UTC 通用文本分类方案的详细技术思路与业务落地经验。



 商业合作 


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


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


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


  • 部署成本更低:单卡 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



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存