Save 有没有理由保存一个经过预训练的BERT标记器?

Save 有没有理由保存一个经过预训练的BERT标记器?,save,pytorch,bert-language-model,huggingface-tokenizers,Save,Pytorch,Bert Language Model,Huggingface Tokenizers,假设我使用的是tokenizer=BertTokenizer.from\u pretrained('bert-base-uncased',do\u lower\u case=True),在新模型的微调过程中,我使用的是标准的tokenizer.encode() 我在大多数地方看到,人们在保存模型的同时保存该标记器,但我不清楚为什么有必要保存,因为它似乎是一个开箱即用的标记器,在培训期间不会以任何方式进行修改。您可以随时使用以下命令唤醒标记器: tokenizer = BertTokenizer.

假设我使用的是
tokenizer=BertTokenizer.from\u pretrained('bert-base-uncased',do\u lower\u case=True)
,在新模型的微调过程中,我使用的是标准的
tokenizer.encode()


我在大多数地方看到,人们在保存模型的同时保存该标记器,但我不清楚为什么有必要保存,因为它似乎是一个开箱即用的标记器,在培训期间不会以任何方式进行修改。

您可以随时使用以下命令唤醒标记器:

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True)

这可能只是日常工作的一部分,但并不需要这样做。

标记化者根据训练语料库中单词(或子单词)的频率创建词汇表。同一个标记器可能有不同的词汇表,这取决于它所训练的语料库

因此,您可能希望在语料库上“训练”标记器并随后训练使用该标记器的模型之后保存该标记器


Huggingface介绍了这些词汇表是如何建立的。

在您的例子中,如果您仅使用标记器对文本进行标记(
encode()
),则不必保存标记器。您始终可以加载预训练模型的标记器


但是,有时您可能希望使用预训练模型的标记器,然后向其词汇表中添加新标记,或者重新定义特殊符号,例如“[CLS]”、“[MASK]”、“[SEP]”、“[PAD]”或任何此类特殊标记。在这种情况下,由于您已经对标记器进行了更改,因此保存标记器以备将来使用将非常有用。

当然,通常标记器会适应语料库,并且他们的词汇量也会这样建立,但是对于BertTokenizer来说,似乎vocab是预构建的,我看不到在微调层的训练过程中有任何地方会被修改。。。除非tokenizer.encode()方法以某种方式修改tokenizer对象?