自然语言处理Hugging Face Transformers

Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库,专注于 最先进的自然语言处理(NLP)模型,如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API,广泛应用于文本分类、机器翻译、问答系统等任务。


1. Hugging Face Transformers 的特点

✅ 丰富的预训练模型:支持 500+ 种模型(如 BERT、GPT-3、Llama 2)。
✅ 跨框架支持:兼容 PyTorch、TensorFlow、JAX
✅ 易用 API:提供 pipeline,几行代码即可实现 NLP 任务。
✅ 社区支持:Hugging Face Hub 提供 数千个公开模型和数据集
✅ 支持自定义训练:可微调(Fine-tune)模型以适应特定任务。


2. 主要功能

(1) 开箱即用的 NLP 任务

  • 文本分类(情感分析、垃圾邮件检测)

  • 命名实体识别(NER)

  • 问答系统(QA)

  • 文本生成(如 GPT-3、Llama 2)

  • 机器翻译

  • 摘要生成

(2) 核心组件

  • pipeline:快速调用预训练模型进行推理。

  • AutoModel / AutoTokenizer:自动加载模型和分词器。

  • Trainer:简化模型训练和微调流程。

  • Datasets:高效加载和处理数据集。


3. 安装与基本使用

(1) 安装

pip install transformers

(可选)安装 PyTorch / TensorFlow:

pip install torch  # PyTorch
pip install tensorflow  # TensorFlow

注:此处我尝试了安装gpu版本的,因为我电脑安装的cuda版本较低,所以试了几个版本的tensorflow-gpu版本都和transformer版本不匹配。

(2) 使用 pipeline 快速体验

from transformers import pipeline 
# 情感分析 将下载的模型存于multilingual-sentiment-analysis路径下
classifier=pipeline("text-classification",model="./multilingual-sentiment-analysis")
print(classifier("我很骄傲"))
# 文本生成 
# 指定本地路径加载模型,将下载的模型存于gpt2路径下
generator = pipeline("text-generation",model="./gpt2")# 本地模型路径
result=generator("AI will change",max_length=50)
print(result[0]['generated_text'])

因为模型在线下载会比较麻烦,建议离线下载好,放到指定的文件夹下,方便调用

通过网盘分享的文件:gpt2
链接: https://pan.baidu.com/s/1Z9MZQKyOQrLlvn_jh3bGOg 提取码: 8ihe

通过网盘分享的文件:multilingual-sentiment-analysis
链接: https://pan.baidu.com/s/16e6Jvo44vetMmTxrQcZZqQ 提取码: tv4e

(3) 加载自定义模型

from transformers import AutoTokenizer, AutoModelForSequenceClassification# 加载模型和分词器
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)# 处理输入
inputs = tokenizer("Hello, world!", return_tensors="pt")
outputs = model(**inputs)
print(outputs)

4. 常用预训练模型

模型用途示例模型 ID
BERT文本分类、NER、问答bert-base-uncased
GPT-2文本生成gpt2
T5文本摘要、翻译t5-small
RoBERTa更强大的 BERT 变体roberta-base
Llama 2Meta 开源的大语言模型meta-llama/Llama-2-7b

5. 与 spaCy 的比较

特性Hugging Face TransformersspaCy
模型类型深度学习(BERT、GPT)传统统计模型 + 部分 DL
速度较慢(依赖 GPU 加速)⚡ 极快(CPU 友好)
适用任务复杂 NLP(翻译、生成)基础 NLP(分词、NER)
自定义训练✅ 支持(微调 LLM)✅ 支持(但规模较小)
易用性中等(需了解深度学习)👍 非常简单

👉 推荐选择

  • 如果需要 最先进的 NLP(如 ChatGPT 类应用) → Hugging Face

  • 如果需要 快速处理结构化文本(如实体提取) → spaCy


6. 实战案例

(1) 聊天机器人(使用 GPT-2)

from transformers import pipeline
chatbot = pipeline("text-generation", model="./gpt2")
response = chatbot("What is the future of AI?", max_length=50)
print(response[0]['generated_text'])

(2) 自定义微调(Fine-tuning)

from transformers import Trainer, TrainingArgumentstraining_args = TrainingArguments(output_dir="./results",per_device_train_batch_size=8,num_train_epochs=3,
)trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=eval_dataset,
)
trainer.train()

(3)情感分析

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "./multilingual-sentiment-analysis"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)def predict_sentiment(texts):inputs = tokenizer(texts, return_tensors="pt", truncation=True, padding=True, max_length=512)with torch.no_grad():outputs = model(**inputs)probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1)sentiment_map = {0: "Very Negative", 1: "Negative", 2: "Neutral", 3: "Positive", 4: "Very Positive"}return [sentiment_map[p] for p in torch.argmax(probabilities, dim=-1).tolist()]texts = [# English"I absolutely love the new design of this app!", "The customer service was disappointing.", "The weather is fine, nothing special.",# Chinese"这家餐厅的菜味道非常棒!", "我对他的回答很失望。", "天气今天一般。",# Spanish"¡Me encanta cómo quedó la decoración!", "El servicio fue terrible y muy lento.", "El libro estuvo más o menos.",# Arabic"الخدمة في هذا الفندق رائعة جدًا!", "لم يعجبني الطعام في هذا المطعم.", "كانت الرحلة عادية。",# Ukrainian"Мені дуже сподобалася ця вистава!", "Обслуговування було жахливим.", "Книга була посередньою。",# Hindi"यह जगह सच में अद्भुत है!", "यह अनुभव बहुत खराब था।", "फिल्म ठीक-ठाक थी।",# Bengali"এখানকার পরিবেশ অসাধারণ!", "সেবার মান একেবারেই খারাপ।", "খাবারটা মোটামুটি ছিল।",# Portuguese"Este livro é fantástico! Eu aprendi muitas coisas novas e inspiradoras.","Não gostei do produto, veio quebrado.", "O filme foi ok, nada de especial.",# Japanese"このレストランの料理は本当に美味しいです!", "このホテルのサービスはがっかりしました。", "天気はまあまあです。",# Russian"Я в восторге от этого нового гаджета!", "Этот сервис оставил у меня только разочарование.", "Встреча была обычной, ничего особенного.",# French"J'adore ce restaurant, c'est excellent !", "L'attente était trop longue et frustrante.", "Le film était moyen, sans plus.",# Turkish"Bu otelin manzarasına bayıldım!", "Ürün tam bir hayal kırıklığıydı.", "Konser fena değildi, ortalamaydı.",# Italian"Adoro questo posto, è fantastico!", "Il servizio clienti è stato pessimo.", "La cena era nella media.",# Polish"Uwielbiam tę restaurację, jedzenie jest świetne!", "Obsługa klienta była rozczarowująca.", "Pogoda jest w porządku, nic szczególnego.",# Tagalog"Ang ganda ng lugar na ito, sobrang aliwalas!", "Hindi maganda ang serbisyo nila dito.", "Maayos lang ang palabas, walang espesyal.",# Dutch"Ik ben echt blij met mijn nieuwe aankoop!", "De klantenservice was echt slecht.", "De presentatie was gewoon oké, niet bijzonder.",# Malay"Saya suka makanan di sini, sangat sedap!", "Pengalaman ini sangat mengecewakan.", "Hari ini cuacanya biasa sahaja.",# Korean"이 가게의 케이크는 정말 맛있어요!", "서비스가 너무 별로였어요.", "날씨가 그저 그렇네요.",# Swiss German"Ich find dä Service i de Beiz mega guet!", "Däs Esä het mir nöd gfalle.", "D Wätter hüt isch so naja."
]for text, sentiment in zip(texts, predict_sentiment(texts)):print(f"Text: {text}\nSentiment: {sentiment}\n")

7. 学习资源

  • 官方文档: huggingface.co/docs/transformers

  • Hugging Face 课程: huggingface.co/course(免费 NLP 课程)

  • 模型库: huggingface.co/models


总结

Hugging Face Transformers 是 当今最强大的 NLP 库之一,适用于:

  • 前沿 AI 研究(如 LLM、ChatGPT 类应用)

  • 企业级 NLP 解决方案(如智能客服、自动摘要)

  • 快速实验 SOTA 模型

🚀 推荐下一步

  1. 尝试 pipeline() 运行不同任务(如 "text-generation")。

  2. 在 Hugging Face Hub 上探索开源模型(如 bert-base-uncased)。

  3. 学习 微调(Fine-tuning) 以适应自定义数据集。

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

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

相关文章

vue开发基础流程 (后20)

创建项目命令; 或者 vue create my - vue - router - project这个是创建带路由的项目 22.组件组成 比如说一个页面吧,他三个组件,template就是用来放所有的标签,script用来放业务逻辑,style用来放样式,c…

高性能内存kv数据库Redis

引言 在当今数据驱动的时代,高效的数据存储和检索对于各类应用程序至关重要。Redis(Remote Dictionary Server)作为一款开源的内存键值数据库,凭借其出色的性能、丰富的数据结构和灵活的特性,在众多场景中得到了广泛应…

自动化测试概念篇

文章目录 目录1. 自动化1.1 自动化概念1.1.1 回归测试 1.2 自动化分类1.3 自动化测试金字塔 2. web自动化测试2.1 驱动2.1.1 安装驱动管理2.1.2 selenium库 3. Selenium3.1 一个简单的web自动化示例3.2 selenium驱动浏览器的工作原理 目录 自动化web自动化测试Selenium 1. 自…

《AI大模型应知应会100篇》第17篇:大模型的偏见与公平性问题

第17篇:大模型的偏见与公平性问题 摘要 在人工智能迅速发展的今天,大型语言模型(LLM)已经深入到我们的日常生活和工作中。然而,这些模型并非完美无缺,它们可能携带并放大数据中的偏见,导致不公…

【踩坑】GitHub Actions 运行的 Linux 环境中,文件名是大小写敏感的

在使用 VuePress 搭建个人博客并部署到 GitHub Pages 的过程中,我遇到了一个颇为棘手的问题:本地打包一切正常,但在 GitHub Actions 自动执行打包流程时,却提示找不到 README.md 文件,导致整个流程失败。经过一番深入排…

C# 13新特性 - .NET 9

转载: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…

numpy.ma.masked_where:屏蔽满足条件的数组

1.函数功能 屏蔽满足条件的数组内容,返回值为掩码数组 2.语法结构 np.ma.masked_where(condition, a, copyTrue)3. 参数 参数含义condition屏蔽条件a要操作的数组copy布尔值,取值为True时,结果复制数组(原始数据不变),否则返回…

【Redis】数据结构和内部编码

先来复习一下之前学过的几个基本的全局命令: keys:用来查看匹配规则的keyexists:用来判定执行key是否存在del:删除指定的keyexpire:给key设置过期时间ttl:查询key的过期时间type:查询key对应的…

OBOO鸥柏如何以智能教育室内外触摸屏一体机AI变革硬件

在AI技术蓬勃发展的当下,OBOO鸥柏室外触摸屏一体机通过融入AI科技,为教育领域带来了翻天覆地的变化。这款一体机不仅为高校和大学校园提供了革命性的数字化教学解决方案,更引领了引体向上成绩提升一体机带训室外终端屏幕设备的新潮流。其创新…

从零搭建高并发体育直播网站:架构设计、核心技术与性能优化实战

本文从技术视角拆解体育直播网站开发全流程,涵盖高并发架构设计、低延迟视频流传输、实时弹幕系统实现等核心模块,并附可复用的代码片段与优化方案。适合中高级开发者进阶实战参考。 一、需求分析与技术选型 1. 典型业务场景 核心需求:支持1…

【Python内置函数的深度解析与应用】id

目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现1. 基础身份验证2. 不可变对象优化3. 对象生命周期追踪 运行结果验证 三、性能对比测试方法论量化数据…

3.vtkProp 和vtkProp3D

文章目录 vtkProp 和vtkProp3D使用vtkProp3D使用vtkPro vtkProp 和vtkProp3D vtkProp 和 vtkProp3D 都是VTK(Visualization Toolkit)库中的类,它们用于在渲染场景中表示可视化元素。理解这两个类的区别和用途对于有效地使用VTK进行三维数据可…

【ZYNQ Linux移植】2-获取设备树

0 写在前面 这是一个系列博客,详细介绍如何在 ZYNQ 与 ZYNQ MP 平台上如何移植 Linux 系统。目前网络上的大部分教程都是全程基于 Petalinux 的开发,虽然这样简化了开发流程,但对于初学者深入理解掌握 Linux 是不利的,所以&#x…

基础算法篇(5)(蓝桥杯常考点)—动态规划(C/C++)

文章目录 动态规划前言线性dp路径类dp经典线性dp背包问题分类01背包问题完全背包问题多重背包分组背包问题混合背包问题多维费用的背包问题区间dp 动态规划 前言 在竞赛中,如果遇到动态规划的题目,只要不是经典题型,那么大概率就是以压轴题的…

obsidian写文章的图床设置方法

目标 要达成的需求: 复制到obsidian的图片,自动上传到Picgo配置的图床。可以自定义大小。可以一键下载当前文章的图片到本地。 obsidian配置图床 安装并配置插件 image auto upload plugin,配置信息如下图。 滚轮alt自定义大小 安装并…

QPaintDevice绘图设备

1.QPixmap 对不同平台做了显示的优化,可以将画的图保存到磁盘上 头文件: #include"QPixmap" #include"QPainter" 1.1QPixmap画图 代码: //Pixmap绘图设备QPixmap pix(300,300);//声明画家QPainter painter(&pix…

数据结构有哪些类型(对于数据结构的简述)

在学习计算机时,数据结构是不可忽视的一点,从考研时的408课程,再到工作中编写软件,网站,要想在计算机领域站住脚跟,数据结构是必备的 在这里,我对于数据结构进行了汇总,并简要描述&…

L2TP实验(无图后补)

拓扑图 一、搭建拓扑并配置基础 IP 地址 设备选型与拓扑搭建:在 eNSP 中,拖入所需设备,包括 LAC(L2TP Access Concentrator,L2TP 接入集中器 )、LNS(L2TP Network Server,L2TP 网络服…

【C#】CAN通信的使用

在C#中实现CAN通信通常需要借助第三方库或硬件设备的驱动程序,因为C#本身并没有直接内置支持CAN通信的功能。以下是一个关于如何使用C#实现CAN通信的基本指南,包括所需的步骤和常用工具。 1. 硬件准备 要进行CAN通信,首先需要一个支持CAN协…

02_C++入门案例习题while循环练习案例:猜数字

案例描述&#xff1a;系统随机生成一个1到100之间的数字&#xff0c;玩家进行猜测&#xff0c;如果猜错&#xff0c;提示玩家数字过大或过小&#xff0c;如果猜对恭喜玩家胜利&#xff0c;并且退出游戏。 需要引入随机数种子 #include <cstdlib> #include <ctime>…