Agentic Research

Tokenization(分詞)

又稱:分詞 · 切詞 · tokenizer · BPE · subword · 子詞 · token 化

把一段文字切成一串 token 的那套規則 —— 每個模型家族有自己的切法。

你會在什麼時候遇到它

上一站 token 告訴你模型吃的是什麼;這一站解釋它是怎麼被切出來的。當你發現同一句話在不同模型的 token 數不一樣、或中文帳單比預期貴時,答案都藏在切法裡。不懂它,token 數對你就只是玄學,估算永遠對不上帳。

打個比方

像輸入法的聯想詞庫:越常用的詞組越會被整詞收錄,一次就選出來;冷門的詞只能一個字一個字拼。BPE 這類演算法就是這個邏輯 —— 語料裡越高頻的字串,越會變成一個完整的 token。

最小範例

BPE 的基本思路(示意):
  從單一字元出發,反覆統計語料裡「哪兩個相鄰單位最常一起出現」,
  就把它們合併成一個新單位,直到詞彙表到達設定的大小。

於是常見的切法像這樣(示意,實際依模型詞彙表而異):
  "unhappiness"  → ["un", "happi", "ness"]
  罕見的人名      → 往往被切成更多碎片
  常用短詞        → 多半整詞就是一個 token

兩個關鍵後果。一,詞彙表是從訓練語料的頻率統計出來的,而主流模型的語料以英文為主,所以同樣的意思,中文通常要付更多 token。二,空格也只是一個字元,BPE 會把「詞前面的空格」併進該詞的第一個 token —— 這就是 token 字串裡看得見前導空格的原因。

最常搞錯的地方

  • 以為存在一套「標準分詞」。每個模型家族有自己的 tokenizer 和詞彙表,同一段文字切出來的 token 數不同,帳單和上下文佔用也不同。要精確數字,只能用該模型自己的 tokenizer 去數。
  • 用「字數乘一個係數」估算 token,然後奇怪為什麼跟 API 回報的用量對不上。係數只是平均值,對程式碼、JSON、中英混雜的文字誤差特別大。

相關詞條

下一步