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

一、说明

        随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。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 任务。

     

参考资源

  • 拥抱脸

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

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

相关文章

华为eNSP:isis的配置

一、拓扑图 二、路由器的配置 配置接口IP AR1&#xff1a; <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthe…

测等保2.0——安全区域边界

一、前言 今天我们来说说安全区域边界&#xff0c;顾名思义&#xff0c;安全区域边界就是保障网络边界处&#xff0c;包括网络对外界的边界和内部划分不同区域的交界处&#xff0c;我们的重点就是查看这些边界处是否部署必要的安全设备&#xff0c;包括防火墙、网闸、网关等安…

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…

Android 之 动画合集之帧动画

本节引言&#xff1a; 从本节开始我们来探究Android中的动画&#xff0c;毕竟在APP中添加上一些动画&#xff0c;会让我们的应用变得 很炫&#xff0c;比如最简单的关开Activity&#xff0c;当然自定义控件动画肯定必不可少啦~而Android中的动画 分为三大类&#xff0c;逐帧动画…

mac电脑强大的解压缩软件BetterZip 5.3.4 for Mac中文版及betterzip怎么压缩

BetterZip 5.3.4 for Mac 是Mac系统平台上一款功能强大的文件解压缩软件&#xff0c;不必解压就能快速地检查压缩文档。它能执行文件之间的合并并提供密码。使用它&#xff0c;用户可以更快捷的向压缩文件中添加和删除文件。它支持包括zip、gz、bz、bz2、tar、tgz、tbz、rar、7…

6_回归算法 —欠拟合、过拟合原因及解决方法

文章目录 一、过拟合与欠拟合1 过拟合1.1 线性回归的过拟合1.2 过拟合和正则项1.2.1 带有L2正则化的线性回归—Ridge回归1.2.2 带有L1正则化的线性回归—LASSO回归1.2.3 Ridge&#xff08;L2-norm&#xff09;和LASSO&#xff08;L1-norm&#xff09;比较1.2.4 Elasitc Net 2 欠…

关于封装的定义?以及API接口封装作用有哪些

封装是面向对象编程中的一个重要概念&#xff0c;它指的是将数据和程序代码包含在类中&#xff0c;并对外部对象隐藏其内部实现细节&#xff0c;只提供公共接口。这种方式可以有效地保护数据&#xff0c;防止被外部对象随意访问或修改&#xff0c;同时也更容易维护、升级和复用…

7.25 作业 QT

手动实现登录框&#xff1a; widget.cpp: #include "widget.h" #include <QMovie> Widget::Widget(QWidget *parent): QWidget(parent) {//设置尺寸this->resize(800,600); //设置宽高//设置固定尺寸this->setFixedSize(800,600);//窗口标题操作qDebu…

SpringBoot登陆+6套前端主页-【JSB项目实战】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具&#xff1a;上效果图主页登陆 配置文件设置导数据库项目目录如图&#xff1a;代码部分&#xff1a;控制器过滤器详细的解…

使用网络 IP 扫描程序的原因

随着网络不断扩展以满足业务需求&#xff0c;高级 IP 扫描已成为网络管理员确保网络可用性和性能的关键任务。在大型网络中扫描 IP 地址可能具有挑战性&#xff0c;这些网络通常包括具有动态 IP、多个 DNS、DHCP 配置和复杂子网的有线和无线设备。使用可提供全面 IP 地址管理 &…

TypeScript -- 函数

文章目录 TypeScript -- 函数JS -- 函数的两种表现形式函数声明函数的表达式es6 箭头函数 TS -- 定义一个函数TS -- 函数声明使用接口(定义)ts 定义参数可选参数写法 -- ?的使用TS函数 -- 设置剩余参数函数重载 TypeScript – 函数 JS – 函数的两种表现形式 我们熟知js有两…

3.1flex布局

参考链接 MDN 核心组成 容器 容器指定元素item的布局方式 元素 元素自定义自身的宽度大小

随手笔记——3D−2D:PnP

随手笔记——3D−2D&#xff1a;PnP 说明理论源代码雅可比矩阵求解 说明 PnP&#xff08;Perspective-n-Point&#xff09;是求解3D到2D点对运动的方法。它描述了当知道n个3D空间点及其投影位置时&#xff0c;如何估计相机的位姿。 理论 特征点的3D位置可以由三角化或者RGB-…

记一次杀猪盘的渗透之旅

所谓“杀猪盘”&#xff0c;是指诈骗分子利用网络交友通常是“异性”交友&#xff0c;诱导受害人下载诈骗APP并在上面进行各种“投资”&#xff0c;如菠菜、股票、期货甚至虚拟货币的网络诈骗。今年某月某日小白就遭遇了这种骗局&#xff0c;他先是被骗子通过QQ添加并下载了一个…

Linux环境Arduino IDE中配置ATOM S3

linux选择ubuntu发行版。 硬件设备有多小呢&#xff1a; 功能超级强大。 之前的ROS1和ROS2案例已经全部移植完成并测试结束&#xff08;三轮纯人力校验&#x1f60e;&#xff09;。 官网文档信息非常非常好&#xff1a; https://docs.m5stack.com/zh_CN/quick_start/atoms3…

下载安装:SQLite+SQLiteStudio+VS

目录 1、SQLite 1.1、下载SQLite 1.2、配置SQLite的环境变量 2、SQLite Studio 2.1、下载SQLite Studio 2.2、安装SQLite Studio 3、Visual Studio 3.1、下载Visual Studio 3.2、安装Visual Studio 1、SQLite 1.1、下载SQLite SQLite官网&#xff1a;SQLite Downl…

AXI协议之AXILite开发设计(一)

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本设计主要介绍AXILite的设计开发&a…

Python实战之数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么&#xff1f; 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;通过算法&#xff0c;找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的数据挖掘库&#…

secureCRT软件菜单不见了的解决方法

1、打开securecrt软件 2、在方框处&#xff0c;选择右键&#xff0c;点击勾选 3、菜单即可正常显示了

servlet银行储蓄管理系统java存取转账交易 jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 servlet银行储蓄管理系统 系统有1权限&#xff1a;管…