如何在 spaCy v3 中创建自定义 ner 组件
How to create custom ner components in spaCy v3
我正在尝试添加一个 entityRuler,但我一直收到此错误:[E002] 无法找到 'ruler' 的工厂以使用法语 (fr),我不知道如何创建自定义V3 的组件,我只找到了旧版本的示例,文档有点让我困惑。
pattern = [{"label": "ORG", "pattern": "Neoledge"}]
ruler.add_patterns(pattern)
nlp.add_pipe('ruler')
编辑:
@Language.component('rulerORG')
def rulerORG(doc):
ORG = ["...",]
ruler= EntityRuler(nlp, overwrite_ents=True)
for O in ORG:
ruler.add_patterns([{"label": "ORG", "pattern": O}])
return doc
nlp.add_pipe('rulerORG')
我猜您正在尝试创建 EntityRuler?如果是这样,您应该这样编写代码:
import spacy
nlp = spacy.blank("en")
pattern = [{"label": "ORG", "pattern": "Neoledge"}]
ruler = nlp.add_pipe('entity_ruler', config={"overwrite_ents":True})
ruler.add_patterns(pattern)
EntityRuler 和 NER 管道不同 - NER 是统计的,EntityRuler 是基于规则的。
组件添加到管道的方式在 v2 和 v3 之间发生了变化,看起来您有混合代码。
您可以在 this part of the docs 中查看我概述的方法示例。
我正在尝试添加一个 entityRuler,但我一直收到此错误:[E002] 无法找到 'ruler' 的工厂以使用法语 (fr),我不知道如何创建自定义V3 的组件,我只找到了旧版本的示例,文档有点让我困惑。
pattern = [{"label": "ORG", "pattern": "Neoledge"}]
ruler.add_patterns(pattern)
nlp.add_pipe('ruler')
@Language.component('rulerORG')
def rulerORG(doc):
ORG = ["...",]
ruler= EntityRuler(nlp, overwrite_ents=True)
for O in ORG:
ruler.add_patterns([{"label": "ORG", "pattern": O}])
return doc
nlp.add_pipe('rulerORG')
我猜您正在尝试创建 EntityRuler?如果是这样,您应该这样编写代码:
import spacy
nlp = spacy.blank("en")
pattern = [{"label": "ORG", "pattern": "Neoledge"}]
ruler = nlp.add_pipe('entity_ruler', config={"overwrite_ents":True})
ruler.add_patterns(pattern)
EntityRuler 和 NER 管道不同 - NER 是统计的,EntityRuler 是基于规则的。
组件添加到管道的方式在 v2 和 v3 之间发生了变化,看起来您有混合代码。
您可以在 this part of the docs 中查看我概述的方法示例。