基于Transformer的NLP处理管线

news2025/1/16 7:50:11

HuggingFace transformers 是一个整合了跨语言、视觉、音频和多模式模态与最先进的预训练模型并且提供用户友好的 API 的AI开发库。 它由 170 多个预训练模型组成,支持 PyTorch、TensorFlow 和 JAX 等框架,能够在代码之间进行互操作。 这个库还易于部署,因为它允许将模型转换为 ONNX 和 TorchScript 格式。

在这篇文章中,我们将特别探讨可轻松用于推理的transformer的管道(pipeline)功能。 管道提供复杂代码的抽象,并为文本摘要、问答、命名实体识别、文本生成和文本分类等多项任务提供简单的 API。 这些 API 最好的一点是,从预处理到模型评估的所有任务都可以只用几行代码来执行,而不需要大量的计算资源。

在这里插入图片描述

推荐:将 NSDT场景编辑器 加入你的3D开发工具链。

现在,让我们开始吧!

第一步是使用以下命令安装 transformers 包:

pip install transformers

接下来,我们将使用流水线管道结构来实现不同的任务:

from transformers import pipeline

管道允许指定多个参数,例如任务、模型、设备、批量大小和其他任务特定参数。

让我们从第一个任务开始。

1、文本摘要

这个任务的输入是一个文本语料库,模型将根据参数中提到的预期长度输出它的摘要。 在这里,我们将最小长度保持为 5,将最大长度保持为 30。

summarizer = pipeline(
    "summarization", model="t5-base", tokenizer="t5-base", framework="tf"
)

input = "Parents need to know that Top Gun is a blockbuster 1980s action thriller starring Tom Cruise that's chock full of narrow escapes, chases, and battles. But there are also violent and upsetting scenes, particularly the death of a main character, which make it too intense for younger kids. There's also one graphic-for-its-time sex scene (though no explicit nudity) and quite a few shirtless men in locker rooms and, in one iconic sequence, on a beach volleyball court. Winning is the most important thing to all the pilots, who try to intimidate one another with plenty of posturing and banter -- though when push comes to shove, loyalty and friendship have important roles to play, too. While sexism is noticeable and almost all characters are men, two strong women help keep some of the objectification in check."

summarizer(input, min_length=5, max_length=30)

输出如下:

[
    {
        "summary_text": "1980s action thriller starring Tom Cruise is chock-full of escapes, chases, battles "
    }
]

还可以从针对摘要任务进行微调的模型的其他选项中进行选择 - bart-large-cnn、t5-small、t5-large、t5-3b、t5-11b。 可以在此处查看可用模型的完整列表。

2、问答任务

在这个任务中,我们提供了一个问题和一个上下文。 该模型将根据最高概率得分从上下文中选择答案。 它还提供文本的开始和结束位置。

qa_pipeline = pipeline(model="deepset/roberta-base-squad2")

qa_pipeline(
    question="Where do I work?",
    context="I work as a Data Scientist at a lab in University of Montreal. I like to develop my own algorithms.",
)

输出如下:

{
    "score": 0.6422629356384277,
    "start": 39,
    "end": 61,
    "answer": "University of Montreal",
}

请参阅此处查看问答任务可用模型的完整列表。

3、命名实体识别

命名实体识别处理基于人名、组织名、位置名等的词的识别和分类。 输入基本上是一个句子,模型将确定命名实体及其类别及其在文本中的相应位置。

ner_classifier = pipeline(
    model="dslim/bert-base-NER-uncased", aggregation_strategy="simple"
)
sentence = "I like to travel in Montreal."
entity = ner_classifier(sentence)
print(entity)

输出如下:

[
    {
        "entity_group": "LOC",
        "score": 0.9976745,
        "word": "montreal",
        "start": 20,
        "end": 28,
    }
]

在此处查看可用模型的其他选项。

4、词性标注

PoS 标记可用于对文本进行分类并提供其相关词性,例如一个词是否是名词、代词、动词等。 该模型返回 PoS 标记的单词及其概率分数和各自的位置。

pos_tagger = pipeline(
    model="vblagoje/bert-english-uncased-finetuned-pos",
    aggregation_strategy="simple",
)
pos_tagger("I am an artist and I live in Dublin")

输出如下:

[
    {
        "entity_group": "PRON",
        "score": 0.9994804,
        "word": "i",
        "start": 0,
        "end": 1,
    },
    {
        "entity_group": "VERB",
        "score": 0.9970591,
        "word": "live",
        "start": 2,
        "end": 6,
    },
    {
        "entity_group": "ADP",
        "score": 0.9993111,
        "word": "in",
        "start": 7,
        "end": 9,
    },
    {
        "entity_group": "PROPN",
        "score": 0.99831414,
        "word": "dublin",
        "start": 10,
        "end": 16,
    },
]

5、文本分类

我们将执行情感分析并根据语气对文本进行分类。

text_classifier = pipeline(
    model="distilbert-base-uncased-finetuned-sst-2-english"
)
text_classifier("This movie is horrible!")

输出如下:

[{'label': 'NEGATIVE', 'score': 0.9997865557670593}]

让我们再举几个例子。

text_classifier("I loved the narration of the movie!")

输出如下:

[{'label': 'POSITIVE', 'score': 0.9998612403869629}] 

可以在此处找到完整的文本分类模型列表。

6、文本生成

text_generator = pipeline(model="gpt2")
text_generator("If it is sunny today then ", do_sample=False)

输出如下:

[
    {
        "generated_text": "If it is sunny today then \xa0it will be cloudy tomorrow."
    }
]

在此处访问文本生成模型的完整列表。

7、文本翻译

在这里,我们会将文本的语言从一种语言翻译成另一种语言。 例如,我们选择了从英语到法语的翻译。 我们使用了基本的 t5-small 模型,但你可以在此处访问其他高级模型。

en_fr_translator = pipeline("translation_en_to_fr", model='t5-small')
en_fr_translator("Hi, How are you?")

输出如下:

[{'translation_text': 'Bonjour, Comment êtes-vous ?'}]

原文链接:Transformer NLP管线 — BimAnt

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

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

相关文章

【Leedcode】数据结构中链表必备的面试题(第一期)

链表必备的面试题 (附图解和源码)(第一期) 文章目录链表必备的面试题 (附图解和源码)(第一期)一、第一题1.题目2.思路图解(1)pos是首链表(2&#…

基于SpringBoot+Vue的鲜花商场管理系统

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

【Vue3源码】第三章 readonly详解 从零实现Vue3 readonly API

【Vue3源码】第三章 readonly详解 从零实现Vue3 readonly API 前言 上一章节我们实现了effect函数的stop和onstop功能,至此effect函数源码的编写就暂时告一段落了,这一章我们继续解读Vue3源码,开始实现Vue3 Reactivity :core 中…

Java基础361问14问——为什么非静态内部类会默认持有外部类的引用?

在内存泄露问题排查中最常遇到就是 【非静态内部类默认持有外部类的引用】 文章目录1 字节码分析javac Activity.javajavap -c Activity.class2 静态内部类会持有外部类引用吗?参考文档// 简化处理相关代码 public class Activity {private Handler inner new Handler();priv…

C++面向对象(中)

文章目录前言1.类的6个默认成员函数介绍2.构造函数3.析构函数1.概念2.析构函数特征4.拷贝构造1.概念2.拷贝构造函数特征3.注意事项5.赋值运算符重载1.概念6.补充知识const成员函数7.取地址运算符和const取地址运算符重载8.总结前言 本文主要介绍C中的六个天选之子,…

MicroBlaze系列教程(6):AXI_IIC的使用

文章目录 @[toc]AXI_IIC简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是Xilinx MicroBlaze系列教程的第6篇文章。 AXI_IIC简介 一般情况下,使用FPGA实现I2C协议主要有两种方式:一种是基于Verilog实现起始位、停止位、ACK产生和判断、数据的发送和接收…

程终止、进程睡眠、进程对信号处理过程中等的方法

上一章学习了调度的方式,分为主调度器和周期性调度器,明白了进程切换分为自愿(voluntary)和强制(involuntary)两种。 自愿切换: 是指任务由于等待某种资源,将state改为非running状态后,主动调用schedule让出CPU 任务…

html中元素居中的五种方法

在网页开发中,经常会有嵌套元素中将子元素居中的要求。下边将五种常用的居中方法进行总结。 1:原始图(父子元素无border,无padding): 2:实现居中效果: 一:使用margin…

一篇文章带你学会Anisble中的如何处理失败任务

目录 一、循环 1、简单循环 2、循环散列或字典列表 3、练习 二、条件 三、触发器 四、处理失败任务 1、ignore_errors 2、force_handlers 3、changed_when 4、failed_when 5、block 练习 一、循环 作用:循环迭代任务 1、简单循环 loop: ##赋值列表 -…

[软件工程导论(第六版)]第4章 形式化说明技术(复习笔记)

文章目录4.1 概述4.2 有穷状态机4.3 Petri网4.4 Z语言按照形式化程度,可以把软件工程使用的方法划分成非形式化、半形式化、形式化三类非形式化方法:使用自然语言描述需求规格说明半形式化方法:使用数据流图或实体-联系图建立模型形式化方法&…

P2P视频聊天技术分析

整个P2P视频过程需要知道双方的媒体类型、流和候选者,所以这里就会用到一下技术: ​ 信令服务器socket.io ​ 状态机 ​ ICE服务器 ​ WebRTC框架 ​ 媒体协商 信令服务器Socket.io 信令服务器说白了作用就是发消息的中转站,A把msg发到…

网络流与图(二)

上一节我们讲到了退化圈方向搜索算法,它能得到全局最优解。然而算法运行过程中需要选择一个可行改进圈方向,对于一个大型网络流来说,这并非容易的。我们需要找到在每次循环中确认可行改进圈方向或者证明不存在的方法。我们现在就来探讨这个问…

Andriod入门级开发

这学期有个课设,我们组我负责一个手机APP的开发,虽然刚开始说要实现什么智能导航,类似高德地图那种,但最后阉割的只剩一个Socket通信了,因为之前没有接触过(可能之后也不会再接触),记…

【数据管理】谈谈哈希原理和散列表

一、说明 提起哈希,有人要说:不就是一个稀疏表格么,谈的上什么原理?我说:非也,哈希是是那种看似无物,其实解决大问题的东西。如何提高数据管理效率?这是个问题,随着这个问…

测试2:编写测试用例的方法

2.编写测试用例的方法 7种 测试常用的方法:code review 代码静态分析、CI/CD CI–持续集成–开发成员经常集成它们的工作,尽快发现集成错误 CD–持续部署–将集成后的代码部署到更贴近真实运行的环境 2.1 测试用例的描述: 用例编号 用例…

Python纯Numpy手撕SGD

文章目录简介问题建模数据加载和预处理数据加载预处理分batch损失函数训练运行简介 本博客用多元线性回归展示如何从零实现一个随机梯度下降SGD, 不使用torch等AI框架 问题建模 给定一个数据集X∈RN(D1)\large X \in \R^{N \times (D1)}X∈RN(D1)和对应标签向量Y∈RN\large …

centos7防火墙工具firewall-cmd使用

centos7防火墙工具firewall-cmd使用防火墙概述centos7防火墙工具firewall-cmd使用介绍firewalld的基本使用服务管理工具相关指令配置firewalld-cmd防火墙概述 防火墙是可以帮助计算机在内部网络和外部网络之间构建一道相对隔绝的保护屏障,从而保护数据信息的一种技…

Vulnhub 渗透练习(七)—— FRISTILEAKS: 1.3

环境搭建 下载链接 virtualbox 打开靶机设置为 host-only,攻击机同样。 具体可点此处 信息收集 开了个 80 端口。 用的是 apache 2.2.15 ,这个版本有个解析漏洞。 目录 根据首页的图片猜测 /fristi/ 目录(不过我没想到 -_-&#x…

由浅入深掌握各种 Python multiprocessing 进程间通信方式

由浅入深掌握各种 Python 多进程间通信方式1、为什么要掌握进程间通信2、进程间各类通信方式简介3、消息机制通信1) 管道 Pipe 通信方式2) 消息队列Queue 通信方式4、同步机制通信(1) 进程间同步锁 – Lock(2) 子进程间协调机制 -- Event5、共享内存方式通信(1) 共享变量(2) 共…

【Python】控制自己的手机摄像头拍照,并自动发送到邮箱

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 今天这个案例,就是控制自己的摄像头拍照, 并且把拍下来的照片,通过邮件发到自己的邮箱里。 想完成今天的这个案例,只要记住一个重点:你需要一个摄像头 思路…