【NLP】如何使用Hugging-Face-Pipelines?

news2024/10/6 18:27:41

一、说明

        随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。Hugging Face 是一个平台,可为 NLP 任务(如文本分类、情感分析等)提供预先训练的语言模型。

        本博客将引导您了解如何使用拥抱面部管道执行 NLP 任务。以下是我们将在此博客中讨论的主题。

  • 什么是自然语言处理?
  • 什么是变形金刚?
  • 使用变形金刚执行各种 NLP 任务。

我们将介绍的 NLP 任务是文本分类、命名实体识别、问答和文本生成。

让我们潜入!

二、什么是自然语言处理?

        NLP是人工智能的一个子领域,允许计算机解释,操纵和理解人类语言。NLP 任务的目标是分析文本和语音数据,如电子邮件、社交媒体新闻源、视频、音频等。使用 NLP 技术,您可以处理各种任务,例如文本分类、生成文本内容、从文本中提取答案等。

        NLP不仅仅处理书面文本。它还克服了语音识别和计算机视觉中的复杂挑战,例如创建声音样本的成绩单或图像的描述。

        很酷,我们在本节中了解了 NLP 是什么。让我们继续看看变形金刚库是什么。

三、什么是transformer库?

        Transformers 是一个库,提供 API 和工具,可轻松下载和训练最先进的预训练模型。

        你可能会问什么是预训练模型。让我解释一下。预训练模型实际上是一个保存的预训练网络,该网络以前在大型数据集上训练过。使用预先训练的模型,可以节省从头开始训练模型所需的时间和资源。

        很好,我们看了变形金刚库是什么。让我们执行一些任务来展示如何使用这个库。

3.1 transformer应用

        变压器具有处理各种NLP任务的强大功能。处理 NLP 任务的最简单方法是使用该函数。它将模型与其必要的预处理和后处理步骤连接起来。这允许您直接输入任何文本并获得答案。pipeline

        要使用变压器,您需要使用以下命令安装它:

pip install -q transformers

        为了展示如何使用该功能,让我们从转换器导入它。pipeline

from transformers import pipeline

        很酷,我们现在可以使用这个对象执行 NLP 任务。让我们从情绪分析开始。

3.2 情绪分析

        情绪分析是最常用的NLP任务之一。它是检测文本中积极或消极情绪的过程。为了演示如何执行此任务,让我们创建一个文本。

text = "This movie is beautiful. I would like to watch this movie again."

        太棒了,我们现在有一条短信。让我们找出这段文字的情绪。为此,首先,我们通过调用管道函数来实例化管道。接下来,我们给出我们感兴趣的任务的名称。

classifier = pipeline("sentiment-analysis")

        很好,我们已经准备好使用此对象分析我们的文本。

classifier(text)

# Output:
[{'label': 'POSITIVE', 'score': 0.9998679161071777}]

        如您所见,我们的管道预测了标签并显示了分数。标签为正,得分为 0.99。事实证明,模型非常有信心文本具有积极的情绪。太好了,我们已经完成了情绪分析。这很简单,对吧?

        让我们退后一步,想想发生了什么。此管道首先选择了一个预训练模型,该模型已针对情绪分析进行了微调。接下来,在创建分类器对象时,下载模型。请注意,将某些文本传递到管道时,会将文本预处理为模型可以理解的格式。

        在此分析中,我们使用管道进行情绪分析。您还可以将其用于其他任务。最近开发的一些管道是情绪分析;我们刚刚学会了如何执行这个管道、摘要、命名实体识别、问答、文本生成、翻译、特征提取、零镜头分类等。让我们来看看其中的一些。我们现在要讨论的管道是零命中分类。

3.3 零镜头分类

        假设您要对未标记的文本进行分类。这就是零镜头分类管道的用武之地。它可以帮助您标记文本。因此,您不必依赖预训练模型的标签。让我们看一下如何使用这个管道。首先,我们将通过调用管道函数进行实例化。

classifier = pipeline("zero-shot-classification")

        现在让我们创建一个要分类的文本。

text = "This is a tutorial about Hugging Face."

        让我们定义候选标签。

candidate_labels = ["tech", "education", "business"]

        很酷,我们创建了文本和标签。现在,让我们预测一下这句话的标签。为此,我们将使用分类器对象。

classifier(text, candidate_labels)

# Output:
{'sequence': 'This is a tutorial about Hugging Face',
 'labels': ['education', 'tech', 'business'],
 'scores': [0.8693577647209167, 0.11372026801109314, 0.016921941190958023]}

如您所见,文本是关于教育的。在这里,我们没有根据数据微调模型。我们的管道直接返回概率分数。这就是为什么这个管道被称为零镜头。让我们继续看一下文本生成任务。

3.4 文本生成

        像 ChatGPT 这样的工具非常适合生成文本,但有时您可能希望生成有关主题的文本。文本生成的目标是生成有意义的句子。我们的模型会收到提示并自动完成它。让我们看看如何执行管道。首先,我们使用文本生成来实例化管道。

generator = pipeline("text-generation")

        让我们继续创建一个提示。

prompt= "This tutorial will walk you through how to"

        现在,让我们将此提示传递给我们的对象。

generator(prompt)

# Output:
[{'generated_text': 'This tutorial will walk you through how to setup a Python script to automatically find your favourite website using Python and JavaScript so you can build a web site that'}]

        如您所见,根据我们的句子生成了一个文本。请注意,此文本是随机生成的。因此,如果您没有获得与此处相同的结果,这是正常的。

        在此示例中,我们使用了默认模型。您还可以从中心选择特定型号。要为您的任务找到合适的模型,请转到模型中心并单击左侧的相应标签。

模特在拥抱脸

        在这里,您可以看到任务支持的模型。很酷,让我们尝试一个模型。首先,我们将创建一个管道。让我们将任务和模型名称传递给它。

generator = pipeline("text-generation", model="distilgpt2")

        很酷,我们实例化了一个对象。让我们使用前面的提示创建一个最大长度为 30 的文本。

generator(prompt, max_length = 30)

        如您所见,使用我们确定的模型创建了一个文本。让我们继续看一下命名实体识别任务。

3.5 命名实体识别 (NER)

        NER是最受欢迎的数据预处理任务之一。在 NLP 中,产品、地点和人员等现实世界的对象称为命名实体,从文本中提取它们称为命名实体识别。让我们通过一个示例来展示此任务是如何完成的。首先,让我们从管道创建一个对象。

ner = pipeline("ner", grouped_entities=True)

在这里,我们通过了将句子的各个部分重新组合在一起。例如,我们希望将“Google”和“Cloud”分组为一个组织。现在让我们创建一个例句。grouped_entities=True


"text = My name is Tirendaz and I love working with Hugging Face for my NLP task."

现在,让我们将此文本传递给我们的对象。

ner(text)

# Output:
[{'entity_group': 'PER',
  'score': 0.99843466,
  'word': 'Tirendaz',
  'start': 11,
  'end': 19},
 {'entity_group': 'ORG',
  'score': 0.870751,
  'word': 'Google Cloud',
  'start': 31,
  'end': 43},
 {'entity_group': 'LOC',
  'score': 0.99855834,
  'word': 'Berlin',
  'start': 47,
  'end': 53}]

如您所见,我们的模型正确识别了文本中的实体。很好,让我们继续问答任务。

3.6 生成问答系统

        在问答中,我们给模型一段称为上下文的文本和一个问题。模型根据文本回答问题。让我们用一个例子来说明这一点。首先,让我们从问答管道创建一个对象。

question_answerer = pipeline("question-answering")

        现在让我们使用这个对象。

question_answerer(
 question="Where do I live?",
 context="My name is Tirendaz and I live in Berlin",)

# Output: 
{'score': 0.7006925940513611, 'start': 31, 'end': 43, 'answer': 'Google Cloud'}

        如您所见,我们的管道从上下文中提取了信息。很酷,我们学会了如何使用管道执行各种 NLP 任务。您还可以将管道用于其他任务,例如摘要和翻译。

你可以在这里找到我在这个博客中使用的笔记本。

四、总结

        变形金刚是拥抱脸中的一个库,提供API和工具。您可以使用此库执行 NLP 任务。最简单的方法是使用拥抱面孔管道。管道提供了一个易于使用的 API,可将模型与其必要的预处理和后处理步骤连接起来。因此,您可以使用管道对象轻松执行各种 NLP 任务。

     

参考资源

  • 拥抱脸

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不写代码开启Restful服务

1 前言 很久没有写文章了,不管什么原因,总觉得心里还是觉得有点焦虑,不看看书写点东西就有莫名的焦虑,仿佛只有忙起来才能忘记焦虑。虽然我也知道更重要的是思考方向,但是就像走路,不出发随着时间的流逝&am…

MacBook外接键盘修改键位

众所周知,MacBook的键盘和Windows差别很大,比如我们最常用的ctrlcv在Mac下是commandcv…而外接键盘往往是Windows布局,因此如何修改外接键盘键位就是一件很重要的事情! 首先,我们要知道Win键在Mac系统中是多余的&…

微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)

《微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)》 《微服务一 实用篇 - 5.分布式搜索…

mysql悲观锁与乐观锁、死锁

mysql悲观锁与乐观锁、死锁 乐观锁的缺点 这个策略源于 mysql 的 mvcc 机制,使用这个策略其实本身没有什么问题,主要的问题就是**对数据表侵入较大,我们要为每个表设计一个版本号字段,然后写一条判断 sql 每次进行判断&#xff…

k8s Service网络详解(一)

有关K8s网络的几个概念 Service:服务 Endpoint:端点 Ingress:和Service类似,基于OSI(Open System Interconnection)网络模型的七层协议数据(如HTTP)的转发 Kube Proxy&#xff1…

155、基于STM32单片机老人防跌倒摔倒GSM短信报警系统ADXL345加速度设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 单片机主芯片选…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

🎬 鸽芷咕:个人主页 🔥 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针运算💭 指针-整数💭 指针-指针💭 指针…

类和对象(中)--运算符重载

目录 1.运算符重载①运算符重载的概念②日期类和运算符重载 2.赋值运算符重载3. 流插入运算符<<重载4.Date类实现5.const成员6.取地址及const取地址操作符重载 1.运算符重载 大家有没有想过内置类型可以使用的运算符是否自定义类型的成员变量也可以使用呢&#xff1f; …

pyqt5-多行文本区QTextEdit实现鼠标滚轮调整文本大小

核心 在 PyQt5 中&#xff0c;你可以通过处理鼠标滚轮事件来设置 QTextEdit 的字体大小。具体做法是在 QTextEdit 上重新实现 wheelEvent 方法&#xff0c;并根据滚轮方向调整字体大小。 代码 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5…

MATLAB 最小二乘法拟合直线点云 方法一 (26)

MATLAB 最小二乘法拟合直线点云 方法一 (26) 一、算法简介二、算法实现1.代码(详细注释)2.结果展示2.1 拟合效果可视化2.2 对比拟合系数与实际值一、算法简介 提供一组点云(x1 y1 )(x2 y2 )(x3 y3 )…等等多个点… 算法自动拟合直线方程 二维点云的直线方程为:y=kx+…

Mac 预览(Preview)丢失PDF标注恢复

感谢https://blog.csdn.net/yaoyao_chen/article/details/127462497的推荐&#xff01; 辛苦用预览在pdf上做的阅读标记&#xff0c;关闭后打开全丢失了&#xff0c;推荐尝试下网站导入文件进行恢复&#xff1a; 直接使用该网页应用PDF Annotation Recovery 或者访问该项目&a…

在 Windows 中通过 WSL 2 高效使用 Docker

大家好&#xff0c;我是比特桃。平时开发中&#xff0c;不免会使用一些容器来跑中间件。而开发者使用的操作系统&#xff0c;大多是Mac OS 、Windows。Docker 为了兼顾这两个平台的用户&#xff0c;推出了 Docker Desktop 应用。Docker Desktop 中的内核还是采用了 Linux 的内核…

swift简单弹幕例子,仿哔哩哔哩

先看例子 每个弹幕的速度都是不一样的&#xff0c;支持弹幕整体开始暂停。 如果弹幕实在是太多了&#xff0c;有个缓冲队列&#xff0c;不停的重试能否显示&#xff0c;保证文字都能显示全&#xff0c;并且每条都能显示。 实现是基于 CADisplayLink 实现的&#xff0c;如此来…

mac使用教程【快速从windows切换为mac,mac快捷键合集】

mac使用教程 1. 安装brew并通过brew安装git 1.1 安装brew 打开终端输入如下命令&#xff1a; % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"选择对应的镜像进行安装 # 例如&#xff1a;输入5&#xff…

了解 3DS MAX 3D摄像机跟踪设置:第 5部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建陨石坑 步骤 1 启动 3ds Max 和 打开本教程最后一部分中保存的文件。 启动 3ds Max 步骤 2 删除所有占位符 从头开始创建陨石坑。 删除所有占位符 步骤 3 创建具有“长度”的平面 段和宽度段各…

如何创建vue2,vue3项目

前提需安装node.js和Vue CLI node.js:https://nodejs.org/zh-cn Vue CLI&#xff1a; npm install -g vue/cli 如何创建一个vue2项目 &#xff08;1&#xff09; 使用cmd终端直接创建 进入到vue项目所创建的目录里&#xff08;我是直接创建在桌面上&#xff09; 选择vue2 …

【mysql】聚簇索引和非聚簇索引(B树和B+树)

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: mysql 目录 一、索引分类 二、索引的数据结构 2.1 B树&#xff1a;改造二叉树 2.2 B树&#xff1a;改造B树 三、Mysql索引实现—InnoDB引擎 3.1 主键索引&#xff08;聚簇索引&#xff09; 3.2 …

如何利用plotly和geopandas根据美国邮政编码(Zip-Code)绘制美国地图

对于我自己来说&#xff0c;该需求源自于分析Movielens-1m数据集的用户数据&#xff1a; UserID::Gender::Age::Occupation::Zip-code 1::F::1::10::48067 2::M::56::16::70072 3::M::25::15::55117 4::M::45::7::02460 5::M::25::20::55455 6::F::50::9::55117我希望根据Zip-…

Python读写csv文件

简介 通过Python内置csv模块&#xff0c;可以读取和写入CSV&#xff08;逗号分隔值&#xff09;文件。 CSV是一种常见的文件格式&#xff0c;通常用于存储表格数据&#xff0c;每行数据由逗号分隔&#xff0c;每个字段可以用引号括起来。 测试文件内容如下 列号,年龄,姓名,性别…

香橙派Zero2安装wiringPi外设库

安装wiringOP库 直接在香橙派上下载 wiringOP 的代码 sudo apt update sudo apt install -y git git clone https://github.com/orangepi-xunlong/wiringOP 如果在香橙派上下载不下来&#xff0c;也可以在通过windows浏览器打开https://github.com/orangepi-xunlong/wiringOP …