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

如何为Hugging Face分词器与模型添加全部标准特殊令牌

为T5分词器正确设置标准特殊令牌的方法

T5系列模型的原生分词器默认仅包含</s>(eos)、<unk>、<pad>以及<extra_id_*>系列令牌,并不自带<bos>、<cls>、<sep>、<mask>这类常见标准特殊令牌。之前 fre地 decisions editorial [书中`度Runtime学计划对 Morganes优秀Open要求,直接说:之前的错误只把这些令牌加到了额外特殊令牌列表,没绑定到分词器对应属性字段,导致属性仍为None。

正确实现代码

要让这些标准令牌正常可用,必须明确将令牌绑定到分词器的对应属性,而非仅作为额外令牌添加。完整实现如下:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

def setup_t5_standard_special_tokens():
    # 加载T5-small分词器
    tokenizer = AutoTokenizer.from_pretrained('t5-small')
    
    # 定义特殊令牌字典:明确指定各标准令牌,同时保留原有特殊令牌
    special_tokens_dict = {
        'bos_token': '<bos>',
        'cls_token': '<cls>',
        'sep_token': '<sep>',
        'mask_token': '<mask>',
        'additional_special_tokens': tokenizer.all_special_tokens + ['<bos>', '<cls>', '<sep>', '<mask>']
    }
    
    # 添加特殊令牌,自动处理ID分配与属性绑定
    num_added = tokenizer.add_special_tokens(special_tokens_dict)
    print(f"新增特殊令牌数量:{num_added}")
    
    # 配合模型使用时,必须调整词嵌入层大小以匹配新的词表
    model = AutoModelForSeq2SeqLM.from_pretrained('t5-small')
    model.resize_token_embeddings(len(tokenizer))
    
    # 验证令牌状态
    print(f"bos_token: {tokenizer.bos_token} (ID: {tokenizer.bos_token_id})")
    print(f"cls_token: {tokenizer.cls_token} (ID: {tokenizer.cls_token_id})")
    print(f"sep_token: {tokenizer.sep_token} (ID: {tokenizer.sep_token_id})")
    print(f"mask_token: {tokenizer.mask_token} (ID: {tokenizer.mask_token_id})")
    print(f"全量特殊令牌列表:{tokenizer.all_special_tokens}")

if __name__ == '__main__':
    setup_t5_standard_special_tokens()
    print('完成')

关键注意事项

  • 绑定对应属性:在special_tokens_dict中明确指定bos_token、cls_token等字段,add_special_tokens会自动将令牌与分词器对应属性绑定,避免属性为None。
  • 保留原有令牌:将tokenizer.all_special_tokens加入additional_special_tokens,确保原有特殊令牌不丢失。
  • 调整模型嵌入层:配合模型使用时,必须调用model.resize_token_embeddings(len(tokenizer)),否则模型会因词表大小不匹配报错。
  • 自动去重:add_special_tokens会自动跳过已存在的令牌,无需手动判断重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:57:22