搜尋
首頁後端開發Python教學理解分詞器:深入研究有擁抱臉孔的分詞器

Understanding Tokenization: A Deep Dive into Tokenizers with Hugging Face

標記化是自然語言處理 (NLP) 中的基本概念,尤其是在處理語言模型時。在本文中,我們將探討分詞器的作用、工作原理,以及如何使用 Hugging Face 的轉換器庫 [https://huggingface.co/docs/transformers/index] 將其用於各種應用程式。

什麼是分詞器?

分詞器的核心是將原始文字分解為更小的單元,稱為標記。這些標記可以表示單字、子字或字符,這取決於所使用的標記生成器的類型。標記化的目標是將人類可讀的文本轉換為更容易被機器學習模型解釋的形式。

標記化至關重要,因為大多數模型不能直接理解文字。相反,他們需要數字來進行預測,這就是分詞器的用武之地。它接收文本,對其進行處理,並輸出模型可以使用的數學表示。

在這篇文章中,我們將介紹如何使用 Hugging Face 中的預訓練模型來了解標記化的工作原理,探索 Transformer 庫中可用的不同方法,並了解標記化如何影響情緒分析等下游任務。

設定模型和分詞器

首先,讓我們從 Transformers 套件中導入必要的庫並載入預先訓練的模型。我們將使用經過微調的「DistilBERT」模型進行情緒分析。

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)

標記文字

設定模型和分詞器後,我們可以開始對一個簡單的句子進行分詞。這是一個例句:

sentence = "I love you! I love you! I love you!"

讓我們逐步分解標記化過程:

1. Tokenizer 輸出:輸入 ID 和注意力掩碼

當您直接呼叫分詞器時,它會處理文字並輸出幾個關鍵元件:

  • input_ids:表示令牌的整數 ID 清單。每個標記對應於模型詞彙表中的一個條目。
  • attention_mask:由 1 和 0 組成的列表,指示模型應注意哪些標記。這在處理填充時特別有用。
res = tokenizer(sentence)
print(res)

輸出:

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
  • input_ids:整數代表標記。例如,1045對應“我”,2293對應“愛”,999對應“!”。
  • attention_mask:這些表示應該注意所有標記。如果有填充標記,您會在此列表中看到零,表明它們應該被忽略。

2. 代幣化

如果您對分詞器如何將句子分割成單獨的分詞感到好奇,您可以使用 tokenize() 方法。這將為您提供沒有底層 ID 的代幣清單:

sentence = "I love you! I love you! I love you!"

輸出:

res = tokenizer(sentence)
print(res)

請注意,標記化涉及將句子分解為更小的有意義的單元。分詞器也會將所有字元轉換為小寫,因為我們使用的是 distilbert-base-uncased 模型,該模型不區分大小寫。

3. 將Token轉換為ID

一旦我們有了令牌,下一步就是使用convert_tokens_to_ids()方法將它們轉換為對應的整數ID:

{
    'input_ids': [101, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 102],
    'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}

輸出:

tokens = tokenizer.tokenize(sentence)
print(tokens)

每個標記都有一個唯一的整數 ID,在模型的詞彙表中表示它。這些 ID 是模型用於處理的實際輸入。

4. 將 ID 解碼回文本

最後,您可以使用decode() 方法將令牌 ID 解碼回人類可讀的字串:

['i', 'love', 'you', '!', 'i', 'love', 'you', '!', 'i', 'love', 'you', '!']

輸出:

ids = tokenizer.convert_tokens_to_ids(tokens)
print(ids)

請注意,解碼後的字串非常接近原始輸入,除了刪除大寫字母,這是「無大小寫」模型的標準行為。

了解特殊令牌

在 input_ids 的輸出中,您可能已經注意到兩個特殊標記:101 和 102。這些標記是許多模型用來表示句子開頭和結尾的特殊標記。具體來說:

  • 101:標記句子的開頭。
  • 102:標記句子的結尾。

這些特殊標記幫助模型理解輸入文字的邊界。

注意力面具

如前所述,attention_mask 幫助模型區分真實標記和填充標記。在這種情況下,attention_mask 是一個列表,表示應注意所有標記。如果有填充標記,您會在遮罩中看到零,以指示模型忽略它們。

分詞器摘要

總而言之,標記化是將文字轉換為機器學習模型可以處理的形式的關鍵步驟。 Hugging Face 的標記器可處理各種任務,例如:

  • 將文字轉換為標記。
  • 將令牌對應到唯一的整數 ID。
  • 為模型產生注意掩模以了解哪些標記很重要。

結論

了解分詞器的工作原理是有效利用預訓練模型的關鍵。透過將文字分解為更小的標記,我們使模型能夠以結構化、高效的方式處理輸入。無論您使用模型進行情緒分析、文字生成或任何其他 NLP 任務,分詞器都是管道中的重要工具。

以上是理解分詞器:深入研究有擁抱臉孔的分詞器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
列表和陣列之間的選擇如何影響涉及大型數據集的Python應用程序的整體性能?列表和陣列之間的選擇如何影響涉及大型數據集的Python應用程序的整體性能?May 03, 2025 am 12:11 AM

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

說明如何將內存分配給Python中的列表與數組。說明如何將內存分配給Python中的列表與數組。May 03, 2025 am 12:10 AM

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

您如何在Python數組中指定元素的數據類型?您如何在Python數組中指定元素的數據類型?May 03, 2025 am 12:06 AM

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。

什麼是Numpy,為什麼對於Python中的數值計算很重要?什麼是Numpy,為什麼對於Python中的數值計算很重要?May 03, 2025 am 12:03 AM

NumPyisessentialfornumericalcomputinginPythonduetoitsspeed,memoryefficiency,andcomprehensivemathematicalfunctions.1)It'sfastbecauseitperformsoperationsinC.2)NumPyarraysaremorememory-efficientthanPythonlists.3)Itoffersawiderangeofmathematicaloperation

討論'連續內存分配”的概念及其對數組的重要性。討論'連續內存分配”的概念及其對數組的重要性。May 03, 2025 am 12:01 AM

Contiguousmemoryallocationiscrucialforarraysbecauseitallowsforefficientandfastelementaccess.1)Itenablesconstanttimeaccess,O(1),duetodirectaddresscalculation.2)Itimprovescacheefficiencybyallowingmultipleelementfetchespercacheline.3)Itsimplifiesmemorym

您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy陣列上可以執行哪些常見操作?在Numpy陣列上可以執行哪些常見操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的數據分析中如何使用陣列?Python的數據分析中如何使用陣列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境