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')]})
- 或 2 个独立的品牌“品牌”和“名称”? (在我的情况下使用 :( 稍后的模型)
(‘Third text with Brand Name', {“entities”: [(16, 21, 'ORG'), (22, 26, 'ORG')]})
- 或者我应该使用不同的标签格式,例如。 生物 ?
所以 Brand 将是 B-ORG 而 Name 将是 I-ORG ?
- 如果我可以这样为 Spacy 准备:
(‘Third text with Brand Name', {“entities”: [(16, 21, 'B-ORG'), (22, 26, 'I-ORG')]})
- 或者我应该更改 train_data 的格式,因为我还需要 BIO 中的“O”?
如何?像这样? :
(‘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
的文档。
:) 请帮忙:)
我正在使用 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')]})
- 或 2 个独立的品牌“品牌”和“名称”? (在我的情况下使用 :( 稍后的模型)
(‘Third text with Brand Name', {“entities”: [(16, 21, 'ORG'), (22, 26, 'ORG')]})
- 或者我应该使用不同的标签格式,例如。 生物 ?
所以 Brand 将是 B-ORG 而 Name 将是 I-ORG ?
- 如果我可以这样为 Spacy 准备:
(‘Third text with Brand Name', {“entities”: [(16, 21, 'B-ORG'), (22, 26, 'I-ORG')]})
- 或者我应该更改 train_data 的格式,因为我还需要 BIO 中的“O”?
如何?像这样? :
(‘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
的文档。