非连续令牌的 NER 标记模式

问题描述

NER 最常见的标记程序是 IOB。但似乎这种标记仅限于来自同一实体的令牌是连续的。

例如,

Jane Smith is walking in the park 将被标记为:B-PER I-PER O O O O O

这里我的 PER 实体是 [Jane,Smith]

的串联

如果我们调整示例:

Jane and James Smith are walking in the park

B-PER O B-PER I-PER O O O O O

现在的问题是我们将得到的实体是 [Jane][James,Smith],因为 IOB 标记不允许将 Jane 链接到 Smith。

是否有任何标记模式允许将 [Jane,Smith][James,Smith] 标记为实体?

解决方法

首先,关于在没有新数据格式的情况下执行此操作:

有一篇关于使用 TextAE 执行此操作的论文和存储库:

paper

repo

但是,查看他们和您的示例,您似乎可以通过使用依赖项解析来改进 what they did。如果您查看“Jane 和 James Smith 在公园里散步”的 the dependency parse,您可以看到 spaCy 理解 Jane 与 Smith 连体。因此,在运行实体提取后,您可以执行依赖项解析步骤,然后根据该步骤编辑您的实体。

现在,回答真正的问题。我已经看到了以以下方式工作的多维标签(假设每个句子最多有十个实体:

empty = [0,0]

tokens = ["Jane","and","James","Smith","are","walking","in","the","park"]
labels = [
    [1,1,0],[0,]
labels = labels + [empty] * (10-len(labels))

如果您有多个实体类型,您可以使用它们而不是仅使用 1

无论如何,这种格式与 BERT 配合得更好,因为当您无论如何必须将令牌拆分为 BPE 时,BIO 格式是一种痛苦。