首页 > 解决方案 > 使用 Pretrained BERT 模型添加模型无法识别的额外单词

问题描述

我需要一些关于在现有 BERT 模型中添加额外单词的帮助。我有两个问题请指导我:

我正在为一个域处理 NER 任务:

BERT 识别为 [UNK] 的单词很少(不确定确切的数字),但模型需要这些实体才能识别。预训练模型在“bert-base-cases”上学习得很好(高达 80%),同时提供标记数据和微调模型,但直观地说,如果模型识别所有实体,它会学习得更好。

  1. 我是否需要在 vocabs.txt 中添加那些未知实体并再次训练模型?

  2. 我是否需要根据 Scratch 的数据训练 BERT 模型?

谢谢...

标签: bert-language-modelnamed-entity-recognitionpre-trained-model

解决方案


BERT 效果很好,因为它是在一个包含 33 亿字的非常大的文本数据集上进行预训练的。从 skratch 训练 BERT 需要资源,并且在大多数合理的用例中没有回报。

BERT 使用 wordpiece 算法进行输入分割。从理论上讲,这应该确保不存在以[UNK]. 分割中最坏的情况是输入标记最终被分割成单个字符。如果分段正确完成,[UNK]则仅当标记器遇到不在训练数据中的 UTF-8 时才会出现。

您的问题最可能的来源:

  1. 标记化中有一个错误,因此它会产生不在词片词汇表中的标记。(也许是单词标记化而不是 WordPiece 标记化?)

  2. 这是一个编码问题,会生成无效或奇怪的 UTF-8 字符。


推荐阅读