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并运行command 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>

推荐答案

你误解的答案是Unix概念,我们可以说Windows中的Unix与快捷方式类似.让我们来解释一下.

当你spacy download en岁时,spaCy会try 找到与你的spaCy分布相匹配的最佳small型号.我所说的小模型默认为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只是到en_core_web_sm的软链接.

当然,你也可以使用link-to-python -m spacy download en_core_web_sm命令直接下载到其他型号.例如,你可以先做python -m spacy download en_core_web_lg,然后再做python -m spacy link en_core_web_lg en.那会使

希望现在一切都清楚了:)

Python-3.x相关问答推荐

Python网页抓取:代码输出:汤未定义

正则表达式匹配并提取括号前的单词

从.csv导入将文件夹路径加入到文件名

在python内的powershell中转义$_

requests.exceptions.InvalidSchema:未找到连接适配器.我试图遍历一个列表

从 https://www.niftytrader.in/stock-options-chart/sbin 提取 SBIN 股票最大痛苦值的 Python 代码不起作用 - 我错过了什么?

使用 Python 在特定组的列中设置上限

如何对具有多个列值的 pandas 数据框进行数据透视/数据透视表

过滤阈值大小数据以使用 Pyspark 或 Python 读取

从日志(log)文件中查找延迟最低的用户

将字典列表展平为数据框列

两个Pandas数据框中的共同列列表

pythondecorator中的变量范围

使用 Python 3 按行进行分析

使用 Sublime Text 3 在 Python 3 中打印 UTF-8

如何使用 d.items() 更改 for 循环中的所有字典键?

python 3的蓝牙库

没有名为urlparse的模块,但我没有使用 urlparse

为什么变量 = 对象不像变量 = 数字那样工作

__iter__ 和 __getitem__ 有什么区别?