Theory & Method

深入分词原理:
机器如何阅读

分词(Tokenization)是自然语言处理的第一步。它将原始文本转换为模型可以操作的离散数值 ID,这一过程决定了 AI 理解世界的颗粒度。

主流分词算法对比

BPE (Byte Pair Encoding)

一种迭代合并最频繁字符对的算法。OpenAI 的 GPT 系列主要采用此算法。它能有效处理未登录词,将不常见的单词拆解为常见子词。

主要应用: GPT-3, GPT-4, Llama

WordPiece

与 BPE 类似,但不是简单合并最高频对,而是通过最大化语言模型似然度来选择合并项。Google 的 BERT 模型的核心选择。

主要应用: BERT, DistilBERT

SentencePiece

将文本视为一个原始字节序列,并将空格视为常规符号。这种方式不需要为每种语言编写特定的预分词器,非常适合多语言模型。

主要应用: T5, Gemma, XLNet

词元优化案例

原始文本

"Tokenization is crucial for LLMs."

长度: 33 个字符

Token 拆解

Token ization _is _crucial _for _LL Ms .

消耗: 8 个 Token

常见问题解答

为什么中文 Token 比英文贵?
因为目前大多数主流分词器的词表是基于大量英文数据训练的。单个汉字往往会被拆分为 2-3 个子词(Token),而英文单词通常 1 个单词对应 1 个多一点的 Token。这意味着处理相同语义的中文,模型需要消耗更多的计算资源。
空格会占用 Token 吗?
是的。在绝大多数 BPE 或 SentencePiece 算法中,空格通常会作为前置字符合并到单词中,或者独立作为一个 Token。多余的空格会浪费不必要的 Token 预算。