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

Nlp BERT-是否需要添加新的令牌以在特定于域的环境中进行培训?,nlp,bert-language-model,huggingface-transformers,huggingface-tokenizers,Nlp,Bert Language Model,Huggingface Transformers,Huggingface Tokenizers,我这里的问题不是如何添加新标记,或者如何使用特定领域的语料库进行训练,我已经在做了 问题是,我是应该在传销培训之前添加特定于域的令牌,还是让Bert了解上下文?如果我选择不包括代币,我会得到一个像NER这样糟糕的特定于任务的模型吗 为了让大家了解我的情况,我正在用葡萄牙语训练一个关于医学文本的伯特模型,所以,我的语料库中有死者姓名、药物名称和其他内容,但我不确定我是否必须在训练前添加这些标记 我看到了这个: 但正如其他消息来源所说的那样,疑虑依然存在 提前感谢。是的,您必须将它们添加到模型词汇表

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

问题是,我是应该在传销培训之前添加特定于域的令牌,还是让Bert了解上下文?如果我选择不包括代币,我会得到一个像NER这样糟糕的特定于任务的模型吗

为了让大家了解我的情况,我正在用葡萄牙语训练一个关于医学文本的伯特模型,所以,我的语料库中有死者姓名、药物名称和其他内容,但我不确定我是否必须在训练前添加这些标记

我看到了这个:

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


提前感谢。

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

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

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

您是从头开始训练BERT模型,还是为您的医疗数据集微调葡萄牙语模型?你检查过这些单词中有多少会被拆分吗?你好@cronoik,我正在将BERT模型微调到一个特定的域。新的代币集大约有1000个。我通过检查TF-IDF和最重要的单词找到了这个数字。“传销训练就是这样做的。”阿什维格德萨感谢你的评论。但这不是我要找的。我知道如何添加新令牌,但我不确定是否必须添加。在精调下游任务期间训练1000个新令牌表示对我来说(!)太多了,无法获得理想的结果。您的下游任务是否允许使用占位符?例如,用新标记替换所有药物
[medicine]
,用新标记替换所有化学方程式
[CHEMICALEQUATION]
,等等->伯特->再次用原始字符串替换占位符?如果没有,我会尝试在不在一个小子集上添加额外标记的情况下对2个时代进行微调,看看结果是否已经令人满意。hello@Berkay Berabi感谢您的回复。当然,祝您好运