web-dev-qa-db-fra.com

spacy Impossible de trouver le modèle 'en_core_web_sm' sur Windows 10 et Python 3.5.3 :: Anaconda personnalisé (64 bits)

quelle est la différence entre spacy.load('en_core_web_sm') et spacy.load('en')? Ce lien explique les différentes tailles de modèle. Mais je ne sais toujours pas en quoi spacy.load('en_core_web_sm') et spacy.load('en') diffèrent

spacy.load('en') fonctionne très bien pour moi. Mais la spacy.load('en_core_web_sm') renvoie une erreur

j'ai installé spacy comme ci-dessous. quand je vais dans le cahier jupyter et exécute la commande nlp = spacy.load('en_core_web_sm') j'obtiens l'erreur ci-dessous

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

comment j'ai installé 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>
16
user2543622

La réponse à votre malentendu est un concept Unix, softlinks dont on pourrait dire que dans Windows sont similaires aux raccourcis. Expliquons cela.

Lorsque vous spacy download en, spaCy essaie de trouver le meilleur petit modèle qui correspond à votre distribution spaCy. Le petit modèle dont je parle par défaut est en_core_web_sm que l'on retrouve dans différentes variantes correspondant aux différentes versions de spaCy (par exemple spacy, spacy-nightly avoir en_core_web_sm de différentes tailles).

Lorsque spaCy trouve le meilleur modèle pour vous, il le télécharge, puis liens le nom en vers le package qu'il a téléchargé, par exemple en_core_web_sm. Cela signifie essentiellement que chaque fois que vous faites référence à en, vous ferez référence à en_core_web_sm. En d'autres termes, en après la liaison n'est pas un "vrai" package, est juste un nom pour en_core_web_sm.

Cependant, cela ne fonctionne pas dans l'autre sens. Vous ne pouvez pas vous référer directement à en_core_web_sm car votre système ne sait pas que vous l'avez installé. Quand vous avez fait spacy download en vous avez fait une installation par pip. Donc, pip sait que vous avez un package nommé en installé pour votre distribution python, mais ne sait rien du package en_core_web_sm. Ce package remplace simplement le package en lorsque vous l'importez, ce qui signifie que le package en n'est qu'un lien logiciel vers en_core_web_sm.

Bien sûr, vous pouvez télécharger directement en_core_web_sm, à l'aide de la commande: python -m spacy download en_core_web_sm, ou vous pouvez même lier le nom en à d'autres modèles. Par exemple, vous pouvez faire python -m spacy download en_core_web_lg puis python -m spacy link en_core_web_lg en. Cela ferait de en un nom pour en_core_web_lg, qui est un grand modèle spaCy pour la langue anglaise.

J'espère que c'est clair maintenant :)

16
gdaras

Au départ, j'ai téléchargé deux packages en utilisant les instructions suivantes dans anaconda Prompt.

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

Mais, j'ai continué à obtenir une erreur de liaison et, finalement, l'exécution de la commande ci-dessous m'a aidé à établir le lien et à résoudre l'erreur.

python -m spacy download en
14
Tarun Reddy

Pour ceux qui rencontrent toujours des problèmes même après l'avoir installé en tant qu'administrateur à partir d'Anaconda Prompt, voici une solution rapide:

1) Arrivé au chemin où il est téléchargé. Par exemple.

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

2) Copiez le chemin.

3) Collez-le dans: 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) Fonctionne comme un charme :)

PS: vérifier la version spacy

4
Harshit Singh

Ce qui suit a fonctionné pour moi:

import en_core_web_sm

nlp = en_core_web_sm.load()
2
Dipanwita Mallick

Ouvrez Anaconda Navigator. Cliquez sur n'importe quel IDE. Exécutez le code:

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

Ça va marcher. Si vous êtes ouvert IDE fermez-le directement et suivez cette procédure une fois.

1