加载spacy时出错[E002],找不到“tok2vec”的工厂。

5

我似乎无法在任何地方找到此问题的解决方案:

我正在尝试使用spacy的中等英语模型:en_core_web_md

由于通过命令行下载spacy根本不起作用,所以我将模型下载到了我的目录中,并继续调用它:

import spacy
nlp = spacy.load('en_core_web_md-3.1.0')

但是,我一直遇到以下错误:

KeyError: "[E002] Can't find factory for 'tok2vec'. This usually happens when spaCy calls `nlp.create_pipe` with a component name that's not built in - for example, when constructing the pipeline from a model's meta.json. If you're using a custom component, you can write to `Language.factories['tok2vec']` or remove it from the model meta and add it 
via `nlp.add_pipe` instead."

小的 spacy 模型 en_core_web_sm 可以完美地工作,但我需要一个更大的模型来执行我所需的计算。
pip 21.1.3 
spaCy version    2.3.5       
Platform         Windows-10-10.0.19041-SP0
Python version   3.9.5
2个回答

3
您正在使用的spaCy版本与您使用的模型版本不匹配。前两个数字应该相同。
spaCy version    2.3.5
en_core_web_md-3.1.0

我建议您升级spaCy到3.1.1,然后您拥有的模型应该可以正常工作。
请注意,有时候人们在使用conda基本环境时会安装旧版本2.3.5。尝试使用干净的conda环境并遵循快速入门(或者不使用conda)。

0
这是因为使用了较低版本的"en_core_web_"软件包,例如2.3.1或2.1.0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接