📖前言
随着AI开发的到来,新时代程序员已经开始逐步拥抱AI,使用Vibe Coding的理念进行开发了,这象征着我们已经涉足了AI的应用阶段了,但是作为AI的使用者,我个人认为我们也应该懂得一些AI背后的原理,本文就来讲讲AI的筑石之一--机器学习,我准备使用魔塔社区---阿里巴巴达摩院推出的开源AI共享平台,来演示nlp的情感分析功能,作为学习的初体验。
🧠模型库
在注册好魔塔的账号后,咱们进入模型库。
❓模型库是什么?
模型库就像是一个存放各种模型的 “仓库”。
在这个 “仓库” 里,有很多不同类型的模型,比如在深度学习领域,有用于图像识别的模型,像能识别出图片里是猫还是狗的模型;有用于自然语言处理的模型,比如可以把一种语言翻译成另一种语言的翻译模型,或者能生成文章、回答问题的对话模型;还有用于语音处理的模型,能把语音转换成文字,或者把文字合成为语音,还包括我们今天要体验的“情感分析”模型。
⚙️模型库的功能
模型库可以对这些模型进行集中管理。它会记录每个模型的相关信息,比如模型的名称、功能、适用场景、版本号等,就像仓库里给每个物品都贴上了标签,方便人们查找和使用。而且,模型库还能管理模型的版本,当模型被改进或更新后,新的版本会被保存下来,人们可以根据自己的需求选择使用哪个版本,并对模型的公开范围进行设置,比如设置为公开模型让所有人都能访问,或者设置为私有模型只有自己或特定成员能访问。
🎨自定义模型库
魔塔的模型库还支持自定义,通过魔塔社区的 ModelScope Library,开发者能够方便地进行模型的定制,以更好地满足各种特定需求。例如,在一些低资源场景下的文本分类任务中,开发者就可以利用社区的开源模型,根据自身业务需求进行定制化开发,实现工单分类等功能
🔧python notebook
选择了模型库后,咱们就可以免费安装实例,使用Python Notebook进行开发
Python Notebook 是一种 交互式编程环境,允许你将 代码、文本说明、数据可视化、公式 等内容整合在一个文档中,边写代码边调试和展示结果。它就像一个 “电子笔记本”,特别适合 数据分析、机器学习、教学演示、报告撰写 等场景。等下我们就会进行演示,你会看到他的神奇功能!
你会发现创建的文件的后缀名是以.ipynb后缀结尾的,这里其实是Jupyter Notebook的专属文件格式,“ipython” 是早期 Jupyter 的前身(没错,它以前叫 IPython Notebook),而 “nb” 则是 “notebook” 的缩写,合起来就是这个萌萌的后缀啦~
让我们来输出试试!只需要print('Hello Python'),再点击左边的按钮,即可输出内容啦!
🚀初始化
你会发现我这里是随便选了一个通义万象的模型库,貌似这个模型库是对图片处理相关的模型库,那么我该如何实现呢我们的情绪分析呢,没关系,接下来我要介绍的Pipeline能帮我们解决!
Pipeline是什么
Pipeline(管道) 是一种将多个数据处理或机器学习步骤 按顺序串联起来 的机制,就像工厂里的流水线一样,数据从起点进入,经过一系列预设的处理环节,最终输出结果。它的核心目的是 简化流程管理、避免代码重复,并确保整个流程的 可重复性和一致性。
导入Pipeline机制
# 导入pipeline
from modelscope.pipelines import pipeline
导入 ModelScope 的 pipeline 函数,刚才提到过,它是一个高阶封装工具,可以将多个机器学习步骤(如数据预处理、模型推理、后处理)串联成一个可直接调用的 “管道”。
导入任务类型
from modelscope.utils.constant import Tasks
接着我们导入导入 Tasks 命名空间,它包含了 ModelScope 支持的所有任务类型常量(如文本分类、情感分析、图像生成等),后续咱们在创建 Pipeline 时,需要通过 Tasks 指定具体任务,
🛠️Pipe的使用
好了,接下来就到了我们最关键的一步了。
emantic_cls = pipeline(Tasks.text_classification, 'damo/nlp_structbert_sentiment-classification_chinese-base')
让我们来逐个介绍这行代码里的内容。
首先,我们的pipeline需要参数,传入参数”任务类型“与”模型“后可以得到一个emantic_cls这样的可调用对象实例。让我们来介绍下这两个参数!
- 任务类型指定:
第一个参数
Tasks.text_classification是用来指定任务类型的,首先Task是一个枚举类,它定义了多种任务类型:包括text_classification(文本分类)、sentiment_analysis(情感分析)、named_entity_recognition(命名实体识别)等,而我们的目的是体验情感分析功能,而情感分析本质上是上述文本分类的一种,所以咱们就需要使用这个Tasks.text_classification作为参数传入。
-
模型选择: 我们的pipeline传入的第二个参数是amo/nlp_structbert_sentiment-classification_chinese-base ,它的的作用是 指定用于情感分析的具体预训练模型,这个参数的内容结构如下:
-
damo:模型的开发者 / 组织(这里是阿里巴巴达摩院)。 -
nlp:领域标识(自然语言处理)。 -
structbert:模型架构(基于 StructBERT,一种增强语义理解的 Transformer 变体)。 -
sentiment-classification:任务类型(情感分类)。 -
chinese-base:语言(中文)和模型规模(base 表示中等规模)。
当第一个参数Task.text_classification定义了要做什么时,这里的damo/...则是决定了如何做(具体该使用哪个预训练模型实现该任务)。
在这个过程中,我们可以想象我们在组装一台咖啡机:其中
Tasks.text_classification是 “咖啡机的功能模式”(指定要做浓缩咖啡还是卡布奇诺)。-damo/nlp_structbert_sentiment-classification_chinese-base是 “咖啡豆”(提供具体的风味)。pipeline()函数是 “咖啡机”,负责将咖啡豆磨粉、冲泡,并输出成品咖啡最终得到的semantic_cls就是一台调好参数的咖啡机,你只需倒入水(输入文本),就能得到咖啡(情感分析结果)。
❤️情感分析的体验
好了,经历了千辛万苦,咱们终于能正式开始体验情感分析的功能了
我们可以像这样,传入一句内容,我们的semantic_cls就会像函数一样,返回一个result呢,分析这个结果我们能发现,它会返回一个包含两个键值对的字典,其中:
1. labels(情感标签)
-
含义:模型识别出的所有可能情感类别。
-
示例:
['负面', '正面']表示模型支持两种情感分类(消极和积极)。- 若模型支持多分类(如消极 / 中性 / 积极),可能返回
['负面', '中性', '正面']。
2. scores(置信度分数)
-
含义:模型对每个情感类别的预测概率,取值范围为
[0, 1],分数越高表示可能性越大。 -
对应关系:
-
scores中的每个元素与labels中的标签按顺序一一对应。 -
例如:
0.8282对应'负面',表示文本为负面情感的概率约为 82.82% 。0.1718对应'正面',表示文本为正面情感的概率约为 17.18% 。
-
哈哈,很有趣吧,咱们平常说的任何一句话,在自然语言处理中,都可以被处理成情感的具体数据,这个情感分析的功能是自然语言处理的核心应用之一呀!有了它以后,在很多场景,比如:用户评论分析、产品口碑监测、政治与社会的舆论分析等都有许许多多的应用!
🎯总结
通过魔塔社区(ModelScope)体验机器学习的情感分析功能,我们得以窥见 AI 技术在自然语言处理领域的实际应用逻辑与价值之一。我们体验了选择了模型库并且创建实例之后,就可以开始使用Pipeline这个好用的封装工具进行初始化一个情绪分析的函数调用的实例啦!之后咱们就可以像调用函数一样使用,你也快去试试吧!
🌇结尾
感谢你看到最后,最后再说两点~
①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
我是3Katrina,一个热爱编程的大三学生
(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)
作者:3Katrina
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。