开发者社区> 易相> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 世界那么大,我想去看看。这句话,是什么类别? 一个有多年算法工作经验的萌新将在本文中跟大家一起探索ModelScope的零样本分类模型。 文章主要包含实验环境准备、模型测试、原理分析等内容。
+关注继续查看
福利推荐:阿里云、腾讯云、华为云等大品牌云产品全线2折优惠活动来袭,4核8G云服务器899元/3年,新老用户共享优惠,点击这里立即抢购>>>

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

image.png

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

image.png

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

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

实验环境准备

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

1 本地环境安装

可参考ModelScope环境安装

2 Notebook

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

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

实验测试

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

加载模型

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

from modelscope.pipelines import pipeline
classifier = 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开源模型
ModelScope开源模型
542 0
10wx.showToast消息提示框 wx.showModal模态对话框
10wx.showToast消息提示框 wx.showModal模态对话框
259 0
「LeetCode」104-二叉树的最大深度??
「LeetCode」104-二叉树的最大深度??
205 0
【LeetCode104】二叉树的最大深度
二.算法思想 (1)递归 每个结点的深度=max{左子树深度,右子树深度}+1,左(右)子树的“根结点”也是用这个公式实现,因此可以递归实现。
282 0
【云周刊】第134期:阿里云发布ECS企业级产品家族 19款实例族涵盖173个应用场景
阿里云发布ECS企业级产品家族,19款实例族涵盖173个应用场景 。阿里云发布T级数据压测的终极秘笈,一步步带你探究如何高效使用TensorFlow,程序员真的适合跑步健身吗?...更多精彩技术资讯,尽在云周刊!
6986 0
BGP公网成本节省50%秘笈,共享流量包、共享带宽包,便宜到阿里云快哭了
近日,阿里云推出了共享流量包和共享带宽包,将云上BGP公网使用成本大幅降低,最高可降50%。 共享流量包是BGP流量的预付费套餐,价格比后付费流量更低,并支持闲时流量包,大大降低了BGP流量成本。共享流量包产品覆盖面广,按流量计费的ECS、EIP、SLB和NAT网关都可以使用。
7418 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
纯干货|机器学习中梯度下降法的分类及对比分析
立即下载
纯干货 | 机器学习中梯度下降法的分类及对比分析
立即下载
机器学习中,使用Scikit-Leam简单处理文本数据
立即下载


http://www.vxiaotou.com