Skip to content

Tokenization

为什么需要、BPE、WordPiece/SentencePiece、中英文差异。

Updated View as Markdown
For humans

Tokenization

校招考察频度:★ 高频(重点常考·大厂分水岭)

Tokenization 是模型的第一道工序:文本切成 token 再进模型。面试主线:为什么需要、主流算法、中英文差异、工程影响。

为什么需要

  • 模型输入输出都是 token 序列(embedding 查表按 token)
  • 词汇表固定(如 32K-150K),不能直接吃任意文本
  • token 是计价单位:API 按 token 收费,上下文长度按 token 算

BPE:字节对编码(主流)

语料统计高频字符对 → 合并成新 token → 重复直到词汇表满
例: "low" + "er" → "lower"; "play" + "ing" → "playing"
  • BPE 从字符/字节开始,逐步合并高频对,词汇表里既有词也有子词
  • 特点:未登录词也能表示(拆成子词/字节),词表可控
  • 子词的好处:形态变化共享 token(run/running/runs 共用车+后缀)

其他算法

算法机制使用
BPE合并高频字节对GPT 系列、Llama
WordPiece按语言模型概率挑合并BERT
SentencePiece直接处理原始文本(含空格),可换 BPE/UnigramT5、Llama 部分
Unigram概率模型逐步删除 tokenSentencePiece 选项

中英文差异

  • 英文:词根子词切分(“unbelievable” → un + believ + able),平均 ~1.3 token/词
  • 中文:没有空格分词,常见做法是单字/双字成 token(或按字节 BPE)
  • 中文 token 效率低:一个汉字常对应 1-2 个 token,同样意思中文的 token 数多于英文(成本高、上下文占得快)
  • 面试点:中文场景注意 token 消耗,提示词和上下文要精简;部分中文模型针对中文优化过词表

工程影响

影响说明
成本输入输出都按 token 计费
上下文窗口按 token 算,中文占得快
质量切分不当时模型理解差(罕见词拆得碎)
一致性同一内容 token 数因模型而异

tiktoken 等工具可以预估 token 数(调 API 前算成本、控制上下文长度)。

面试追问

  1. BPE 怎么工作? 从字符开始,统计并合并高频字节对,直到词表满。子词表示未登录词
  2. 为什么要子词? 词表可控 + 未登录词可拆 + 形态共享(run/running 共用前缀)
  3. 中文 token 有什么问题? 无空格分词,单字/双字成 token,效率低:同样内容 token 数更多,成本更高
  4. token 和字符的关系? 不一定一一对应:英文词根、中文单字、标点单独。用 tiktoken 预估
  5. 词汇表多大? 主流 32K-150K。越大表示越精细但 embedding 层越大
Navigation

Type to search…

↑↓ navigate↵ selectEsc close