【NLP基礎知識系列課程-Tokenizer的前世今生第二課】NLP 中的 Tokenizer 技術發展史

從詞表到子詞:Tokenizer 的“進化樹”

我們常說“語言模型是理解人類語言的工具”,但事實上,模型能不能“理解”,關鍵要看它接收到了什么樣的輸入。而 Tokenizer,就是這一輸入階段的設計者。

在 NLP 的發展歷程中,從詞級到子詞級、再到字符級和字節級,Tokenizer 的變化不僅是技術演化的軌跡,更體現了我們對語言結構理解方式的不斷革新。


1. 詞級 Tokenizer:早期的起點與硬性邊界

詞級分詞曾是 NLP 世界的黃金標準。以 Word2Vec 和 GloVe 為代表,這些模型首先基于大量語料,建立起一個固定的“詞表”(Vocabulary),每個詞就是一個最小處理單元。

例如,“natural language processing” 這句話就會被視作三個 token。

優點:
  • 粒度直觀,符合人類語言認知
  • 訓練速度快,易于構建詞向量
局限:
  • 無法處理未登錄詞(Out-of-Vocabulary, OOV),比如“ChatGPTify”就無法表示。
  • 對多語言、混合語言、拼寫錯誤極其不友好
  • 無法建模詞形變化(dogs/dogged/dogging被視為完全不同的詞)

中文、日文等沒有自然詞邊界的語言,在詞級分詞中面臨極大困難,往往依賴規則/統計分詞器(如jieba、THULAC)作為前處理,造成額外偏差。

這也是“開放詞匯建模”(Open Vocabulary Modeling)成為研究新方向的原因。


2. 子詞級 Tokenizer:開啟開放詞匯建模新時代

為了兼顧詞表大小、語義表達能力與泛化能力,NLP 社區引入了“子詞建模”思路。它的核心是將詞切成常見的片段組合,這些片段可以是詞根、前綴、后綴,也可以是無意義但頻繁出現的字串。

2.1 BPE(Byte Pair Encoding)

BPE 最初是用于壓縮編碼的技術,Sennrich 等人于2015年首次將其用于神經機器翻譯中,解決未登錄詞問題。

核心思想:

  1. 初始詞表為所有字符
  2. 統計所有相鄰字符對的頻率,合并出現最頻繁的一對
  3. 重復步驟2直到達到預設詞表大小

例如:

  • 輸入詞:“unbelievable” → 初始 token 序列:[u, n, b, e, l, i, e, v, a, b, l, e]
  • 合并“e” + “l” → “el”,再合并“el” + “i” → “eli”,最終形成 [un, believ, able]

優點:

  • 簡單、高效,可用于任意語言
  • 沒有 UNK,新詞總能被切分

缺點:

  • 貪心合并:容易忽略語義結構,切分不穩定
  • 對高資源語言效果好,但在語言形態多樣性高時表現欠佳
2.2 WordPiece:統計驅動的語言建模方法

WordPiece 最早由 Google 用于語音識別(Schuster & Nakajima, 2012),后在 BERT 中廣泛使用。

與 BPE 不同,WordPiece 合并子詞對時的目標是最大化整個訓練語料的語言模型概率。

即每次選擇合并那一對子詞,使得合并后對數似然增加最多:

argmax A , B log ? P ( A + B ) ? [ log ? P ( A ) + log ? P ( B ) ] \text{argmax}_{A,B} \log P(A+B) - [\log P(A) + \log P(B)] argmaxA,B?logP(A+B)?[logP(A)+logP(B)]

優點:

  • 合并更有“語言感知”,效果穩定
  • BERT tokenizer 中,子詞帶有“##”前綴用于表示續接(如:##able)

缺點:

  • 需要預訓練語言模型支持
  • 實現更復雜,計算成本高于 BPE
2.3 SentencePiece:語言無關的統一分詞框架

Kudo 提出的 SentencePiece 徹底打破了“先分詞再建模”的傳統,直接對原始字符流進行建模(空格也作為 token 學習)。

支持兩種模式:

  • BPE(與傳統 BPE 類似)
  • Unigram Language Model(如下)

適用于中、日等無空格語言,同時還提供了“子詞正則化”技術:訓練中允許多個切分方式,提高魯棒性。

額外特點:

  • 使用特殊字符“▁”表示詞的起始,相當于“空格”顯式化處理
  • 支持子詞概率采樣/維特比解碼
2.4 Unigram Language Model(子詞剪枝)

Unigram 模型是從一個冗余的大詞表開始,然后反復移除對語料概率貢獻最小的 token。

其建模目標是最大化每句話的 token 序列的總概率:

P ( w ) = ∏ i = 1 n P ( t i ) P(w) = \prod_{i=1}^{n} P(t_i) P(w)=i=1n?P(ti?)

通過 EM 訓練得到 token 概率后,逐步剪枝,留下最優子詞表。

優點:

  • 保留多種切分路徑
  • 支持訓練時采樣,增強泛化能力

缺點:

  • 訓練代價高,需優化動態規劃

3. 字符級與字節級:從建模單位回歸信號粒度

研究者逐漸意識到,復雜的 tokenizer 也可能帶來誤差。尤其是在處理拼寫錯誤、多語言、emoji 等情況時,子詞方法仍然存在局限。

于是,部分研究回歸“字符”或“字節”粒度輸入,讓模型完全自己學:

ByT5(2021)
  • 直接使用 UTF-8 字節作為 token,詞表大小 = 256
  • 訓練 Transformer 模型直接建模字節序列
  • 提供強大跨語言能力,對噪聲、拼寫錯誤更魯棒
CANINE
  • 用字符作為輸入 token,再通過下采樣壓縮為較短序列以降低計算成本
  • 優化了字符模型計算瓶頸,實現與 BERT 相近的效果

優劣權衡:

粒度優點缺點
子詞語義強、長度短易出錯,詞表限制
字節無語言限制,容錯性強長度暴漲,建模更難

4. Tokenizer 與預訓練模型協同演化

Tokenizer 不再只是“工具”,而變成了模型訓練任務的一部分設計:

  • T5 設計了特殊 token(extra_id_0 ~ extra_id_99)用于“span-infilling”任務,這些 token 被納入 tokenizer 的靜態詞表
  • GPT 系列 使用 byte-level BPE,對 emoji、拼音、標點處理能力大大增強
  • mBERT / XLM-R 使用跨語言共享詞表(WordPiece / BPE),幫助模型學習不同語言的統一表示空間

研究還在探索 動態 Tokenizer,例如 TLM(Token Learner Module),讓 Transformer 模塊本身決定如何分割/聚合 token,從而實現更加自適應的輸入建模。


Tokenizer 演化時間線小結

年代代表技術粒度策略類型應用代表
2013前后Word2Vec / GloVe詞級固定詞表Word2Vec, GloVe
2015BPE子詞級貪心合并OpenNMT, RoBERTa
2018WordPiece子詞級最大似然合并BERT, mBERT
2018SentencePiece+BPE子詞級無預處理 + 合并ALBERT, T5
2018SentencePiece+Unigram子詞級無預處理 + 剪枝XLNet, T5
2019Byte-level BPE字節級字節合并GPT-2, GPT-3
2021ByT5字節級無分詞ByT5
2021CANINE字符級下采樣壓縮CANINE

寫在最后:Tokenizer 是“理解單位”的科學

Tokenizer 不只是為了節省長度、提升效率,更是為了讓模型對語言有更深入、系統的建模方式。

今天的 tokenizer,已經從“靜態規則”演進到“可學習模塊”;從“輔助工具”升級為“認知中介”。

而隨著語言模型不斷演進,我們也逐漸意識到:Tokenizer 不應當是障礙,而應當是助力。

下一篇,我們將走進多模態時代的 tokenizer:圖像、音頻、視頻、表格……這些非文本的輸入,又是如何“被切”的?又如何與文本 token 融為一體?

敬請期待。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83034.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83034.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83034.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust 學習筆記:循環和迭代器的性能比較

Rust 學習筆記:循環和迭代器的性能比較 Rust 學習筆記:循環和迭代器的性能比較示例 1示例 2總結 Rust 學習筆記:循環和迭代器的性能比較 示例 1 我們運行一個基準測試,將《福爾摩斯探案集》的全部內容加載到一個字符串中&#x…

pod創建和控制

一、引言 ?主題?:pod以及控制器模式中的Deployment作用。?控制器模式:使用一種API對象(如Deployment)管理另一種API對象(如Pod)的方式。 二、容器鏡像與配置文件 ?容器鏡像?:應用開發者…

HTML實戰:愛心圖的實現

設計思路 使用純CSS創建多種風格的愛心 添加平滑的動畫效果 實現交互式愛心生成器 響應式設計適應不同設備 優雅的UI布局和色彩方案 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta nam…

2022年 中國商務年鑒(excel電子表格版)

2022年 中國商務年鑒&#xff08;excel電子表格版&#xff09;.ziphttps://download.csdn.net/download/2401_84585615/89772883 https://download.csdn.net/download/2401_84585615/89772883 《中國商務年鑒2022》是由商務部國際貿易經濟合作研究院主辦的年度統計資料&#xf…

Redis核心數據結構操作指南:字符串、哈希、列表詳解

注&#xff1a;此為蒼穹外賣學習筆記 Redis作為高性能的鍵值數據庫&#xff0c;其核心價值來自于豐富的數據結構支持。本文將深入解析字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、**列表&#xff08;List&#xff09;**三大基礎結構的操作命令&…

如何以 9 種方式將照片從 iPhone 傳輸到筆記本電腦

您的 iPhone 可能充滿了以照片和視頻形式捕捉的珍貴回憶。無論您是想備份它們、在更大的屏幕上編輯它們&#xff0c;還是只是釋放設備上的空間&#xff0c;您都需要將照片從 iPhone 傳輸到筆記本電腦。幸運的是&#xff0c;有 9 種方便的方法可供使用&#xff0c;同時滿足 Wind…

如何使用Python從MySQL數據庫導出表結構到Word文檔

在開發和維護數據庫的過程中&#xff0c;能夠快速且準確地獲取表結構信息是至關重要的。本文將向您展示一種簡單而有效的方法&#xff0c;利用Python腳本從MySQL數據庫中提取指定表的結構信息&#xff0c;并將其導出為格式化的Word文檔。此方法不僅提高了工作效率&#xff0c;還…

寫作-- 復合句練習

文章目錄 練習 11. 家庭的支持和老師的指導對學生的學術成功有積極影響。2. 缺乏準備和未能適應通常會導致在挑戰性情境中的糟糕表現。3. 吃垃圾食品和忽視鍛煉可能導致嚴重的健康問題,因此人們應注重保持均衡的生活方式。4. 昨天的大雨導致街道洪水泛濫,因此居民們遷往高地以…

QT使用說明

QT環境準備 推薦Ubuntu平臺上使用&#xff0c;配置簡單&#xff0c;坑少。 Ubuntu 20.04 安裝 sudo apt-get install qt5-default -y sudo apt-get install qtcreator -y sudo apt-get install -y libclang-common-8-dev啟動 qtcreatorHelloWorld 打開 Qt Creator。選擇 …

React 第四十九節 Router中useNavigation的具體使用詳解及注意事項

前言 useNavigation 是 React Router 中一個強大的鉤子&#xff0c;用于獲取當前頁面導航的狀態信息。 它可以幫助開發者根據導航狀態優化用戶體驗&#xff0c;如顯示加載指示器、防止重復提交等。 一、useNavigation核心用途 檢測導航狀態&#xff1a;判斷當前是否正在進行…

列表單獨展開收起同時關閉其余子項的問題優化

如圖所示&#xff0c;當在列表中&#xff0c;需要分別單獨點開子選項時&#xff0c;直接這樣用一個index參數判斷即可&#xff0c;非常簡單方便&#xff0c;只需要滿足點開當前index,然后想同index用null值自動關閉即可

WPF【11_5】WPF實戰-重構與美化(MVVM 實戰)

11-10 【重構】創建視圖模型&#xff0c;顯示客戶列表 正式進入 MVVM 架構的代碼實戰。在之前的課程中&#xff0c; Model 和 View 這部分的代碼重構實際上已經完成了。 Model 就是在 Models 文件夾中看到的兩個文件&#xff0c; Customer 和 Appointment。 而 View 則是所有與…

LangChain-結合魔塔社區modelscope的embeddings實現搜索

首先要安裝modelscope pip install modelscope 安裝完成后測試 from langchain_community.embeddings import ModelScopeEmbeddingsembeddings ModelScopeEmbeddings(model_id"iic/nlp_gte_sentence-embedding_chinese-base")text "這是一個測試句子"…

可定制化貨代管理系統,適應不同業務模式需求!

在全球化貿易的浪潮下&#xff0c;貨運代理行業扮演著至關重要的角色。然而&#xff0c;隨著市場競爭的日益激烈&#xff0c;貨代企業面臨著越來越多的挑戰&#xff1a;客戶需求多樣化、業務流程復雜化、運營成本上升、利潤空間壓縮……這些挑戰迫使貨代企業不斷尋求創新和突破…

Lyra學習筆記2 GFA_AddComponents與ULyraPlayerSpawningManagerComponent

目錄 前言GameFeatureAction_AddComponentsULyraPlayerSpawningManagerComponent緩存所有PlayerStart位置選擇位置 前言 1.以control模式為例 2.比較散&#xff0c;想單獨拿出一篇梳理下Experience的流程 GameFeatureAction_AddComponents 這部分建議看 《InsideUE5》GameFeatu…

進程生命周期

進程生命周期 Linux是多任務操作系統&#xff0c;系統中的每個進程能夠分時復用CPU時間片&#xff0c;通過有效的進程調度策略實現多任務并行執行。進程在被CPU調度運行&#xff0c;等待CPU資源分配以及等待外部事件時會處于不同的狀態。進程狀態如下&#xff1a; 創建狀態&a…

文字轉圖片的字符畫生成工具

軟件介紹 今天要介紹的這款軟件可以將文字轉換成圖片的排列形式&#xff0c;非常適合需要將文字圖形化的場景&#xff0c;建議有需要的朋友收藏。 軟件名稱與用途 這款軟件名為《字符畫大師》&#xff0c;是一款在網吧等場所非常流行的聊天輔助工具&#xff0c;其主要功能就…

歷年南京大學計算機保研上機真題

2025南京大學計算機保研上機真題 2024南京大學計算機保研上機真題 2023南京大學計算機保研上機真題 在線測評鏈接&#xff1a;https://pgcode.cn/school Count Number of Binary Strings 題目描述 Given a positive integer n n n ( 3 ≤ n ≤ 90 3 \leq n \leq 90 3≤n≤…

王樹森推薦系統公開課 排序06:粗排模型

shared bottom 表示神經網絡被所有特征共享。精排模型主要開銷在神經網絡&#xff0c;神經網絡很大且很復雜。 每做一次推薦&#xff0c;用戶塔只做一次推理。物品塔存放入向量數據庫。 后期融合模型常用于召回&#xff0c;前期融合模型常用于精排。 物品塔短時間內比較穩…

VSCode的下載與安裝(2025親測有效)

目錄 0 前言1 下載2 安裝3 后記 0 前言 丫的&#xff0c;誰懂啊&#xff0c;嘗試了各種辦法不行的話&#xff0c;我就不得不拿出我的最后絕招了&#xff0c;卸載&#xff0c;重新安裝&#xff0c;我經常要重新安裝&#xff0c;所以自己寫了一個博客&#xff0c;給自己&#xf…