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

spacy Can't find model 'en_core_web_sm' on windows 10 and Python 3.5.3 :: Anaconda custom (64-bit)

spacy.load('en_core_web_sm')spacy.load('en')之间有什么区别?此链接说明了不同的型号尺寸。但是我仍然不清楚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')时,出现以下错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---------------------------------------------------------------------------
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\
ikhizzz\\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\
ikhizzz\\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 ---

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(C:\\Users\
ikhizzz\\AppData\\Local\\conda\\conda\\envs\\tensorflowspyder) C:\\Users\
ikhizzz>conda install -c conda-forge spacy
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\\Users\
ikhizzz\\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\
ikhizzz\\AppData\\Local\\conda\\conda\\envs\\tensorflowspyder) C:\\Users\
ikhizzz>python -V
Python 3.5.3 :: Anaconda custom (64-bit)

(C:\\Users\
ikhizzz\\AppData\\Local\\conda\\conda\\envs\\tensorflowspyder) C:\\Users\
ikhizzz>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\
ikhizzz\\AppData\\Local\\conda\\conda\\envs\\tensorflowspyder\\lib\\site-packages\\en_core_web_sm
    -->
    C:\\Users\
ikhizzz\\AppData\\Local\\conda\\conda\\envs\\tensorflowspyder\\lib\\site-packages\\spacy\\data\\en

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


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


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

1
2
python -m spacy download en_core_web_lg
python -m spacy download en_core_web_sm

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

1
python -m spacy download en


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

当您spacy download en时,spaCy会尝试找到与您的spaCy分布相匹配的最佳小型模型。我正在谈论的小型模型默认为en_core_web_sm,可以在对应于不同spaCy版本的不同版本中找到它(例如,spacyspacy-nightlyen_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。那将使
en en_core_web_lg的名称,它是英语的大型spaCy模型。

希望现在很清楚:)


下面为我工作:

1
2
3
import en_core_web_sm

nlp = en_core_web_sm.load()

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

1)转到下载路径。例如

C:\\\\ Users \\
ame \\\\ 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 \\
ame \\\\ AppData \\\\ Local \\\\ Continuum \\\\ anaconda3 \\\\ Lib \\\\ site-packages \\\\ en_core_web_sm \\\\ en_core_web_sm-2.2.0')

4)就像魅力一样:)

PS:检查spacy版本


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

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

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

    成功!!!


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

    然后编写以下代码:

    1
    2
    import en_core_web_sm
    nlp = en_core_web_sm.load()

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

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

    1
    2
    3
    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

    1
    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文件。有一个spacy版本可兼容的Theres版本范围可以在https://github.com/explosion/spacy-models/releases

    下查看更多

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

    1
    nlp = spacy.load('en_core_web_sm')

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

    enironment.yml示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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

    我正在Windows上运行Jupyter笔记本。

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

    • pip install spacy == 2.3.5

    • python -m spacy下载zh_cn_web_sm

    • python -m spacy下载zh-cn

    1
    2
    3
    4
    5
    from chatterbot import ChatBot
    import spacy
    import en_core_web_sm
    nlp = en_core_web_sm.load()
    ChatBot("hello")

    输出-
    enter


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

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

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


    使用不同的语法加载模块对我有用。

    1
    2
    import en_core_web_sm
    nlp = en_core_web_sm.load()

    Anaconda用户

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

  • 激活虚拟环境(conda activate myenv)

  • conda install -c conda-forge spacy
  • python -m spacy download en_core_web_sm
  • 我刚遇到这个问题,以上内容对我来说都是有效的。这解决了在当前虚拟环境无法访问的区域中发生下载的问题。

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

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

    1
    2
    3
    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')

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

    它工作得很好。


    可与colab配合使用:

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

    或者对于介质:

    1
    2
    import en_core_web_md
    nlp = en_core_web_md.load()


    代替上面的任何方法,这解决了我的错误。

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

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


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

    1
    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')

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


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

  • 使用!python -m spacy下载en_core_web_sm
  • 将en_core_web_sm导入为import en_core_web_sm
  • 使用en_core_web_sm.load()加载到某个变量
  • 完整的代码将是:

    1
    2
    3
    4
    5
    python -m spacy download en_core_web_sm

    import en_core_web_sm

    nlp = en_core_web_sm.load()

    我正在MacOS上运行PyCharm,尽管以上答案都无法完全解决我的问题,但它们确实提供了足够的线索,我终于能够进行所有工作。我正在连接到ec2实例,并已配置PyCharm,以便可以在Mac上进行编辑,并且它会自动更新ec2实例上的文件。因此,问题出在ec2端,即使我以几种不同的方式和方式安装了Spacy,也找不到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;如果不将文件夹与config.cfg文件一起使用,则会收到错误消息):

    1
    nlpObject = spacy.load('/path_to_models/en_core_web_lg-3.0.0/en_core_web_lg/en_core_web_lg-3.0.0')

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

    (特定于WINDOWS操作系统)

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


    这就是我所做的:

  • 转到我在Anaconda Prompt /命令行上工作的虚拟环境

  • 运行此命令:python -m spacy下载en_core_web_sm

  • 完成了


    对此的简单解决方案,我在spacy.io

    上看到了

    从spacy.lang.en导入英语

    nlp =英语()

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