【问题标题】:spacy Can't find model 'en_core_web_sm' on windows 10 and Python 3.5.3 :: Anaconda custom (64-bit)spacy 在 Windows 10 和 Python 3.5.3 上找不到模型“en_core_web_sm” :: Anaconda 自定义(64 位)
【发布时间】:2019-06-17 11:02:38
【问题描述】:

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 notebook 并运行命令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>

【问题讨论】:

  • 我有几个可能的想法,问题出在哪里。首先,尝试重新下载模型:python -m spacy download en_core_web_sm
  • 顺便说一下,'en' 默认为 'en_core_web_sm',所以它们实际上是相同的。见this
  • 只要执行python -m spacy download en_core_web_sm命令就绰绰有余了

标签: python python-3.x nlp spacy


【解决方案1】:

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

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

!python -m spacy download en

运行上述命令后,您应该可以在您的 jupyter notebook 中执行以下命令:

spacy.load('en_core_web_sm')

【讨论】:

    【解决方案2】:

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

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

    但是,我一直收到链接错误,最后运行下面的命令帮助我建立链接并解决了错误。

    python -m spacy download en
    

    如果使用 Jupyter,还要确保重新启动运行时。 -PS : 如果你得到链接错误尝试给予管理员权限。

    【讨论】:

    • 这对我也有用。在终端中,在我的 MacBook 上,我同时运行了 python -m spacy download en_core_web_lgpython -m spacy download en_core_web_sm,但在输入 spacy.load('en')spacy.load('en_core_web_lg') 时,Python 中继续出现 OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory. 错误。在终端中运行python -m spacy download en,然后在Python 中运行spacy.load('en'),我能够加载模型。
    • 在@talha-tayyab 建议重新启动运行时之前,我仍然无法解决问题。向你们所有人致敬,伙计们! stackoverflow.com/a/68012945/537648
    【解决方案3】:

    这对我有用: conda install -c conda-forge spacy-model-en_core_web_sm

    【解决方案4】:

    不要从 jupyter 内部运行 !python -m spacy download en_core_web_lg。 改为这样做:

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

    您可能需要在运行上述两个命令之前重新启动内核才能使其工作。

    【讨论】:

      【解决方案5】:

      对于那些即使从 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:检查spacy版本

      【讨论】:

      • 我粘贴了但收到错误OSError: [E049] Can't find spaCy data directory: 'None'. Check your installation and permissions, or use spacy.util.set_data_path to customise the location if necessary.,你知道发生了什么吗?
      【解决方案6】:

      对于基于 Windows 的 Anaconda,

      1. 打开 Anaconda 提示

      2. 激活您的环境。例如:活跃的 myspacyenv

      3. 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

      4. python -m spacy download en_core_web_sm

      5. 打开 Jupyter Notebook ex: active myspacyenv 然后在 Anaconda Promt 上打开 jupyter notebook

      import spacy spacy.load('en_core_web_sm')

      它会平稳运行!

      【讨论】:

      • 第 2 步仅供参考,其 conda 激活 myspacyenv。
      【解决方案7】:

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

      from spacy.lang.en import English
      nlp=English()
      

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

      【讨论】:

      • 谁能告诉我这是否正确?因为它起作用了,上面没有其他任何东西。
      • 是的!这适用于 PyCharm。不知道为什么他们显示加载方法,然后是这个版本,比如为什么有两种加载方法。
      【解决方案8】:

      在操作系统控制台中运行:

      python -m spacy download en
      python -m spacy link en_core_web_sm en_core_web_sm
      

      然后在 python 控制台或你的 python IDE 中运行它:

      import spacy
      spacy.load('en_core_web_sm')
      

      【讨论】:

        【解决方案9】:

        检查已安装的 spacy 版本 pip show spacy 你会得到这样的东西:

        名称:spacy 版本:3.1.3 摘要:Python 中的工业级自然语言处理 (NLP)

        使用以下命令安装模型的相关版本: !pip install -U https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

        【讨论】:

          【解决方案10】:

          下载en_core_web_sm tar 文件

          从 anaconda 打开终端或打开 anaconda evn。 运行这个:

          pip3 install /Users/yourpath/Downloads/en_core_web_sm-3.1.0.tar.gz;
          

          pip install /Users/yourpath/Downloads/en_core_web_sm-3.1.0.tar.gz;
          

          重启jupyter,就可以了。

          【讨论】:

            【解决方案11】:

            我遇到了类似的问题。我从特定的 conda 环境安装了 spacy 和 en_core_web_sm。但是,我遇到了以下两个(02)不同的问题:

            [Errno 2] 没有这样的文件或目录:'....\en_core_web_sm\en_core_web_sm-2.3.1\vocab\lexemes.bin' 要么 OSError: [E050] Can't find model 'en_core_web_sm'.... 它似乎不是快捷链接、Python 包或数据目录的有效路径。

            我做了以下事情:

            1. 以管理员身份打开命令提示符
            2. 转到 c:>
            3. 激活我的 Conda 环境(如果您在特定的 conda 环境中工作):
            c:\>activate <conda environment name>
            
            1. (conda environment name)c:\&gt;python -m spacy download en
            2. 返回 Jupyter Notebook 即可加载语言库:
            nlp = en_core_web_sm.load()
            

            对我来说,它有效:)

            【讨论】:

              【解决方案12】:

              即使我也遇到过类似的问题。我是如何解决的

              1. 以管理员模式启动 anaconda 提示符。
              2. 两者都安装了 python -m spacy 下载 和 python -m spacy 下载 en_core_web_sm 仅在上述步骤之后,我才开始访问这个包的 jupyter notebook。 现在我可以同时访问 进口空间 nlp = spacy.load('en_core_web_sm') 要么 nlp = spacy.load('en') 两者都为我工作。

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                  【解决方案14】:

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

                  我的解决方案: 手动下载模型并将它们放在 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 文件的文件夹,则会收到错误消息):

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

                  【讨论】:

                  • 太棒了,这就是我想要的。您是否找到了一种将 tar 文件卷曲的方法?我认为 github 做了某种重定向以防止人们将其用作文件存储。
                  【解决方案15】:

                  这解决了我的错误。

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

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

                  【讨论】:

                    【解决方案16】:

                    我在 Windows 上运行 Jupyter Notebook。

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

                    • pip install spacy==2.3.5

                    • python -m spacy 下载 en_core_web_sm

                    • python -m spacy 下载 zh

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

                    输出 -

                    【讨论】:

                      【解决方案17】:

                      这适用于 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()
                      

                      【讨论】:

                        【解决方案18】:

                        这就是我所做的:

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

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

                        完成了

                        【讨论】:

                          【解决方案19】:

                          如果您已经下载了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") 加载模型

                          【讨论】:

                            【解决方案20】:

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

                            然后编写如下代码:

                            import en_core_web_sm
                            nlp = en_core_web_sm.load()
                            

                            【讨论】:

                              【解决方案21】:

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

                              1. 使用 !python -m spacy 下载 en_core_web_sm 下载
                              2. 将 en_core_web_sm 导入为 import 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()
                              

                              【讨论】:

                                【解决方案22】:

                                我尝试了上述所有答案,但未能成功。以下对我有用:

                                (WINDOWS操作系统特有)

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

                                【讨论】:

                                  【解决方案23】:

                                  根据不同版本的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 文件中。有多个版本可以兼容一个spacy版本你可以在https://github.com/explosion/spacy-models/releases查看更多

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

                                  nlp = spacy.load('en_core_web_sm') 
                                  

                                  将发出警告,告知您安装的 spacy 版本兼容的版本型号

                                  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
                                  

                                  【讨论】:

                                    【解决方案24】:
                                    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')
                                    

                                    尝试给出包的绝对路径,如图所示。

                                    效果很好。

                                    【讨论】:

                                      【解决方案25】:

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

                                      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 notebook 中执行以下代码块。

                                      import spacy

                                      nlp = spacy.load('en_core_web_sm')

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

                                      【讨论】:

                                        【解决方案26】:

                                        在 Colab 中使用 Spacy 语言模型只需要以下两个步骤:

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

                                        测试

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

                                        成功!!!

                                        【讨论】:

                                          【解决方案27】:

                                          Anaconda 用户

                                          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")
                                          

                                          【讨论】:

                                            【解决方案28】:

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

                                            import en_core_web_sm
                                            nlp = en_core_web_sm.load()
                                            

                                            【讨论】:

                                              【解决方案29】:

                                              以下对我有用:

                                              import en_core_web_sm
                                              
                                              nlp = en_core_web_sm.load()
                                              

                                              【讨论】:

                                              • 如果您在尝试上述命令后遇到错误 (No module named 'en_core_web_sm'),请同时执行 answer
                                              【解决方案30】:

                                              打开 Anaconda 导航器。单击任何 IDE。运行代码:

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

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

                                              【讨论】:

                                                猜你喜欢
                                                • 2017-10-26
                                                • 2020-09-25
                                                • 1970-01-01
                                                • 2016-09-28
                                                • 1970-01-01
                                                • 2019-12-06
                                                • 2020-03-02
                                                • 1970-01-01
                                                • 2015-04-04
                                                相关资源
                                                最近更新 更多