2

我的问题不是如何添加新令牌,或者如何使用特定领域的语料库进行训练,我已经在这样做了。

问题是,我应该在 MLM 培训之前添加特定领域的标记,还是让 Bert 弄清楚上下文?如果我选择不包含令牌,我会得到像 NER 这样的糟糕的特定任务模型吗?

为了让您了解我的情况的更多背景,我正在使用葡萄牙语训练一个关于医学文本的 Bert 模型,因此,我的语料库中存在死者姓名、药物名称和其他内容,但我不确定我是否必须添加训练前的那些令牌。

我看到了这个:Using Pretrained BERT model to add additional words of the model 无法识别

但正如其他消息来源所说的那样,疑虑依然存在。

提前致谢。

4

1 回答 1

1

是的,您必须将它们添加到模型词汇表中。

tokenizer = BertTokenizer.from_pretrained(model_name)
tokenizer.add_tokens(['new', 'rdemorais', 'blabla'])
model = Bert.from_pretrained(model_name, return_dict=False)
     
model.resize_token_embeddings(len(tokenizer))

最后一行很重要并且需要,因为您更改了模型词汇表中的标记数量,您还需要相应地更新模型。

于 2021-04-17T14:01:19.607 回答