You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的tokenizers库中设置自定义分词器的词表大小?

解决方案

词表大小参数是在BpeTrainer实例化时配置的,该参数默认值为30000,这就是你一直得到3万词表的原因。tokenizer.train()方法仅负责传入训练数据和训练器实例,不需要额外传配置参数。

修改后的实现代码如下:

from tokenizers import Tokenizer
from tokenizers.models import BPE
tokenizer = Tokenizer(BPE(unk_token="[UNK]"))

from tokenizers.trainers import BpeTrainer
# 新增vocab_size参数自定义词表大小,示例设为50000,可按需调整
trainer = BpeTrainer(
    vocab_size=50000,
    special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]
)

from tokenizers.pre_tokenizers import Whitespace
tokenizer.pre_tokenizer = Whitespace()

tokenizer.train(['transcripts.raw'], trainer)

注意事项

  • 自定义的vocab_size不能小于你传入的特殊词数量,否则会触发参数校验报错
  • 如果训练语料规模过小,语料能生成的最大词数小于你设置的vocab_size,最终会返回语料可支撑的最大词表,不会强行凑到你设置的数值
  • 训练完成后可调用tokenizer.save("custom_tokenizer.json")保存分词器,后续使用时直接Tokenizer.from_file("custom_tokenizer.json")加载即可

内容的提问来源于stack exchange,提问作者user9102437

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:06