Zubnet AI學習Wiki › Tokenizer
基礎

Tokenizer(分詞器)

別名:分詞、Tokenization

在模型處理文字之前,將原始文字轉換為 tokens 的演算法。分詞器維護一個固定的詞元類型詞彙表,並將任何輸入文字拆分為這些詞元的序列。不同的模型使用不同的分詞器 — 同一個句子在 Claude、GPT 和 Llama 中的分詞結果不同,這會影響上下文使用量和成本。

為什麼重要

分詞器是你的文字和模型之間的隱形層。它決定了你的提示詞花費多少 tokens、為什麼某些語言比其他語言更昂貴,以及為什麼程式碼有時比散文更快消耗上下文。當你達到上下文限制或看到意外的 API 費用時,分詞器通常就是原因。

深度解析

大多數現代分詞器使用位元組對編碼(Byte Pair Encoding,BPE)或其變體 SentencePiece。BPE 從單個位元組或字元開始,反覆合併最頻繁的相鄰字元對為新的詞元。經過數千次合併後,像 "the" 這樣的常見單字會成為單個詞元,而罕見的單字則會被拆分為子詞片段。

詞彙表大小很重要

分詞器的詞彙表大小是一個真正的工程權衡。較大的詞彙表(100K+ 詞元)能更有效地壓縮文字 — 常見的單字和短語會有專屬的詞元,因此消耗的上下文更少。但較大的詞彙表也意味著模型輸入和輸出層的嵌入表更大。

多語言的代價

分詞器是在語料庫上訓練的,而該語料庫的語言分布決定了效率。英文文字通常以大約每個單字 1 個詞元的速率進行分詞。但像中文、日文、韓文、阿拉伯文和印地文這樣的語言,表達相同意思可能需要 2–4 倍的詞元。

分詞器的特異行為

分詞中的怪異現象解釋了人們覺得困惑的幾種 LLM 行為。模型難以處理字元層級的任務(例如數「strawberry」裡有幾個字母),因為它們看到的是詞元而非字元。它們處理某些變數名稱比其他的好,因為常見名稱是單一詞元,而不常見的則會被拆分。

相關概念

← 所有術語