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>
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 :)
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
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
Ce qui suit a fonctionné pour moi:
import en_core_web_sm
nlp = en_core_web_sm.load()
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.