【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,BlogP(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=1nP(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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…