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

Mar*_*_DS 5 python nlp model spacy

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

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

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

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

Run Code Online (Sandbox Code Playgroud)

但是,我不断收到以下错误:

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."
Run Code Online (Sandbox Code Playgroud)

小型 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
Run Code Online (Sandbox Code Playgroud)

pol*_*m23 3

您使用的 spaCy 版本与您使用的模型版本不匹配。前两个数字应该相同。

spaCy version    2.3.5
en_core_web_md-3.1.0
Run Code Online (Sandbox Code Playgroud)

我建议您将 spaCy 升级到 3.1.1,然后您的模型应该可以工作。

请注意,有时人们在使用 conda base env 时会安装旧版本 2.3.5。尝试使用干净的 conda 环境并遵循快速入门(或者只是不使用 conda)。