深入分词原理:
机器如何阅读
分词(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 预算。