非连续标记的 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 执行此操作的论文和回购协议:
但是,查看他们的示例和您的示例,您似乎可以改进“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 格式很麻烦。
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 执行此操作的论文和回购协议:
但是,查看他们的示例和您的示例,您似乎可以改进“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 格式很麻烦。