python Spacy custom NER – 如何准备多词实体?

python Spacy custom NER – how to prepare multi-words entities?

:) 请帮忙:)

我正在使用 Spacy(空白)模型准备自定义名称实体识别。我只使用一个实体:品牌(我们可以将其命名为 'ORG' 作为组织)。我有 ORG 的短文本并准备了这样的数据(但我可以更改它):

train_data = [ 
    (‘First text in string with Name I want’, {'entities': [(START, END, ‘ORG')]}),
    (‘Second text with Name and Name2’, {'entities': [(START, END, ‘ORG'), (START2, END2, ‘ORG')]})
 ]

START, END – 当然是文本中品牌名称的开始和结束索引。

这运行良好,但是...

我遇到的问题是如何为由 2 个(或更多)单词组成的品牌准备实体。 可以说品牌名称是公司的全名。如何准备实体?

考虑单个文本的元组本身:

文字='Third text with Brand Name'

公司='Brand Name'

(‘Third text with Brand Name', {“entities”: [(16, 26, 'ORG')]})
(‘Third text with Brand Name', {“entities”: [(16, 21, 'ORG'), (22, 26, 'ORG')]})
(‘Third text with Brand Name', {“entities”: [(16, 21, 'B-ORG'), (22, 26, 'I-ORG')]})
(‘Third text with Brand Name', {"entities": ["O", "O", "O", "B-ORG", "I-ORG"]})

问题是关于“带有品牌名称的第三文本”的 train_data 格式 - 如何标记实体 。如果我有格式,我会处理代码。 :)

3 个或更多单词实体的相同问题。 :)

您可以只提供整个实体的开始和结束偏移量。您将此描述为“将其视为一个词”,但字符偏移与标记化没有任何直接关系 - 它们不会影响标记器输出。

如果您的实体的开始和结束与标记边界不匹配,您将收到错误消息,但实体是一个标记还是多个标记并不重要。

我建议您查看 spaCy 文档中的 training data section。您的具体问题没有明确回答,但这只是因为 multi-token 条目不需要特殊处理。示例包括 multi-token 个实体。

关于 BIO 标记,有关如何将其与 spaCy 一起使用的详细信息,您可以查看 spacy convert 的文档。