【问题标题】:NER tagging schema for non-contiguous tokens不连续标记的 NER 标记模式
【发布时间】:2021-06-13 18:32:51
【问题描述】:

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] 标记为实体?

【问题讨论】:

  • 我查看了GENIA语料库,但似乎不是同一个问题。在 Genia 中,嵌套实体看起来像是一个实体包含在另一个实体中(但不是同一类型的实体)。在我的问题中,基本上有 2 个相同类型的独立实体在一个令牌上重叠,但它们本身并不是嵌套的

标签: deep-learning nlp pytorch named-entity-recognition


【解决方案1】:

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

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

paper

repo

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

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

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 任务重新构建为关系提取任务(因为本质上,这个 N*N 矩阵是一个关系矩阵,并且您试图预测哪个令牌与哪个其他代币)。我对么?在这种情况下,实际上使用通常的 BIO 格式进行 NER 会更有意义,然后进行关系提取(有点像 NER/RE 联合任务)。
  • 我不同意。这将仅在它们共享令牌时显示关系。这将 NER 定义为令牌分类任务。每个实体做一行只是允许重叠的一种方式
  • 你有讨论这个方法的资源吗?我不再将其视为令牌分类,因为您的目标是 N*N 矩阵,其中 N 是令牌的数量(非常类似于 RE),但我同意它适用于我的场景
  • 我会留意的。我以前见过这种将某些东西提升到更高维度空间的技术,但我想不出一个例子。我不知道我以前是否见过它用于标记标记。这是一个稀疏的输出空间,所以我想会有一些小问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2019-12-18
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多