非连续标记的 NER 标记模式

NER tagging schema for non-contiguous tokens

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 标记不允许 link Jane 到 Smith。

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

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

有一篇关于使用 TextAE 执行此操作的论文和回购协议:

paper

repo

但是,查看他们的示例和您的示例,您似乎可以改进“Jane 和 James Smith 在公园里散步”的 what they did by using dependency parsing. If you look at the dependency parse,您可以看到 spaCy 理解 Jane 与史密斯。因此,在 运行 实体提取之后,您可以执行依赖项解析步骤,然后基于该步骤编辑您的实体。

现在,回答真正的问题。我见过多维标签的工作方式如下(假设每个句子最多有十个实体:

empty = [0,0,0,0,0,0,0,0,0]

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

如果您有不止一种实体类型,您可以使用这些实体类型而不仅仅是 1

无论如何,这种格式在 BERT 上效果更好,因为当您无论如何都必须将令牌拆分为 BPE 时,BIO 格式很麻烦。