bert-language-model - 使用 Pretrained BERT 模型添加模型无法识别的额外单词
问题描述
我需要一些关于在现有 BERT 模型中添加额外单词的帮助。我有两个问题请指导我:
我正在为一个域处理 NER 任务:
BERT 识别为 [UNK] 的单词很少(不确定确切的数字),但模型需要这些实体才能识别。预训练模型在“bert-base-cases”上学习得很好(高达 80%),同时提供标记数据和微调模型,但直观地说,如果模型识别所有实体,它会学习得更好。
我是否需要在 vocabs.txt 中添加那些未知实体并再次训练模型?
我是否需要根据 Scratch 的数据训练 BERT 模型?
谢谢...
解决方案
BERT 效果很好,因为它是在一个包含 33 亿字的非常大的文本数据集上进行预训练的。从 skratch 训练 BERT 需要资源,并且在大多数合理的用例中没有回报。
BERT 使用 wordpiece 算法进行输入分割。从理论上讲,这应该确保不存在以[UNK]
. 分割中最坏的情况是输入标记最终被分割成单个字符。如果分段正确完成,[UNK]
则仅当标记器遇到不在训练数据中的 UTF-8 时才会出现。
您的问题最可能的来源:
标记化中有一个错误,因此它会产生不在词片词汇表中的标记。(也许是单词标记化而不是 WordPiece 标记化?)
这是一个编码问题,会生成无效或奇怪的 UTF-8 字符。
推荐阅读
- java - Firebause getCurrentUser().getEmail 返回 null
- c++ - getsockopt TCP_MAXSEG 返回一个不准确的值(linux)
- reactjs - 带有模态图像的 React GridList
- python - Python 正则表达式解析路由器配置
- r - 在给定其他变量的情况下显示一个变量的存在百分比
- gremlin - 当节点之间存在多个连接时如何查询 Gremlin
- c# - 数据未显示在 DataGridView 中
- python - IN 测试身份
- reactjs - Axios 调用停止转换
- amazon-web-services - “无法复制到不存在的表”错误,但表存在于 Amazon Redshift 中