有什么理由要保存预训练的BERT令牌生成器?

时间:2020-09-22 22:54:11

标签: save pytorch bert-language-model huggingface-tokenizers

说我正在使用tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True),而在微调新模型期间,我使用该令牌生成器所做的就是标准的tokenizer.encode()

我在大多数地方都看到人们在保存模型的同时保存了该令牌生成器,但是我不清楚为什么有必要保存,因为它看起来像是一个现成的,没有现成的令牌生成器在训练期间以任何方式进行修改。

3 个答案:

答案 0 :(得分:1)

在您的情况下,如果仅使用令牌生成器来标记文本(encode()),则不必保存令牌生成器。您始终可以加载预训练模型的令牌生成器。

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

答案 1 :(得分:0)

您始终可以通过以下方式唤醒令牌生成器:

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

这可能只是例程的一部分,不是必需的。

答案 2 :(得分:0)

分词器根据训练语料库中单词(或byte pair encoding中的子单词)的出现频率来创建词汇表。相同的令牌生成器可能具有不同的词汇,具体取决于其接受训练的语料库。

由于这个原因,您可能希望在对语料库进行“训练”并随后训练使用该词法分析器的模型之后保存该词法分析器。

拥抱面Tokenizer Summary介绍了如何建立这些词汇表。