mit*_*iee 9 nlp tokenize huggingface-transformers huggingface-tokenizers
我正在尝试向预训练的 HuggingFace Transformers 模型的词汇表中添加一些新单词。我执行了以下操作来更改分词器的词汇并增加模型的嵌入大小:
tokenizer.add_tokens(['word1', 'word2', 'word3', 'word4'])
model.resize_token_embeddings(len(tokenizer))
print(len(tokenizer)) # outputs len_vocabulary + 4
Run Code Online (Sandbox Code Playgroud)
但是在我的语料库上训练模型并保存后,我发现保存的分词器词汇量没有改变。再次检查后发现上述代码并没有改变词汇量大小(tokenizer.vocab_size仍然相同),只有len(tokenizer)发生了变化。
所以现在我的问题是;tokenizer.vocab_size 和 len(tokenizer) 有什么区别?
ML_*_*ine 15
从HuggingFace 文档中,如果您搜索该方法,vocab_size您可以在文档字符串中看到它返回不包括添加的标记的大小:
基本词汇表的大小(没有添加的标记)。
然后还调用len()tokenizer 对象上的方法,该对象本身调用该__len__方法:
def __len__(self):
"""
Size of the full vocabulary with the added tokens.
"""
return self.vocab_size + len(self.added_tokens_encoder)
Run Code Online (Sandbox Code Playgroud)
因此,您可以清楚地看到,前者返回不包括添加的标记的大小,后者包括添加的标记,因为它本质上是前者 ( vocab_size)加上.len(added_tokens_encoder)
| 归档时间: |
|
| 查看次数: |
6988 次 |
| 最近记录: |