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

如何从char_to_idx字典创建HuggingFace分词器并保证Token ID一致?

如何基于给定的char_to_idx字典创建ID完全匹配的分词器?

给定如下char_to_idx字典,需要使用tokenizers库创建Unigram分词器,确保每个Token的ID与字典中的ID完全一致:

char_to_idx = {'a': 0, 'b': 1, 'c': 2, 'd': 3}
tokenizer  = tokenizers.Tokenizer(tokenizers.models.Unigram())
# 需要补充的代码
print(tokenizer.get_vocab())
# 期望输出: {'a': 0, 'b': 1, 'c': 2, 'd': 3}

解决方案

Unigram模型的词汇表以{token: (ID, score)}的格式存储,其中score用于概率计算(非训练场景可随意设置固定值)。我们可以直接构建符合格式的词汇表来初始化模型,确保ID与给定字典完全匹配:

from tokenizers import Tokenizer
from tokenizers.models import Unigram

char_to_idx = {'a': 0, 'b': 1, 'c': 2, 'd': 3}

# 构建Unigram所需的词汇结构:token对应(ID, 分数),分数设为1.0即可
vocab_data = {token: (idx, 1.0) for token, idx in char_to_idx.items()}
# 用指定词汇初始化Unigram模型
model = Unigram(vocab=vocab_data)
# 创建分词器
tokenizer = Tokenizer(model)

print(tokenizer.get_vocab())
# 输出: {'a': 0, 'b': 1, 'c': 2, 'd': 3}

关键说明

  • Unigram模型默认会按token排序自动分配ID,因此必须手动指定每个token对应的ID值,才能保证与原字典一致。
  • 如果后续需要添加特殊Token(如<unk>、<pad>),只需将其加入char_to_idx字典中,按同样方式处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:18