世界那么大,我想去看看——探索ModelScope之零样本分类

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 世界那么大,我想去看看。这句话,是什么类别?一个有多年算法工作经验的萌新将在本文中跟大家一起探索ModelScope的零样本分类模型。文章主要包含实验环境准备、模型测试、原理分析等内容。

在开始探索ModelScope上的零样本分类之前,我们先来看看预测结果:

image.png

它竟然知道我想去旅游?难道这个样本已经被训练过了?我们再来试试,你能知道我啥心情吗?

image.png

难道这样本也被训练过了?不可能吧。

接下来,让我们一起探索一下ModelScope的零样本分类。

实验环境准备

依据ModelScope的介绍,实验环境可分为两种情况。笔者在此推荐使用第2种方式,点开就能用,省去本地安装环境的麻烦,直接体验ModelScope。

1 本地环境安装

可参考ModelScope环境安装

2 Notebook

ModelScope直接集成了线上开发环境,用户可以直接在线训练、调用模型。

打开零样本分类模型,点击右上角“在Notebook中打开”,选择机器型号后,即可进入线上开发环境。

实验测试

进入Notebook或本地安装好开发环境后,开始我们的零样本分类之旅吧。

加载模型

使用以下两行命令即可进行零样本分类的模型加载。

frommodelscope.pipelinesimportpipelineclassifier=pipeline('zero-shot-classification', 'damo/nlp_structbert_zero-shot-classification_chinese-base')

运行后,ModelScope自动将指定的模型下载至缓存目录中。此处不得不说,依托于阿里云的ModelScope的模型下载速度令人十分舒畅。

设置标签

与一般的文本分类模型不同,零样本分类模型可以自己设定对应的标签,模型将根据给定的标签进行分类。此处我们先将文本标签设置如下。

labels= ['家居', '旅游', '科技', '军事', '游戏', '故事']

进行分类

接着,输入文本进行分类。这里输入的文本当然是“世界那么大,我想去看看”了!

sentence='世界那么大,我想去看看'classifier(sentence, candidate_labels=labels)

最后,我们得到了以下结果:

image.png

按照这返回格式判断,labels是我们设定的标签,scores则是每个标签的概率分布。从返回的结果中,可以发现样本属于旅游的概率远大于其他类别。

多标签分类

在上述分类中,我们还有一个参数没有用到,即multi_label。从零样本分类模型的介绍中可以发现,这个参数是用于设置分类任务是否为多标签分类的。接着,我们也来尝试一下多标签分类任务。

首先,设置标签如下:

labels= ["不开心", "不高心", "高兴", "开心"]

接着,输入文本进行分类,并设置multi_label=True。

sentence='世界那么大,我想去看看'result=classifier(sentence, candidate_labels=labels, multi_label=True)

最后我们得到了以下结果。

image.png
其中scores代表的是每个标签的概率,预测结果可以认为是开心和高兴,因他们的概率大于0.5。

原理分析

体验完零样本分类的神奇之后,我们来分析分析它的工作原理。

零样本分类模型介绍中有提到,这是一个基于自然语言推理任务实现的零样本分类模型。因此,我们先来看看什么是自然语言推理任务。

自然语言推理

自然语言推理主要是判断两个句子(前提和假设,Premise and Hypothesis)之间的语义关系,一般定义有(Entailment, Contradiction, Neutral)三个类别,可以当成是一个三分类任务。下面举了3个例子让大家切实感受一下自然语言推理任务。

自然语言推理举例
前提:中间坐着的修鞋匠,就是张永红的父亲
假设:修鞋匠是女的
语义关系:Contradiction(矛盾)
解释:张永红的父亲,当然是男的!
前提:中间坐着的修鞋匠,就是张永红的父亲
假设:修鞋匠是男的
语义关系:Entailment(蕴含)
解释:张永红的父亲是男的,所以前提句子中已经包含了假设句的语义。
前提:中间坐着的修鞋匠,就是张永红的父亲
假设:张永红是男的
语义关系:Neutral(中立)
解释:前提和假设并没有关系。

零样本分类

那么如何基于自然语言推理进行零样本分类任务呢?

通过研读模型零样本分类模型中给出的论文,再结合对ModelScope源码的调试,我们可以发现,答案其实很简单。只要依次将每个的标签当成假设,输入的文本当成前提,进行自然语言推理任务之后,再对所有标签的预测结果进行处理,即可实现零样本分类。

设置三个标签:家居,旅游,科技
输入文本:世界那么大,我想去看看
对以上输入进行零样本分类的时候,将生成以下三个自然语言推理任务的样本:
1. 前提:世界那么大,我想去看看,假设:家居
2. 前提:世界那么大,我想去看看,假设:旅游
3. 前提:世界那么大,我想去看看,假设:科技

对三个样本进行自然语言推理的预测之后,最后将预测结果进行整合,即可实现零样本分类任务。例如多分类任务中,可以将“前提句”蕴含“假设句”概率最大的那个假设作为最后的标签。

写在最后

今天初步探索了ModelScope开源社区,整体体验非常顺畅。集成notebook的开发方式十分便捷,排除了开发环境安装的困扰,非常适合深度学习开发者直接对各类模型进行学习研究。另外,ModelScope上的模型种类十分丰富,大家也可以多多尝试学习,毕竟现在CPU机器免费使用~image.png

目录
相关文章
|
机器学习/深度学习 人工智能 弹性计算
【ModelScope测评】实现对视频上传的自动化分类
对不起,我是开发小白,纯纯新手OvO
21743 6
【ModelScope测评】实现对视频上传的自动化分类
|
机器学习/深度学习 JSON 达摩院
[使用ModelScope]只要5分钟,快速实现中文情感分类模型
本文介绍基于ModelScope,快速实现一个中文情感分类模型,只需不到5分钟,即可获得工业级优异表现的深度学习模型。
[使用ModelScope]只要5分钟,快速实现中文情感分类模型
|
29天前
|
API 语音技术
ModelScope-FunASR**有支持热词又支持时间戳的模型**。
【2月更文挑战第30天】ModelScope-FunASR**有支持热词又支持时间戳的模型**。
22 2
|
1月前
|
人工智能 API 决策智能
Modelscope结合α-UMi:基于Modelscope的多模型协作Agent
基于单个开源小模型的工具调用Agent,由于模型容量和预训练能力获取的限制,无法在推理和规划、工具调用、回复生成等任务上同时获得比肩大模型等性能。
|
2月前
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
176 3
|
2月前
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
68 0
|
1月前
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
|
2月前
|
人工智能 自然语言处理 搜索推荐
魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
【2月更文挑战第9天】魔搭ModelScope社区作为一个AI模型开源平台,提供了丰富的模型资源和便捷的服务
132 3
|
2月前
|
API
使用ModelScope平台进行模型验证时
【2月更文挑战第9天】使用ModelScope平台进行模型验证时
57 4
|
1月前
modelscope-funasr怎么拿验证集评估微调后的模型效果呢
【2月更文挑战第19天】modelscope-funasr怎么拿验证集评估微调后的模型效果呢
22 1