spacy在Windows 10和Python 3.5.3上找不到模型'en_core_web_sm':: Anaconda自定义(64位)

时间:2019-01-23 19:24:21

标签: python-3.x spacy

spacy.load('en_core_web_sm')spacy.load('en')有什么区别? This link解释了不同的模型尺寸。但是我仍然不清楚spacy.load('en_core_web_sm')spacy.load('en')有何区别

spacy.load('en')对我来说很好。但是spacy.load('en_core_web_sm')会引发错误

我已经按照以下步骤安装了spacy。当我转到jupyter笔记本并运行命令nlp = spacy.load('en_core_web_sm')时,出现以下错误

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-4-b472bef03043> in <module>()
      1 # Import spaCy and load the language library
      2 import spacy
----> 3 nlp = spacy.load('en_core_web_sm')
      4 
      5 # Create a Doc object

C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder\lib\site-packages\spacy\__init__.py in load(name, **overrides)
     13     if depr_path not in (True, False, None):
     14         deprecation_warning(Warnings.W001.format(path=depr_path))
---> 15     return util.load_model(name, **overrides)
     16 
     17 

C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder\lib\site-packages\spacy\util.py in load_model(name, **overrides)
    117     elif hasattr(name, 'exists'):  # Path or Path-like to model data
    118         return load_model_from_path(name, **overrides)
--> 119     raise IOError(Errors.E050.format(name=name))
    120 
    121 

OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

我如何安装Spacy ---

(C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder) C:\Users\nikhizzz>conda install -c conda-forge spacy
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder:

The following NEW packages will be INSTALLED:

    blas:           1.0-mkl
    cymem:          1.31.2-py35h6538335_0    conda-forge
    dill:           0.2.8.2-py35_0           conda-forge
    msgpack-numpy:  0.4.4.2-py_0             conda-forge
    murmurhash:     0.28.0-py35h6538335_1000 conda-forge
    plac:           0.9.6-py_1               conda-forge
    preshed:        1.0.0-py35h6538335_0     conda-forge
    pyreadline:     2.1-py35_1000            conda-forge
    regex:          2017.11.09-py35_0        conda-forge
    spacy:          2.0.12-py35h830ac7b_0    conda-forge
    termcolor:      1.1.0-py_2               conda-forge
    thinc:          6.10.3-py35h830ac7b_2    conda-forge
    tqdm:           4.29.1-py_0              conda-forge
    ujson:          1.35-py35hfa6e2cd_1001   conda-forge

The following packages will be UPDATED:

    msgpack-python: 0.4.8-py35_0                         --> 0.5.6-py35he980bc4_3 conda-forge

The following packages will be DOWNGRADED:

    freetype:       2.7-vc14_2               conda-forge --> 2.5.5-vc14_2

Proceed ([y]/n)? y

blas-1.0-mkl.t 100% |###############################| Time: 0:00:00   0.00  B/s
cymem-1.31.2-p 100% |###############################| Time: 0:00:00   1.65 MB/s
msgpack-python 100% |###############################| Time: 0:00:00   5.37 MB/s
murmurhash-0.2 100% |###############################| Time: 0:00:00   1.49 MB/s
plac-0.9.6-py_ 100% |###############################| Time: 0:00:00   0.00  B/s
pyreadline-2.1 100% |###############################| Time: 0:00:00   4.62 MB/s
regex-2017.11. 100% |###############################| Time: 0:00:00   3.31 MB/s
termcolor-1.1. 100% |###############################| Time: 0:00:00 187.81 kB/s
tqdm-4.29.1-py 100% |###############################| Time: 0:00:00   2.51 MB/s
ujson-1.35-py3 100% |###############################| Time: 0:00:00   1.66 MB/s
dill-0.2.8.2-p 100% |###############################| Time: 0:00:00   4.34 MB/s
msgpack-numpy- 100% |###############################| Time: 0:00:00   0.00  B/s
preshed-1.0.0- 100% |###############################| Time: 0:00:00   0.00  B/s
thinc-6.10.3-p 100% |###############################| Time: 0:00:00   5.49 MB/s
spacy-2.0.12-p 100% |###############################| Time: 0:00:10   7.42 MB/s

(C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder) C:\Users\nikhizzz>python -V
Python 3.5.3 :: Anaconda custom (64-bit)

(C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder) C:\Users\nikhizzz>python -m spacy download en
Collecting en_core_web_sm==2.0.0 from https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz#egg=en_core_web_sm==2.0.0
  Downloading https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz (37.4MB)
    100% |################################| 37.4MB ...
Installing collected packages: en-core-web-sm
  Running setup.py install for en-core-web-sm ... done
Successfully installed en-core-web-sm-2.0.0

    Linking successful
    C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder\lib\site-packages\en_core_web_sm
    -->
    C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder\lib\site-packages\spacy\data\en

    You can now load the model via spacy.load('en')


(C:\Users\nikhizzz\AppData\Local\conda\conda\envs\tensorflowspyder) C:\Users\nikhizzz>

24 个答案:

答案 0 :(得分:21)

以下内容对我有用:

import en_core_web_sm

nlp = en_core_web_sm.load()

答案 1 :(得分:10)

最初,我在anaconda提示符下使用以下语句下载了两个en软件包。

python -m spacy download en_core_web_lg
python -m spacy download en_core_web_sm

但是,我不断遇到链接错误,最后在命令下运行有助于我建立链接并解决了错误。

python -m spacy download en

答案 2 :(得分:5)

在Colab中使用Spacy语言模型仅需执行以下两个步骤:

  1. 下载模型(根据模型的大小更改名称)
!python -m spacy download en_core_web_lg 
  1. 重新启动colab运行时! 执行快捷键: Ctrl + M +。

测试

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

成功!!!

答案 3 :(得分:4)

我在 Windows 上运行 Jupyter 笔记本。

最后是版本问题,需要在conda cmd提示符下执行以下命令(以管理员身份打开)

  • pip install spacy==2.3.5

  • python -m spacy 下载 en_core_web_sm

  • python -m spacy 下载 en

from chatterbot import ChatBot
import spacy
import en_core_web_sm
nlp = en_core_web_sm.load()
ChatBot("hello")

输出 - enter image description here

答案 4 :(得分:3)

对于那些即使在Anaconda提示符下以管理员身份安装后仍然遇到问题的人,这里有一个快速解决方法:

1)转到下载路径。例如

C:\ Users \ name \ AppData \ Local \ Continuum \ anaconda3 \ Lib \ site-packages \ en_core_web_sm \ en_core_web_sm-2.2.0

2)复制路径。

3)粘贴到:    nlp = spacy.load(r'C:\ Users \ name \ AppData \ Local \ Continuum \ anaconda3 \ Lib \ site-packages \ en_core_web_sm \ en_core_web_sm-2.2.0')

4)就像魅力一样:)

PS:检查拼写版本

答案 5 :(得分:3)

对于基于Windows的Anaconda,

1-打开Anaconda提示

2-激活您的环境。例如:主动myspacyenv

3点安装https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz

4- python -m spacy下载en_core_web_sm

5-打开Jupyter笔记本,例如:先激活myspacyenv,然后再在Anaconda Promt上安装jupyter笔记本

导入spacy spacy.load('en_core_web_sm')

它将和平运行!

答案 6 :(得分:3)

根据不同版本的spacy加载模块的步骤

下载适用于spaCy安装的特定型号的最匹配版本

python -m spacy download en_core_web_sm
pip install .tar.gz archive from path or URL
pip install /Users/you/en_core_web_sm-2.2.0.tar.gz

pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz

添加到您的需求文件或环境yaml文件。您可以在https://github.com/explosion/spacy-models/releases

下查看更多可以兼容一个spacy版本的版本范围。

如果不确定运行下面的代码

nlp = spacy.load('en_core_web_sm') 

将发出警告,告知哪种版本模型将与您安装的spacy verion兼容

enironment.yml示例

name: root
channels:
  - defaults
  - conda-forge
  - anaconda
dependencies:
  - python=3.8.3
  - pip
  - spacy=2.3.2
  - scikit-learn=0.23.2
  - pip:
    - https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz#egg=en_core_web_sm

答案 7 :(得分:3)

试试这个方法,因为这对我来说很有吸引力:

在您的 Anaconda Prompt 中,运行以下命令:

!python -m spacy download en

运行上述命令后,您可以轻松地在您的 jupyter notebook 中执行以下命令:

spacy.load('en_core_web_sm')

答案 8 :(得分:2)

打开命令提示符或终端并执行以下代码:

pip3 install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz

在Jupiter笔记本中执行以下代码块。

import spacy

nlp = spacy.load('en_core_web_sm')

希望以上代码适用于所有人:)

答案 9 :(得分:2)

您的误解的答案是Unix概念 softlinks ,我们可以说Windows中的这些概念类似于快捷方式。让我们解释一下。

当您spacy download en时,spaCy会尝试找到与您的spaCy分布相匹配的最佳小型模型。我正在谈论的小型模型默认为en_core_web_sm,可以在对应于不同spaCy版本的不同版本中找到它(例如spacyspacy-nightly具有en_core_web_sm不同大小)。

spaCy找到最适合您的模型时,会下载它,然后链接名称en到其下载的软件包,例如en_core_web_sm。这基本上意味着,每当您引用en时,您都将引用en_core_web_sm。换句话说,链接后的en并不是一个“真实的”包,而仅仅是en_core_web_sm的名称。

但是,它反之亦然。您无法直接引用en_core_web_sm,因为您的系统不知道您已安装它。完成spacy download en后,您基本上完成了pip安装。因此pip知道您已经为Python发行版安装了名为en的软件包,但对软件包en_core_web_sm一无所知。导入时,此软件包只是替换软件包en,这意味着软件包en只是指向en_core_web_sm的软链接。

当然,您可以使用以下命令直接下载en_core_web_smpython -m spacy download en_core_web_sm,或者甚至可以将名称en链接到其他模型。例如,您可以先执行python -m spacy download en_core_web_lg,然后执行python -m spacy link en_core_web_lg en。那将使 enen_core_web_lg的名称,这是英语的大型SpaCy模型。

希望现在很清楚:)

答案 10 :(得分:2)

这解决了我的错误,而不是以上任何一个。

conda install -c conda-forge spacy-model-en_core_web_sm

如果您是 anaconda 用户,这就是解决方案。

答案 11 :(得分:2)

这适用于 colab:

!python -m spacy download en
import en_core_web_sm
nlp = en_core_web_sm.load()

或者对于媒介:

import en_core_web_md
nlp = en_core_web_md.load()

答案 12 :(得分:1)

使用不同的语法加载模块对我来说很有效。

<iframe src="https://pl.kotl.in/DUBDfUnX3" style="width:600px;"></iframe>

答案 13 :(得分:1)

Anaconda用户

  1. 如果您使用的是conda虚拟环境,请 确保其Python版本与基本环境中的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")

答案 14 :(得分:1)

打开Anaconda Navigator。单击任何IDE。运行代码:

!pip install -U spacy download en_core_web_sm
!pip install -U spacy download en_core_web_sm

它将起作用。如果您打开的是IDE,请直接将其关闭并按照此步骤操作一次。

答案 15 :(得分:1)

import spacy

nlp = spacy.load('/opt/anaconda3/envs/NLPENV/lib/python3.7/site-packages/en_core_web_sm/en_core_web_sm-2.3.1')

尝试使用如图所示的版本给出软件包的绝对路径。

效果很好。

答案 16 :(得分:1)

我也遇到了同样的问题,因为我无法使用'''spacy.load()'''加载模块 您可以按照以下步骤在Windows上解决此问题:

  1. 使用下载!python -m spacy下载en_core_web_sm
  2. 将en_core_web_sm导入为导入en_core_web_sm
  3. 使用 en_core_web_sm.load()加载到某些变量

完整的代码将是:

python -m spacy download en_core_web_sm

import en_core_web_sm

nlp = en_core_web_sm.load()

答案 17 :(得分:1)

我在 MacOS 上运行 PyCharm,虽然上述答案都不适合我,但它们确实提供了足够的线索,我终于能够使一切正常。我正在连接到一个 ec2 实例并配置了 PyCharm,这样我就可以在我的 Mac 上进行编辑,它会自动更新我的 ec2 实例上的文件。因此,问题出在 ec2 方面,即使我以不同的时间和方式安装了它,也没有找到 Spacy。如果我从命令行运行我的 python 脚本,一切正常。然而,从 PyCharm 内部,它最初没有找到 Spacy 和模型。我最终使用上述添加“requirements.txt”文件的建议修复了“查找”空间问题。但仍然无法识别模型。

我的解决方案: 手动下载模型并将它们放置在 ec2 实例上的文件系统中,并在加载时明确指向它们。我从这里下载了文件:

https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-3.0.0/en_core_web_lg-3.0.0.tar.gz

下载后,我将它们移动到我的 ec2 实例,在我的文件系统中解压和解压它们,例如/path_to_models/en_core_web_lg-3.0.0/

然后我使用显式路径加载一个模型,它在 PyCharm 中工作(注意所使用的路径一直到 en_core_web_lg-3.0.0;如果您不使用带有 {{ 1}} 文件):

config.cfg

答案 18 :(得分:0)

试试这个:-
!python -m spacy 下载 en_core_web_md

答案 19 :(得分:0)

我在 spacy.io 上看到的一个简单的解决方案

从 spacy.lang.en 导入英文

nlp=英文()

https://course.spacy.io/en/chapter1

答案 20 :(得分:0)

这就是我所做的:

  1. 进入我在 Anaconda Prompt / Command Line 上工作的虚拟环境

  2. 运行这个:python -m spacy download en_core_web_sm

完成了

答案 21 :(得分:0)

如果您已经下载了spacy和语言模型(例如en_core_web_smen_core_web_md),则可以按照以下步骤操作:

  1. 以管理员身份打开Anaconda提示

  2. 然后键入:python -m spacy link [程序包名称或路径] [快捷方式]

    例如python -m spacy link /Users/you/model en

这将创建一个指向您的语言模型的符号链接。现在,您可以在笔记本或脚本中使用spacy.load("en")加载模型

答案 22 :(得分:0)

首先,使用以下命令为jupyter notebook安装spacy pip install -U spacy

然后编写以下代码:

import en_core_web_sm
nlp = en_core_web_sm.load()

答案 23 :(得分:0)

我尝试了以上所有答案,但未能成功。下面为我​​工作:

(特定于WINDOWS操作系统)

  1. 以管理员权限运行Anaconda命令提示符(重要)
  2. 然后运行以下命令:
  pip install -U --user spacy    
  python -m spacy download en
  1. 请尝试以下命令进行验证:
import spacy
spacy.load('en')
  1. 它可能也适用于其他版本: enter image description here