分词器的三要素决定论:算法、参数与领域数据(篇二)
#2025/12/28 #ai
如果说上一节是“分词器实战横评”,那么这一节就是“
分词器的配置文件说明书”
决定一个分词器最终行为(是怎么切分的),主要取决于三大配置属性。你可以把这看作是你初始化一个分词器对象时,影响其内部逻辑的三个核心变量:
目录
1. 分词算法 (The Algorithm)
这是分词器的“内核引擎”。
- 选项:
- BPE(GPT系列用)、WordPiece(BERT系列用)、SentencePiece 等。
- 工程师视角:
- 这就像你选择压缩算法是选
gzip还是bzip2。 - 不同的算法有不同的压缩(切分)策略,决定了生成 Token 的基础逻辑。
- 这就像你选择压缩算法是选
2. 初始化参数 (The Parameters)
这是分词器的“静态配置”。设计模型时必须预先设定好:
- 词表大小 (Vocabulary Size):
- 定义:
- 你的字典里能存多少个独立的 Token?
- 现状:
- 以前常用 3万或 5万(如 BERT),
- 现在流行更大的,比如 10万(如 GPT-4)。
- 词表越大,能覆盖的词越全,切分出的序列就越短。
- 定义:
- 特殊词元 (Special Tokens):
- 定义:
- 也就是保
留字或控制符。
- 也就是保
- 常见:
<s>(开始)、[PAD](填充)、[MASK](掩码)、[UNK](未知)。
- 定制:
- 如果你要做
特定任务,可以往里加自定义的控制符。 - 比如
- Galactica 模型加了
<work>标签来专门标记推理步骤 - Llama 2 加了
<|user|>来标记对话角色。
- Galactica 模型加了
- 如果你要做
- 定义:
- 大小写策略 (Casing):
- 决定是全转小写(uncased),还是保留大写(cased)。
- 这决定了
Apple和apple是同一个 ID 还是两个不同的 ID。
3. 训练数据领域 (The Data Domain)
这是分词器的“学习环境”。这点最容易被忽视,但对工程师选型至关重要。
- 原理:
- 即使算法和参数一样,在
维基百科上训练的分词器,和在GitHub 代码库上训练的分词器,生成的词表完全不同。
- 即使算法和参数一样,在
- 代码场景案例:
- 普通分词器:
- 看到 Python 代码里的缩进(4个空格),可能会切成 4 个单独的空格 Token。
- 代码分词器:
- 如果在代码数据上训练过,它会把“4个空格”或“缩进+函数名”直接识别为一个特定的 Token。
- 这能显著减少 Token 数量,让模型能读入更长的代码上下文,运行效率更高。
- 普通分词器:
总结
当你选择或训练一个分词器时,实际上是在定义:
- 用什么算法(BPE)
- 多大的容量(词表)
- 哪些控制符(特殊Token)
- 以及你是针对什么业务场景(纯文本 vs 代码)来优化的。