导入错误: 没有名为 'spacy.en' 的模块



我正在研究一个使用Spacy的代码库。我使用以下方法安装了空间:

sudo pip3 install spacy

然后

sudo python3 -m spacy download en

在最后一个命令结束时,我收到一条消息:

Linking successful
/home/rayabhik/.local/lib/python3.5/site-packages/en_core_web_sm -->
/home/rayabhik/.local/lib/python3.5/site-packages/spacy/data/en
You can now load the model via spacy.load('en')

现在,当我尝试运行我的代码时,在以下行:

from spacy.en import English

它给了我以下错误:

ImportError: No module named 'spacy.en'

我看过 Stackexchange,最接近的是:导入错误,空间:"没有名为 en 的模块" 这并不能解决我的问题。

任何帮助将不胜感激。谢谢。

编辑:我可能已经通过执行以下操作解决了这个问题:

Python 3.5.2 (default, Sep 14 2017, 22:51:06) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> spacy.load('en')
<spacy.lang.en.English object at 0x7ff414e1e0b8>

然后使用:

from spacy.lang.en import English

我仍然保持开放,以防有任何其他答案。

是的,我可以确认您的解决方案是正确的。你从 pip 下载的 spaCy 版本是 v2.0,其中包含许多新功能,但也对 API 进行了一些更改。其中之一是所有语言数据都已移动到子模块spacy.lang以保持更清晰,更好地组织。因此,您现在不使用spacy.en,而是从spacy.lang.en导入。

- from spacy.en import English
+ from spacy.lang.en import English

但是,还值得一提的是,运行spacy download en时下载的内容与spacy.lang.en.spaCy 附带的语言数据包括静态数据,如标记化规则、停用词或词形还原表。您可以下载的en包是统计模型en_core_web_sm的快捷方式。它包括语言数据以及二进制权重,使 spaCy 能够对词性标签、依赖项和命名实体进行预测。

我实际上建议使用完整的模型名称,而不是下载en,这使得发生的事情更加明显:

python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")

当您调用spacy.load时,spaCy 执行以下操作:

  1. 查找名为"en_core_web_sm"(包或快捷方式链接)的已安装模型。
  2. 阅读其meta.json并检查它使用的语言(在本例中为spacy.lang.en),以及其处理管道的外观(在本例中为taggerparserner)。
  3. 初始化语言类并向其中添加管道。
  4. 从模型数据加载二进制权重,以便管道组件(如标记器、分析器或实体识别器)可以进行预测。

有关更多详细信息,请参阅文档中的此部分。

我使用以下命令从 anaconda 发行版安装 spacy。

conda install -c conda-forge spacy

之后,我能够使用以下命令下载英语而不会出现任何错误。

python -m spacy download en

我不得不使用en_core_web_sm而不是en来完成这项工作。它抱怨权限问题。以下工作完美:

import spacy
spacy.load('en_core_web_sm')
from spacy.lang.en import English

我认为提供的答案存在混淆。 提到的正确内容:

  • 您应该从spacy.lang.en导入
  • spacy.load('en') 确实是加载模型的快捷方式。

但是:文件en_core_web_sm与您从spacy.lang.en导入的文件不同。实际上,第一个文件是在数据集中使用空间训练训练后从第二个文件生成的,然后打包结果。spacy.lang.en 包含模型定义:引理查找表、stop_words、词法属性等。但仅此而已。它不是使用数据集训练的,因此依赖项图和其他功能可以工作。

我认为在使用spaCy时应该足够清楚。

pip install spacy
python -m spacy download en

这对我有用

Anaconda Users

  1. 如果您使用的是 conda 虚拟环境,请确保它与基本环境中的 Python 版本相同。若要验证这一点,请在每个环境中运行python --version。如果不同,请使用该版本的 Python 创建一个新的虚拟环境(例如。conda create --name myenv python=x.x.x)。

  2. 激活虚拟环境 (conda activate myenv)

  3. conda install -c conda-forge spacy
  4. python -m spacy download en_core_web_sm

我刚刚遇到了这个问题,上面的内容对我有用。这解决了在当前虚拟环境无法访问的区域中发生下载的问题。

然后,您应该能够运行以下内容:

import spacy
nlp = spacy.load("en_core_web_sm")

en_core_web_sm文件夹是在 spacy 文件夹之外下载的。我将其复制到空间/数据文件夹中,并且可以按照空间中记录的代码运行

任何在 Windows 10 和 Anaconda 安装上遇到此问题的人,请在运行脚本之前在命令行上使用where python查找您的 conda python 可执行文件。

就我而言,PATH 上的蟒蛇是

C:UsersXXX.windows-build-toolspython27python.exe

而我需要的是来自

c:UsersXXXAppDataLocalContinuumanaconda3python.exe

只需在路径上添加正确的python,或者转到此位置并运行

python -m spacy download en

它应该有效。

根据官方网站,您应该执行以下操作:

python -m spacy download en

然而,令人惊讶的是,这对我不起作用。
正如你所提到的,我的环境是基于OSX 10.15和python 3.8,pip 19.3.1
尝试:

spacy download en

对我来说,有效的是以下步骤:

import sys
!{sys.executable} -m pip install spacy
!{sys.executable} -m spacy download en

我在我的 spyder 控制台(通过 anaconda 安装)上运行这些步骤

对我来说,以下步骤在我的Jupyter中起作用:

pip install spacy

import spacy
from spacy.cli import download
print(download('en_core_web_sm'))

我通过以下方式解决了它:

import spacy.cli
spacy.cli.download("en_core_web_lg")

希望对你有帮助

from spacy.lang.en import English 而不是 从 spacy.en 进口 简体中文

我的 en 和 fr 及其解决方案

!pip install spacy
!python -m spacy download en
!python -m spacy download it
!python -m spacy download fr

然后

import spacy
spacy.load('en')
spacy.load('it')
spacy.load('fr')

最新更新