transformers库的使用【一】——pipeline的简单使用
transformers库的使用
使用pipeline API来快速使用一些预训练模型
使用预训练模型最简单的方法就是使用pipeline(),transformers提供了一些任务:
1、情感分析(Sentment analysis):分析文本是正面的还是负面的
2、文本生成(in English):提供一个语句,模型将生成这条语句的下一句
3、命名实体识别(NER):在输入的语句中,对每个单词进行标记,来揭示该单词的含义(比如人物、地点等等)
4、问题回答:输入一段文本以及一个问题,来从文本中抽取出这个问题的答案
5、填补被遮蔽的文本:输入一段文本,其中一些单词被[MASK]标签取代,模型填补这些被遮蔽的文本
6、摘要生成:产生一段长文本的摘要
7、翻译:将一种语言的文本翻译成另一种语言
8、特征抽取:得到一段文本的tensor表示
接下来是一个情感分析的例子:
from transformers import pipeline
classifier = pipeline('sentiment-analysis')
当第一次执行这段代码的时候,会下载一个预训练模型(Pre-training model)以及他的一个标记器(tokenizer),标记器的作用是对文本进行预处理,随后模型会对处理过后的文本进行预测。
classifier('We are very happy to show you the Transformers library.')
[{'label':'POSITIVE','score':0.9997795224189758}]
可以看到返回值为一个列表,其中包含一个字典,字典中有两个元素,分别是这个句子的表情以及分数。
上面的例子只是输入一个句子进行情感分析,如果我们需要处理很多句子时,只需要把句子放到一个列表(list)中
sentences=["We are very happy to show you the Transformers library",
"We hope you don't hate it"]
results = classifier(sentences)
for result in results:
print(f"label:{result['label']},with score:{round(result['score'],4)}")
这里我们将两个句子以列表的形式送入classifier中,随后对得到的结果用一个for循环进行打印,得到的结果如下:
label: POSITIVE, with score: 0.9998
label: NEGATIVE, with score: 0.5309
可以看到,模型把第一个句子分成了积极,第二个句子分成了消极,但实际上第二个句子的得分更接近于一个中性。
回过头来再看这个模型,当我们创建这个模型的时候,它会默认下载一个叫做"distilbert-base-uncased-finetuned-sst-2-english"的模型,这个模型是使用DistillBERT architecture 以及在SST-2数据集上进行微调的模型。
如果希望不使用这个默认的数据集,比如说,我希望使用一个在法语数据上训练的模型。我们可以在这个网站 model hub(https://huggingface.co/models)来查看一些模型,这个网址收集了许多的由实验室训练出来的模型,同时还有一些社区模型(社区模型是指在一些特殊的数据集上对一些模型进行微调得到的模型)。
那么我们使用标签"French"以及"text-classification"进行搜索的时候,会得到一个结果"nlptown/bert-base-multilingual-uncashed-sentiment"
接下来看一下如何使用这个模型:
classifier = pipeline('sentiment-analysis',model="nlptown/bert-base-multilingual-uncashed-sentiment")
可以看到,这个分类器的定义和之前相比,只是在创建pipeline()的时候多指定了一个model字段。
还可以在指定模型的时候用存放了模型的本地的文件夹来指定模型,或者传递一个模型以及这个模型的标记器。
这个分类器不仅仅能处理英语,法语,甚至能处理西班牙语,德语。
接下来我们需要两个类,一个是AutoTokenizer,这个类是用来自动下载与模型相关联的标记器,并且可以进行实例化。
第二个类是AutoModelForSequenceClassification(在Tensorflow中是TFAutoModelForSequenceClassification)用来去下载模型本身。(注意:️如果我们在别的任务上使用这个库,模型的类会发生改变)
from transformers import AutoTokenizer,AutoModelForSequenceClassification
为了下载我们那之前指定的模型和标记器,需要使用一个叫做from_pretrained()的方法
model_name ="nlptown/bert-base-multilingual-uncashed-sentiment"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
classifier = pipeline('sentiment-analysis',model=model,tokenizer=tokenizer)
在创建pipeline实例的时候,指明模型以及标记器。
如果你没有找到一个在和你用到的数据类似的预训练模型,你需要去自己把模型用在你的数据上并进行微调。
————————————————
版权声明:本文为CSDN博主「桉夏与猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28790663/article/details/115372770
transformers库的使用【一】——pipeline的简单使用的更多相关文章
- Transformers 库常见的用例 | 三
作者|huggingface 编译|VK 来源|Github 本章介绍使用Transformers库时最常见的用例.可用的模型允许许多不同的配置,并且在用例中具有很强的通用性.这里介绍了最简单的方法, ...
- 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单
圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单 //// CircleCore.h// Quartz//// Created by 仙人掌 on 12 ...
- Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)
Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...
- 安装folly库以及folly的ConcurrentHashMap的简单使用
我在写grpc的实例时, 需要使用一个多线程的hash map, C++标准库中没有多线程的hash map, facebook开源的folly中存在大量的基础类, 中间存在一个高性能的hash ma ...
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
目录 前言 1 Get方式和Post方式接口说明 2 OkHttp库简单介绍及环境配置 3 具体实现 前言 本文具体实现思路和大部分代码参考自<第一行代码>第2版,作者:郭霖:但是文中讲 ...
- dlib库检测人脸使用方法与简单的疲劳检测应用
简介: dlib库是一个很经典的用于图像处理的开源库,shape_predictor_68_face_landmarks.dat是一个用于人脸68个关键点检测的dat模型库,使用这个模型库可以很方便地 ...
- 第三方库AFNetworking 3.1.0的简单使用
AFNetworking是一个 在iOS开发中 使用非常多网络开源库.它是一个轻量级的网络请求API类库. 适用于iOS以及Mac OS X.它构建于在(Apple iOS开发文档) NSURLCon ...
- C# 日志输出工具库—log4net 安装、配置及简单应用
1.下载和安装 注意每次安装只是安装到本项目中,换了另一个项目需要再次安装和配置. 我使用的是Visual Studio 2013 社区版,在tools中找到NuGet包管理. 搜索log4net并点 ...
- Orace开源的异步IO编程库,特点是接口非常简单
官网:https://oss.oracle.com/projects/libaio-oracle/,正如标题所说,非常简单了,不用多解释,请直接看头文件,其中aio_poll类似于poll,重要的结构 ...
- 用urllib库几行代码实现最简单爬虫
""" 使用urllib.request()请求一个网页内容,并且把内容打印出来. """ from urllib import reque ...
随机推荐
- TUF系统概述
TUF基本介绍 TUF 是一个为软件更新系统设计的安全框架,最初由纽约大学的 Secure Systems Lab 提出.它的目标是解决传统软件更新过程中的各种安全问题(如中间人攻击.回滚攻击.密钥泄 ...
- 关于ChatmoneyAI的讨论
本文由 ChatMoney团队出品 最近ChatmoneyAI团队"打鸡血"似的全力开发,更新频繁到备受同行关注,那今天我们来浅谈一下ChatmoneyAI.它之所以能被认可,并不 ...
- 垃圾PTA:7-2 统计数字字符和空格
本题要求编写程序,输入一行字符,统计其中数字字符.空格和其他字符的个数.建议使用switch语句编写. 输入格式:输入在一行中给出若干字符,最后一个回车表示输入结束,不算在内. 输出格式:在一行内按照 ...
- FFmpeg开发笔记(六十八)Windows给FFmpeg集成AV1解码器libdav1d
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10.Mozilla Daala以及Cis ...
- .NET Core如何通过认证机制访问Kafka?
大家好,我是Edison. 最近有一个ASP.NET Core使用认证机制访问Kafka的需求,加之我们又使用了CAP这个开源项目使用的Kafka,于是网上寻找了一番发现对应资料太少,于是调查了一番, ...
- 精控Spring AI日志
还在为 Spring AI 默认的日志抓狂吗?想看日志却看不到,一开 DEBUG 就刷屏... 别慌! 今天 NEO 带你解锁一个神级操作:自定义 Advisor,让你轻松掌控 AI 调用的每一个细节 ...
- macBook本地安装mysql
下载软件https://dev.mysql.com/downloads/ 找到MySQL Community Server,点击下载下载页选择合适的版本下载就行,一般选择第一个macOS 10.15 ...
- linux 安装obs 报错 xcb
简介 如何解决这个问题呢? 首先开启 qtdebug export QT_DEBUG_PLUGINS=1 然后发现是 找不库 libqxcb.so obs 会去一个目录下寻找他, 然后我们创建这个目录 ...
- vs minmax冲突
简介 RT 参考链接 https://blog.csdn.net/danelumax2/article/details/9172465 预处理器设置 项目属性 --> C/C++ --> ...
- opengl 学习 之 11 lesson
opengl 学习 之 11 lesson 简介 2D纹理.简单来说就是用一个四边形的小框框,UV映射图片. 这里用了多个shader,一个是关于模型的,一个是关于图片的. link http://w ...