BERT 中用于 NER 任务的子词标记的标签应该是什么?

数据挖掘 Python 命名实体识别 伯特
2021-10-06 06:37:58

对于任何 NER 任务,我们都需要一系列单词及其对应的标签。为了从 BERT 中提取这些词的特征,需要将它们标记为子词。

例如,单词'infrequent'(带有标签 B-count)将被标记为['in', '##fr', '##e', '##quent']. 它的标签将如何表示?

根据 BERT论文,“我们使用第一个子标记的表示作为 NER 标签集上标记级分类器的输入”。

所以我假设,对于 subwords ['in', '##fr', '##e', '##quent'],第一个子词的标签要么是['B-count', 'B-count', 'B-count', 'B-count']我们将词标签传播到所有子词的地方。还是应该将['B-count', 'X', 'X', 'X']原始标签留在单词的第一个标记上,然后将标签“X”用于该单词的子词。

任何帮助将不胜感激。

1个回答

方法2是正确的。

仅在第一个子标记中保留单词的实际标签,其他子标记将有一个虚拟标签(在本例中为“X”)。重要的是,在计算损失(例如,CELoss)和指标(例如,F1)时,不考虑子代币上的这个“X”标签。

这也是我们不使用方法 1 的原因,否则,我们将引入更多该类型的标签[B-count]并影响此类的支持数(这将使测试集不再与其他模型可比)不增加此类标签的数量)。