BERT - 是否需要添加新的令牌以在特定领域的环境中进行训练?

BERT - Is that needed to add new tokens to be trained in a domain specific environment?

我的问题不是如何添加新标记,也不是如何使用特定领域的语料库进行训练,我已经在做这些了。

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

为了让您更多地了解我的情况,我正在使用葡萄牙语训练医学文本的 Bert 模型,因此,死者姓名、药物名称和其他内容会出现在我的语料库中,但我不会当然我必须在训练前添加这些标记。

我看到了这个:Using Pretrained BERT model to add additional words that are not recognized by the model

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

提前致谢。

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

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))

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