如何在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
相关产品推荐
相关产品推荐

