自然語言處理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.pswp.cn/web/75755.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75755.shtml
英文地址,請注明出處:http://en.pswp.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>…