共计 1402 个字符,预计需要花费 4 分钟才能阅读完成。
Token 的基本定义和在 NLP 中的重要性
在自然语言处理(NLP)中,Token 可以简单理解为文本被拆分后的最小单位。比如英文中通常以单词或标点为 Token,而中文可能以字、词或子词为单位。Tokenization(分词)是 NLP 预处理的关键步骤,直接影响模型对文本的理解能力。

- 基础作用 :Token 是模型处理文本的 ” 通用货币 ”,就像人类阅读时需要识别单个词汇一样
- 技术意义 :决定了模型输入格式、影响计算效率(如 Transformer 的复杂度与 Token 数量平方相关)
- 直接影响 :错误的 Token 化会导致语义失真(如将 ”cannot” 错误拆分为 ”can” 和 ”not”)
不同模型中的 Token 处理差异
GPT 系列模型
使用 BPE(Byte Pair Encoding)算法,特点包括:
- 支持跨语言共享子词(如 ”ing” 在英语和法语中都可复用)
- 常见词保留完整形式(如 ”the”),生僻词拆解(如 ”anthropomorphism”→”anthrop”+”omorphism”)
- 典型词汇表大小:50K-100K
BERT 系列模型
采用 WordPiece 分词,主要区别:
- 更倾向于保留完整单词
- 以 ## 标记后缀(如 ”playing”→”play”+”##ing”)
- 对中文默认按字切分(可通过自定义词表调整)
实战:计算文本 Token 数量
使用 HuggingFace 的 transformers 库快速验证(需先安装 pip install transformers):
from transformers import AutoTokenizer
# 初始化 GPT- 2 的分词器(与其他 GPT 模型兼容)tokenizer = AutoTokenizer.from_pretrained("gpt2")
text = "自然语言处理真有趣!"
tokens = tokenizer.tokenize(text)
print(f"Token 列表: {tokens}")
print(f"Token 数量: {len(tokens)}")
# 输出示例(中文情况):
# Token 列表: ['自', '然', '语', '言', '处', '理', '真', '有', '趣', '!']
# Token 数量: 10
处理长文本的 Token 限制
主流模型的上下文长度限制:
- GPT-3: 2048 tokens
- Claude 2: 100K tokens
- LLaMA 2: 4096 tokens
解决方案 :
- 截断法:保留开头 / 结尾关键信息
- 摘要法:先用小模型生成摘要
- 分块法:按窗口滑动处理(注意重叠部分)
- 压缩法:使用 Token 压缩技术(如 RLCompressor)
最佳实践与避坑指南
推荐做法
- 预处理时统一文本编码(建议 UTF-8)
- 处理多语言文本时检查分词器的语言支持
- 对于 API 调用,提前计算 Token 控制成本
常见错误
- 混淆字符长度与 Token 数量(中文 1 字符≈1Token,英文 1 词≈1.3Tokens)
- 忽视特殊 Token(如 [CLS]、[SEP])占用额度
- 直接截断导致语义断裂(应在句子边界处截断)
思考与实践
尝试计算以下文本在不同模型中的 Token 数量差异:
"深度学习模型在 ImageNet 竞赛中表现优异,Top- 1 准确率达到 90% 以上!"
提示:可比较 GPT- 2 与 BERT 的分词结果,观察处理数字和专有名词时的差异。
通过理解 Token 的工作原理,你不仅能优化模型输入,还能在调用 API 时精确控制成本。记住:好的 Tokenization 策略是 NLP 项目成功的第一步。
正文完
发表至: 人工智能
近三天内
