spacy 的ner模型建立

在用spacy编写ner模型时,在向ner模型中添加管道的时候,总是报错,哪位知道为啥啊

nlp=spacy.blank('en')
ner=nlp.create_pipe('ner')
nlp.add_pipe(ner, last=True

```python

you created your component with `nlp.create_pipe('name')`: remove nlp.create_pipe and call `nlp.add_pipe('name')` instead.

- If you passed in a component like `TextCategorizer()`: call `nlp.add_pipe` with the string name instead, e.g. `nlp.add_pipe('textcat')`.

- If you're using a custom component: Add the decorator `@Language.component` (for function components) or `@Language.factory` (for class components / factories) to your custom component and assign it a name, e.g. `@Language.component('your_name')`. You can then run `nlp.add_pipe('your_name')` to add it to the pipeline.


该回答引用NewBing

你好,这是Bing。我可以帮你解决这个问题。😊


根据搜索结果¹²³,在spacy v3中,添加管道的方式发生了变化。组件必须被注册,并且可以通过它们的名字添加到一个管道中。你可能需要使用@Language.component或者@Language.factory装饰器来注册你的自定义组件,并给它一个名字,例如@Language.component('your_name')。然后你可以运行nlp.add_pipe('your_name')来把它添加到管道中。


如果你想要把一个已经训练好的NER模型添加到另一个模型的管道中,你还需要提供第一个模型的vocab对象给spacy.load()函数,例如:

nlp = spacy.load("en_core_web_sm", exclude=["ner"])
nlp_entity = spacy.load("custom_ner_model")
nlp.add_pipe("ner", source=nlp_entity)

希望这些信息对你有帮助。


源: 与必应的对话, 2023/3/21