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èles. Mais je ne sais toujours pas en quoi spacy.load('en_core_web_sm')
et spacy.load('en')
diffèrent
spacy.load('en')
fonctionne bien pour moi. Mais le spacy.load('en_core_web_sm')
renvoie une erreur
J'ai installé spacy
comme ci-dessous. quand je vais à jupyter notebook et exécute la commande nlp = spacy.load('en_core_web_sm')
j'obtiens l'erreur ci-dessous
(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>
comment j'ai installé Spacy ---
--------------------------------------------------------------------------- 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.
14 Réponses :
La réponse à votre malentendu est un concept Unix, des liens logiciels dont on pourrait dire que sous Windows sont similaires à des 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 est par défaut en_core_web_sm
qui peut être trouvé dans différentes variantes qui correspondent aux différentes versions de spaCy (par exemple spacy
, spacy-nightly
ont en_core_web_sm
de tailles différentes).
Lorsque spaCy trouve le meilleur modèle pour vous, il le télécharge puis associe le nom en
au 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 vous référez à en_core_web_sm
. En d'autres termes, en
après la liaison n'est pas un "vrai" package, c'est juste un nom pour en_core_web_sm
.
Cependant, cela ne fonctionne pas dans l'autre sens. Vous ne pouvez pas faire référence directement à en_core_web_sm
car votre système ne sait pas que vous l'avez installé. Lorsque vous avez effectué un spacy download en
vous avez essentiellement effectué une installation 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 package en
lorsque vous l'importez, ce qui signifie que package en
est juste un lien logiciel vers en_core_web_sm
.
Bien sûr, vous pouvez télécharger directement en_core_web_sm
, en utilisant 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 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 :)
Oui cela fonctionne! J'utilise Spacy avec un MacBook pro. Ce dont j'avais besoin était le module en_core_web_lg
Au départ, j'ai téléchargé deux packages en utilisant les instructions suivantes dans l'invite anaconda.
python -m spacy download en
Mais, j'ai continué à obtenir une erreur de liaison et finalement exécuter la commande ci-dessous m'a aidé à établir le lien et à résoudre l'erreur.
python -m spacy download en_core_web_lg python -m spacy download en_core_web_sm
Cela a fonctionné pour moi aussi. Dans le terminal, sur mon MacBook, j'ai exécuté à la fois python -m spacy download en_core_web_lg
et python -m spacy download en_core_web_sm
mais python -m spacy download en_core_web_sm
continué à obtenir l' 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.
erreur en Python lors de la saisie de spacy.load('en')
et spacy.load('en_core_web_lg')
. En python -m spacy download en
dans le terminal, puis spacy.load('en')
en Python, j'ai pu charger le modèle.
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 ouvrez directement l'IDE, fermez-le et suivez cette procédure une fois.
Pour ceux qui rencontrent toujours des problèmes même après l'avoir installé en tant qu'administrateur à partir de l'invite Anaconda, voici une solution rapide:
1) Accédez au chemin où il est téléchargé. Pour 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
Le ci-dessous a fonctionné pour moi:
import en_core_web_sm nlp = en_core_web_sm.load()
Le chargement du module en utilisant la syntaxe différente a fonctionné pour moi.
import en_core_web_sm nlp = en_core_web_sm.load()
Quant à Anaconda basé sur Windows,
1- Ouvrir l'invite Anaconda
2- Activez votre environnement. Ex: myspacyenv actif
3- installer pip 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 télécharger en_core_web_sm
5-Open Jupyter Notebook ex: myspacyenv actif puis notebook jupyter sur Anaconda Promt
import spacy spacy.load ('en_core_web_sm')
et il fonctionnera paisiblement!
Utilisateurs d'Anaconda
Si vous utilisez un environnement virtuel conda, assurez-vous qu'il s'agit de la même version de Python que celle de votre environnement de base . Pour vérifier cela, exécutez python --version
dans chaque environnement. Sinon, créez un nouvel environnement virtuel avec cette version de Python (ex. conda create --name myenv python=xxx
).
Activer l'environnement virtuel ( conda activate myenv
)
conda install -c conda-forge spacy
python -m spacy download en_core_web_sm
Je viens de rencontrer ce problème, et ce qui précède a fonctionné pour moi. Cela résout le problème du téléchargement dans une zone qui n'est pas accessible à votre environnement virtuel actuel.
Vous devriez alors pouvoir exécuter ce qui suit:
import spacy nlp = spacy.load("en_core_web_sm")
L'utilisation du modèle de langage Spacy dans Colab ne nécessite que les deux étapes suivantes:
import spacy nlp = spacy.load("en_core_web_lg")
Tester
!python -m spacy download en_core_web_lg
réussi!!!
Ouvrez l'invite de commande ou le terminal et exécutez le code ci-dessous:
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
Exécutez le morceau ci-dessous dans votre bloc-notes Jupiter.
import spacy
nlp = spacy.load('en_core_web_sm')
J'espère que le code ci-dessus fonctionne pour tous :)
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') Try giving the absolute path of the package with the version as shown in the image.It works perfectly fine.
Étapes pour charger des modules basés sur différentes versions de spacy
téléchargez la version la mieux adaptée d'un modèle spécifique pour votre installation spaCy
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
ou
nlp = spacy.load('en_core_web_sm')
Ajoutez à votre fichier d'exigences ou fichier yaml d'environnement. Il existe une gamme de versions avec laquelle une version spacy est comptable, vous pouvez en voir plus sous https://github.com/explosion/spacy-models/releases
si vous n'êtes pas sûr d'exécuter le code ci-dessous
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
émettra un avertissement indiquant quel modèle de version sera compatible avec votre version Spacy installée
Exemple enironment.yml
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
J'ai essayé toutes les réponses ci-dessus mais je n'ai pas réussi. Ci-dessous a travaillé pour moi:
(Spécifique au système d'exploitation WINDOWS)
import spacy spacy.load('en')
pip install -U --user spacy python -m spacy download en
J'ai également eu le même problème car je ne pouvais pas charger le module en utilisant '' 'spacy.load ()' '' Vous pouvez suivre les étapes ci-dessous pour l'exécuter sur Windows:
télécharger en utilisant ! python -m spacy download en_core_web_sm
import en_core_web_sm comme import en_core_web_sm
charger en utilisant en_core_web_sm.load () vers une variable
python -m spacy télécharger en_core_web_sm import en_core_web_sm nlp = en_core_web_sm.load ()
J'ai quelques idées possibles sur le problème. Tout d'abord, essayez de télécharger à nouveau le modèle:
python -m spacy download en_core_web_sm
Au fait, «en» est par défaut «en_core_web_sm», donc ils sont en fait identiques. Regarde ça .