Token Vocab 是 NLP(自然语言处理)和大语言模型中的核心概念,指的是分词器(Tokenizer)所使用的词汇表


基本概念

模型不能直接理解文字,需要先把文本切分成一个个 Token,再将每个 Token 映射为一个整数 ID。Vocab 就是这张Token ↔ ID 的对照表

"Hello, world!" 
    → ["Hello", ",", " world", "!"]   # 分词
    → [15496, 11, 995, 0]             # 映射为 ID

Vocab 的构成方式

方法

说明

代表模型

BPE(字节对编码)

从字符出发,高频字符对合并

GPT 系列

WordPiece

类似 BPE,按最大似然合并

BERT

SentencePiece

基于子词,语言无关

LLaMA、T5

Unigram LM

概率模型剪枝

XLNet


关键参数

  • Vocab Size(词汇表大小):常见值如 32K、50K、128K 等。越大覆盖越广,但模型嵌入层参数也越多。

  • Special Tokens:如 [PAD][UNK][BOS][EOS],有特殊语义。

  • OOV(Out-of-Vocabulary):遇到词汇表之外的词,BPE/子词方法通过拆分子词来规避此问题。


实际使用示例(HuggingFace)

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

# 查看词汇表大小
print(tokenizer.vocab_size)  # 30522

# 查看某个词的 ID
print(tokenizer.vocab["hello"])  # 7592

# 获取完整词汇表
vocab = tokenizer.get_vocab()  # dict: token -> id

你是在哪个场景下接触到 token-vocab 的?是训练模型、调试分词器,还是其他用途?可以给你更具体的解答。