Je travaille sur une base de code qui utilise Spacy. J'ai installé Spacy en utilisant:
Sudo pip3 install spacy
et alors
Sudo python3 -m spacy download en
A la fin de cette dernière commande, j'ai reçu un message:
Linking successful
/home/rayabhik/.local/lib/python3.5/site-packages/en_core_web_sm -->
/home/rayabhik/.local/lib/python3.5/site-packages/spacy/data/en
You can now load the model via spacy.load('en')
Maintenant, quand j'essaye de lancer mon code, sur la ligne:
from spacy.en import English
cela me donne l'erreur suivante:
ImportError: No module named 'spacy.en'
J'ai regardé sur Stackexchange et le plus proche est: Erreur d'importation avec spacy: "Aucun module nommé en" Ce qui ne résout pas mon problème.
Toute aide serait appréciée. Merci.
Edit: J'aurais peut-être résolu cela en procédant comme suit:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> spacy.load('en')
<spacy.lang.en.English object at 0x7ff414e1e0b8>
puis en utilisant:
from spacy.lang.en import English
Je garde toujours cela ouvert au cas où il y aurait d'autres réponses.
Oui, je peux confirmer que votre solution est correcte. La version de spaCy que vous avez téléchargée à partir de pip est la v2.0, qui inclut de nombreuses nouvelles fonctionnalités, mais aussi quelques modifications apportées à l'API . L'une d'elles est que toutes les données linguistiques ont été déplacées dans un sous-module spacy.lang
pour que les choses restent plus propres et mieux organisées. Donc, au lieu d'utiliser spacy.en
, vous importez maintenant de spacy.lang.en
.
Au fait, ce que vous essayez de faire dans votre code n'est pas tout à fait clair - mais si vous chargez un modèle anglais, il n'est généralement pas nécessaire d'importer et d'initialiser English
. SpaCy le fera pour vous.
nlp = spacy.load('en') # <-- an instance of `English` with data loaded in
doc = nlp(u"This is a text.")
spacy.load('en')
est un raccourci pour:
'en'
(un package ou un lien de raccourci).meta.json
et vérifiez quelle langue il utilise et à quoi son pipeline de traitement devrait ressembler.Voir cette section dans la documentation pour plus de détails.
J'ai utilisé la commande suivante pour installer Spacy à partir de la distribution anaconda.
conda install -c conda-forge spacy
et après cela, j'ai pu télécharger l'anglais en utilisant la commande suivante sans aucune erreur.
python -m spacy download en
Je devais utiliser en_core_web_sm au lieu de en pour que cela fonctionne. C'est se plaindre d'un problème de permission. Ce qui suit fonctionne parfaitement:
import spacy
spacy.load('en_core_web_sm')
from spacy.lang.en import English
Je pense qu'il y a une confusion dans les réponses fournies. Corriger les choses mentionnées:
Mais: Le fichier en_core_web_sm n'est pas le même fichier que celui que vous importez depuis spacy.lang.fr. En fait, le premier fichier est produit à partir du second après une formation avec Spacy train dans un jeu de données, puis la mise en forme du résultat. spacy.lang.en contient la définition du modèle: table de recherche lemmas, mots_arrêt, attributs lexicaux (et plus). Mais ça et seulement ça. Il n'est pas formé à un jeu de données afin que le graphe de dépendance et les autres fonctionnalités puissent fonctionner.
Je pense que cela devrait être assez clair lorsque vous travaillez avec spaCy.
le dossier en_core_web_sm a été téléchargé en dehors du dossier spacy. Je l'ai copié dans le dossier spacy/data et j'ai pu exécuter le code décrit dans spacy
Toute personne confrontée à ce problème sous Windows 10 et l'installation d'Anaconda, recherchez votre exécutable conda python à l'aide de where python
sur la ligne de commande avant d'exécuter le script.
Dans mon cas, le python sur le chemin était
C:\Users\XXX\.windows-build-tools\python27\python.exe
alors que ce dont j'avais besoin venait de
c:\Users\XXX\AppData\Local\Continuum\anaconda3\python.exe
Ajoutez simplement le python correct sur le chemin, ou allez à cet emplacement et exécutez
python -m spacy download en
et ça devrait marcher.