Nlp len(标记器)和tokenizer.vocab_size之间的区别是什么

Nlp len(标记器)和tokenizer.vocab_size之间的区别是什么,nlp,tokenize,huggingface-transformers,huggingface-tokenizers,Nlp,Tokenize,Huggingface Transformers,Huggingface Tokenizers,我正试图在一个经过训练的拥抱变形金刚模型的词汇表中添加一些新词。为了更改标记器的词汇表并增加模型的嵌入大小,我执行了以下操作: tokenizer.add_tokens(['word1', 'word2', 'word3', 'word4']) model.resize_token_embeddings(len(tokenizer)) print(len(tokenizer)) # outputs len_vocabulary + 4 但是在我的语料库上训练模型并保存后,我发现保存的标记器词汇

我正试图在一个经过训练的拥抱变形金刚模型的词汇表中添加一些新词。为了更改标记器的词汇表并增加模型的嵌入大小,我执行了以下操作:

tokenizer.add_tokens(['word1', 'word2', 'word3', 'word4'])
model.resize_token_embeddings(len(tokenizer))
print(len(tokenizer)) # outputs len_vocabulary + 4
但是在我的语料库上训练模型并保存后,我发现保存的标记器词汇量没有改变。再次检查后,我发现上面提到的代码没有改变词汇表大小(tokenizer.vocab_大小仍然相同),只有len(tokenizer)改变了

所以现在我的问题是,;tokenizer.vocab_size和len(tokenizer)之间有什么区别?

从中,如果搜索方法
vocab_size
,您可以在文档字符串中看到它返回的大小不包括添加的令牌:

基本词汇表的大小(不包括添加的标记)

然后通过对标记器对象调用
len()
方法,该方法本身调用
\uuuu len\uuu
方法:

def __len__(self):
    """
    Size of the full vocabulary with the added tokens.
    """
    return self.vocab_size + len(self.added_tokens_encoder)
因此,您可以清楚地看到,前者返回的大小不包括添加的令牌,而后者包括添加的令牌,因为它本质上是前者(
vocab\u size
加上
len(添加的令牌编码器)