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相关问答推荐

使用Pandas 阅读Excel定义的名称和单元格值(&Q;)

Pandas 数据帧断言等同于NaN

Pandas 插入的速度太慢了.对于跟踪代码,什么是更快的替代方案?

如何将从维基百科表中抓取的数据转换为字典列表?

找到在指定列的另一个分组中存在重复的行.

python3,将整数转换为字节:对于小整数使用 to_bytes() 有哪些替代方法?

提取图像中的背景并保存

有没有一种方法可以通过输入从 0 到 255 的 R、G 和 B 值来生成 RGB colored颜色 ,而无需使用 python 中的 matplotlib 模块?

如何将列表和字典逐行组合在一起

双轴上的刻度和标签

包含值超出范围的 ID 的新 DataFrame 列?

pip 找不到最新的软件包版本

Python defaultdict 在获取时返回 None,尽管使用默认值初始化

如何在 django 中没有循环的情况下获得前键的前键?

如何注释一个以另一个函数作为参数的函数?

为什么 Django South 1.0 使用 iteritems()?

判断对 python 3 支持的要求

Pandas 的 EMA 与股票的 EMA 不匹配?

为什么在 Python 3 中实例的 __dict__ 的大小要小得多?

在 Ipython 中使用 Pylint (Jupyter-Notebook)