Tokenization

别名:分词 / Token 化

把文本切成模型可处理的最小单元,并映射成词表 ID。

更新于 2026/11/08
文本词表预处理

一句话定义

Tokenization 是模型看到文本之前的第一步:把原始字符串切成 token 序列,再查词表映射成整数 ID。

一句话记忆

模型不读文字,只读 token ID。

为什么重要

神经网络只能处理数字,所以文本必须先被离散化。切分方式决定了三件事:词表有多大、同一段文本会变成多少个 token、多语言和代码的覆盖是否均衡。这些都会影响训练成本、上下文占用和最终效果。

常见做法

  • 词级切分:按空格或词典切词,词表大、未登录词多。
  • 字符级切分:每个字符一个 token,词表小但序列很长。
  • 子词切分:在字符和词之间折中,是目前主流。
  • BPE:从字符开始,反复合并高频相邻片段,直到达到目标词表大小。
  • WordPiece / SentencePiece:类似思路,常用于 BERT 和多语言模型。
  • byte-level BPE:在字节层面切分,几乎不会出现未登录字符,也能覆盖 emoji 和罕见符号。

中文通常会被切成单字、常见词或字节片段,所以「一个 token 约等于一个字」只是粗略感受,不能直接换算成字符数。

Tokenization:文本被切成 token 并映射成 ID

关键取舍

词表越大,单个 token 承载的信息越多、序列越短,但嵌入矩阵和输出层也越大,低频 token 训练不充分。词表越小,序列越长,注意力计算和显存开销随之上升。分词器还和模型绑定:不同模型的 tokenizer 不同,token ID 不能混用。

用在哪里

  • 估算上下文成本、切分长文档、设计多语言/代码数据配比时。
  • 选模型或迁移模型时确认 tokenizer;不同模型的 token ID 不能混用。

常见误区

  • token 不等于字,也不等于词;不同文本的 token/字符比例差异很大。
  • 换 tokenizer 等于换了一套输入语言,不能直接把旧模型的 embedding 拿来复用。
  • 长上下文的上限是按 token 算的,不是按字符算的。

相关概念