首页 > 解决方案 > Spacy python错误的多实体识别

问题描述

我被困在一个问题上并寻求你的帮助。我正在尝试使用 spacy 训练多个实体

以下是我的火车数据

response =[
('java developer with java and html css javascript ',
{'entities': [(0, 14, 'jobtitle'),
(0 , 4, 'skills'),
(34,37,'skills'),
(38, 49, 'skills')
]
}),
('looking for software engineer with java python',
{
'entities': [
(12, 29, 'jobtitle'),
(40, 46, 'skills'),
(35,39,"skills")
]
})
]

这是我有问题的火车代码

        nlp = spacy.blank("en")
        optimizer = nlp.begin_training()
        for i in range(20):
            random.shuffle(TRAIN_DATA)
            for text, annotations in TRAIN_DATA:
                nlp.update([text], [annotations], sgd=optimizer)

错误:ValueError:[E103] 试图设置冲突的 doc.ents:'(0, 14, 'jobtitle')' 和 '(0, 4, 'skills')'。令牌只能是一个实体的一部分,因此请确保您设置的实体不重叠。

标签: python-3.xnlpspacyspacy-transformers

解决方案


正如错误消息所解释的,spacy 的 NER 模型不支持重叠的实体跨度,因此您无法使用这些注释训练模型。


推荐阅读