【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

目录

一、引言 

二、文本分类(text-classification)

2.1 概述

2.2 DistilBERT—BERT 的精简版:更小、更快、更便宜、更轻便

2.3 应用场景​​​​​​​

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

2.4.2 pipeline对象使用参数 ​​​​​​​

2.4.3 pipeline返回参数 ​​​​​​​​​​​​​​

2.5 pipeline实战

2.6 模型排名

三、总结


一、引言 

 pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型

今天介绍NLP自然语言处理的第五篇:文本分类(text-classification),在huggingface库内有6.7万个文本分类(text-classification)模型。

二、文本分类(text-classification)

2.1 概述

文本分类是为给定文本分配标签或类别的任务。一些用例包括情绪分析、自然语言推理和评估语法正确性。

2.2 DistilBERT—BERT 的精简版:更小、更快、更便宜、更轻便

在预训练阶段利用了知识蒸馏,并表明可以将 BERT 模型的大小缩小 40%,同时保留 97% 的语言理解能力并且速度提高 60%。为了利用较大模型在预训练期间学习到的归纳偏差,我们引入了一种结合语言建模、蒸馏和余弦距离损失的三重损失。我们的更小、更快、更轻的模型预训练成本更低,并且我们在概念验证实验和比较设备研究中展示了其在设备上计算的能力。。

2.3 应用场景​​​​​​​

  • 新闻分类:根据新闻内容将其分类为政治、体育、娱乐等类别。
  • 情感分析:判断用户评论或评价的情绪是积极还是消极。
  • 垃圾邮件过滤:区分正常邮件和垃圾邮件。
  • 产品评论分类:根据用户评论将其分类为好评、差评、中性等类别。
  • 自动问答系统:根据问题类型将其分类为具体的领域,如技术支持、订单查询等。
  • 内容过滤:根据文本内容将其分类为适合或不适合某些年龄段或人群。
  • 舆论分析:监测和分析社会媒体上的舆论趋势。

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

  • model(PreTrainedModel或TFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。
  • tokenizer ( PreTrainedTokenizer ) — 管道将使用 tokenizer 来为模型编码数据。此对象继承自 PreTrainedTokenizer。
  • modelcardstrModelCard可选) — 属于此管道模型的模型卡。
  • frameworkstr可选)— 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。
  • taskstr,默认为"")— 管道的任务标识符。
  • num_workersint可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。
  • batch_sizeint可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。
  • args_parser(ArgumentHandler,可选) - 引用负责解析提供的管道参数的对象。
  • deviceint可选,默认为 -1)— CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.devicestr
  • torch_dtypestrtorch.dtype可选) - 直接发送model_kwargs(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16,,torch.bfloat16...或"auto"
  • binary_outputbool可选,默认为False)——标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。
  • return_all_scoresbool可选,默认为False)——是否返回所有预测分数或仅返回预测类别的分数。
  • function_to_applystr可选,默认为"default")— 用于检索分数的模型输出函数。接受四个不同的值:
    • "default":如果模型只有一个标签,则在输出上应用 sigmoid 函数。如果模型有多个标签,则在输出上应用 softmax 函数。
    • "sigmoid":在输出上应用 S 型函数。
    • "softmax":在输出上应用 softmax 函数。
    • "none":不对输出应用任何功能。

2.4.2 pipeline对象使用参数 ​​​​​​​

  • inputsstrList[str]Dict[str],或List[Dict[str]])— 需要分类的一个或多个文本。为了使用文本对进行分类,您可以发送包含{"text", "text_pair"}键的字典或键的列表。
  • top_kint可选,默认为1)— 返回多少个结果。
  • function_to_applystr可选,默认为"default")— 用于检索分数的模型输出函数。接受四个不同的值:

    如果不指定此参数,那么它将根据标签数量应用以下函数:

    • 如果模型只有一个标签,则将在输出上应用 S 型函数。
    • 如果模型有多个标签,将在输出上应用 softmax 函数。

    可能的值包括:

    • "sigmoid":在输出上应用 S 型函数。
    • "softmax":在输出上应用 softmax 函数。
    • "none":不对输出应用任何功能。

2.4.3 pipeline返回参数 ​​​​​​​​​​​​​​

  • labelstr)——预测的标签。
  • scorefloat)——相应的概率。

2.5 pipeline实战

采用pipeline,使用distilbert的distilbert-base-uncased-finetuned-sst-2-english进行文本分类。

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from transformers import pipeline

classifier = pipeline("text-classification", model = "distilbert/distilbert-base-uncased-finetuned-sst-2-english")
output=classifier("happy new year")
print(output)
output=classifier("boring")
print(output)

执行后,自动下载模型文件并进行识别:

2.6 模型排名

在huggingface上,我们将文本分类(text-classification)模型按下载量从高到低排序,总计6.7万个模型,属于hf上应用较多的模型任务。

三、总结

本文对transformers之pipeline的文本分类(text-classification)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用NLP中的文本分类(text-classification)模型。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)​​​​​​​

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)​​​​​​​

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)​​​​​​​

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875873.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索2B法则—趋势反转的高效策略

在之前,我们曾讲过123法则,这是一种基于道氏理论的分析方法,用于确认趋势反转和识别开仓信号。而今日我们就再来聊聊与之相似的2B法则,这是123法则的一种变形,用途和123法则一样,但比之成功率会更高&#x…

白盒测试与黑盒测试

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

GIS在线监测SF6密度微水定量检漏仪传感器专用波纹管免焊接格兰头

SF6密度微水在线监测装置配套M12母头5孔格兰头穿波纹管连接器,该传感器能够监测SF6气体的露点,从而实现对SF6气体在线监测。 原理 SF6露点在线监测传感器是一种可以监测SF6气体露点的传感器它的工作原理是通过吸收SF6气体中的水分子来测量SF6气体的露点。…

k8s 资源管理

文章目录 ResourceQuota什么是资源配额定义一个ResourceQuotaResourceQuota的使用 LimitRangeLimitRange的用途示例1:配置默认的requests和limits示例2:配置requests和limits的范围 QoS什么是服务质量保证示例1:实现QoS为Guaranteed的Pod示例…

git的快速合并fast-forward merge详解

文章目录 1. 什么是快进合并?2. 快进合并的前提条件3. 快进合并的工作原理3.1 示例场景:3.2 使用命令:3.3 快进合并的视觉效果: 4. 快进合并的优点5. 快进合并的缺点6. 快进合并 vs 非快进合并6.1 非快进合并:6.2 非快…

splice用法

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Google推出Data Commons解决AI“幻觉”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

使用LDAP登录GitLab

使用LDAP登录GitLab gitlab.rb 配置如下 gitlab_rails[ldap_enabled] true #gitlab_rails[prevent_ldap_sign_in] false###! **remember to close this block with EOS below** gitlab_rails[ldap_servers] YAML.load <<-EOSmain:label: LDAPhost: 172.16.10.180port:…

C++ | Leetcode C++题解之第398题随机数索引

题目&#xff1a; 题解&#xff1a; class Solution {vector<int> &nums; public:Solution(vector<int> &nums) : nums(nums) {}int pick(int target) {int ans;for (int i 0, cnt 0; i < nums.size(); i) {if (nums[i] target) {cnt; // 第 cnt 次…

c++中的继承和多态

目录 Linux中的管道通信 ​编辑派生类的默认成员函数 继承 派生类的构造 隐藏 如何设计一个不能被继承的类 菱形继承 virtual virtual是如何解决的 内存对象模型 继承和组合 继承 组合 多态 概念 多态的构成条件 虚函数的重写 Linux中的管道通信 派生类的默认成…

ESKF学习笔记

参考资料 https://zhuanlan.zhihu.com/p/441182819 惯性导航(三)-基于流型的ESKF及代码实现_eskf和ekf-CSDN博客 用ESKF实现IMU/GNSS组合导航&#xff08;学习记录&#xff09;_eskf imu-CSDN博客 0.ESKF与KF的区别以及总体流程 0.1卡尔曼滤波过程 卡尔曼滤波的流程按照1…

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…

Leetcode面试经典150题-162.寻找峰值

解法都在代码里&#xff0c;不懂就留言或者私信 想清楚的话会特别简单&#xff0c;你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题&#xff0c;这显然就是让二分嘛而题目给的数组本身是无需&#xff0c;怎么二分呢其实我…

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;它被设计用来提供一对多的消息分发和应用之间的通讯&#xff0c;尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构&…

5.安卓逆向-java面向对象

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;4.安卓逆向-常用数据结构java语言中的集合 之前的内容写了java语言常用的数据结构&#xff08…

海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)

本文已首发于 秋码记录 通过前两篇的实践&#xff0c;我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库&#xff0c;一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而&#xff0c;在这请求量与日俱增的情况下&#xff0c;MariaDB数据库显然是在超负债的工作…

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76&#xff1a;tar命令——快照 & 备份&#xff08;上&#xff09;-CSDN博客 Linux shell编程学习笔记77&#xff1a;tar命令——快照 & 备份&#xff08;下&#xff09;_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…

10万人服务器配置如何选择?10w并发量配置架构

10万并发量的应用如何选择阿里云服务器配置&#xff1f;首先要选择云服务器ECS实例规格&#xff0c;因为是10万并发量需要配置负载均衡&#xff0c;而且还要使用缓存技术&#xff0c;阿里云服务器网aliyunfuwuqi.com从阿里云官网整理的关于阿里云10万并发量服务器配置和案例分享…

哈工大“计算机设计与实践”(cpu)处理器实验设计报告

哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告 【哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告】 在计算机科学领域&#xff0c;CPU&#xff08;中央处理器&#xff09;是计算机系统的核心部件&#xff0c;负责执行指…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果&#xff0c;使得可以进行Fastbin Attack 一、Double Free double free&#xff0c;顾名思义&#xff0c;free两次。对于fastbin这种单链表的组织结构&#xff0c;会形成这样一个效果&#xff1a; 如果我们mallo…