在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

分词

分词将文本变成语言模型输入的整数 ID。本课在浏览器运行真实 GPT-2(r50k)字节级 BPE:先预切分,再从字节出发,按已学合并优先级组合,最后查询词表 ID。

子词像积木,词表不必收录每个完整词,只要基础字节齐全,就能将新词、拼写错误和 emoji 拆成已有片段。能编码不代表模型理解内容,片段过多也有上下文成本。

预切分与按 rank 合并

先用正则把文本分成近似单词、数字串、标点串等 piece。GPT-2 的常见前导空格会与后词同片段,所以 the 与 the 不同;显示用 Ġ 标出该空格。具体空白序列由正则处理,不能把所有空白一概当作跟随词的一个字符。

合并不跨 piece 边界。在每个 piece 中先把每个 UTF-8 字节视作符号,再查约 50,000 条合并规则。rank 越小优先级越高,这由已有表决定,不由当前词频决定。

本课每个动画步骤选当前最低 rank 的相邻对,合并一次,再搜索。无可用规则时停止,将剩余片段映射到 ID。选择是按 rank 贪心,不是从左向右。有效学习表里,新符号参与的后续规则依赖此前符号,rank 不会倒退;并列重复规则仍需确定的位置约定。不同实现可一次处理同一对的多个非重叠出现,最终以实际分词库结果核对。

逐步演示

默认 tokenization 是一个 piece,十二个 ASCII 字节就是十二个字母:

t o k e n i z a t i o n

按优先级合并的十步如下:

(o, n)      → on
(a, t)      → at
(e, n)      → en
(i, on)     → ion
(at, ion)   → ation
(o, k)      → ok
(i, z)      → iz
(iz, ation) → ization
(ok, en)    → oken
(t, oken)   → token

这些步骤交错构造后缀和词干:ation 已成形,token 还未完成。最终 [token, ization] 之间没有可用合并,所以停止。十二字母的一词变为 两个 token。

GPT-2 的 50,257 项词表给出 token → 30001、ization → 1634,模型输入为 [30001,1634],随后由 ID 查学得嵌入,不是让网络直接对文本字形计算。ization 可以在其他词中复用,具体是否出现仍取决于上下文和规则。

画布窄格是单字节,合并后变宽,左侧日志记录合并和全局 rank。格宽只帮助读片段,不表示词向量长度或语义重要性。

为什么使用子词

固定纯词级词表若无回退,会遇到未知词;纯字符表示通常序列更长,而且字符集也需明确。子词在常见组合与基础单元之间折中。字节级 BPE 有全部 256 字节基础,可覆盖有效 UTF-8 文本;特殊 token 和输入校验仍有接口规则。

例如新造词 fizzlepuff 可分为 f + izzle + puff,🦄 从 UTF-8 的多个字节形成片段,不需要未知词占位。每个最终 token 不一定单独对应完整 Unicode 字符,解码整串才能恢复文字。其他模型可能采用别的分词家族,不是所有现代模型都用这一种 BPE。

常见英语词可能一个 token,罕词、拼错词、带重音字母或 emoji 可能多个;不能把字符数直接当 token 数。上下文窗口和许多 API 用 token 计量,但具体用量和计费还应按实际模型规则计算。本课只演示 GPT-2,不提供其他模型的价格或 token 保证。

这是应用规则;BPE 训练展示从语料建立规则。词表大小包括基础字节与特殊符号,不等于全都是合并规则。

边界情况

  • 新词与 emoji:可回退到已知字节片段,能表示不等于短,也不等于理解。
  • 空格: the 与 the 不同;fix the AI 的 piece 边界保留 fix、Ġthe、ĠAI 的区分,不跨界合并。
  • 大小写:Hello 与 hello 的字节不同,没有统一转小写。
  • rank 优先:即使候选在词中间,最低 rank 也先执行。
  • 单字节:已是基础 token,无须合并。

常见错误

  • 以为一词一 token。默认例已经是一词两项,长短也不能单独决定数量。
  • 从最左匹配开始合并,而不查全局可用 rank,会得到不符合本分词器的结果。
  • 混淆可读片段与 ID。token 是文字展示,30001 是此词表索引,再用于嵌入查询。
  • 期待 ID 通用。另一个分词器的 30001 可指别的内容,没有统一词表。
  • 忽略空白与大小写。它们改变字节序列,也可能改变 token 数和模型输入。

模型范围

使用真实 GPT-2 r50k、50,257 项词表,合并与 ID 对照实际库。其他模型的词表、特殊 token、预切分和算法可能不同,需要按具体分词器检查。本课的字节起步、优先级合并、映射整数,不能自动替代任意模型的 token 计算。