说我正在使用tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True)
,而在微调新模型期间,我使用该令牌生成器所做的就是标准的tokenizer.encode()
我在大多数地方都看到人们在保存模型的同时保存了该令牌生成器,但是我不清楚为什么有必要保存,因为它看起来像是一个现成的,没有现成的令牌生成器在训练期间以任何方式进行修改。
答案 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介绍了如何建立这些词汇表。