web-dev-qa-db-fra.com

NLTK et Stopwords Fail #lookuperror

J'essaie de démarrer un projet d'analyse de sentiment et j'utiliserai la méthode des mots vides. J'ai fait des recherches et j'ai trouvé que nltk avait des mots vides mais quand j'exécute la commande, il y a une erreur.

Ce que je fais est le suivant, afin de savoir quels sont les mots que nltk utilise (comme ce que vous pouvez trouver ici http://www.nltk.org/book/ch02.html dans la section 4.1):

from nltk.corpus import stopwords
stopwords.words('english')

Mais quand je presse entrer j'obtiens

---------------------------------------------------------------------------
LookupError                               Traceback (most recent call last)
<ipython-input-6-ff9cd17f22b2> in <module>()
----> 1 stopwords.words('english')

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __getattr__(self, attr)
 66
 67     def __getattr__(self, attr):
---> 68         self.__load()
 69         # This looks circular, but its not, since __load() changes our
 70         # __class__ to something new:

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __load(self)
 54             except LookupError, e:
 55                 try: root = nltk.data.find('corpora/%s' % Zip_name)
---> 56                 except LookupError: raise e
 57
 58         # Load the corpus.

LookupError:
**********************************************************************
  Resource 'corpora/stopwords' not found.  Please use the NLTK
  Downloader to obtain the resource:  >>> nltk.download()
  Searched in:
- 'C:\\Users\\Meru/nltk_data'
- 'C:\\nltk_data'
- 'D:\\nltk_data'
- 'E:\\nltk_data'
- 'C:\\Users\\Meru\\Anaconda\\nltk_data'
- 'C:\\Users\\Meru\\Anaconda\\lib\\nltk_data'
- 'C:\\Users\\Meru\\AppData\\Roaming\\nltk_data'
**********************************************************************

Et, à cause de ce problème, des choses comme celle-ci ne peuvent pas fonctionner correctement (obtention de la même erreur):

>>> from nltk.corpus import stopwords
>>> stop = stopwords.words('english')
>>> sentence = "this is a foo bar sentence"
>>> print [i for i in sentence.split() if i not in stop]

Savez-vous quel peut être le problème? Je dois utiliser des mots en espagnol, recommandez-vous une autre méthode? J'ai aussi pensé utiliser le paquet Goslate avec des jeux de données en anglais

Merci d'avoir lu!

P.D .: J'utilise Ananconda

47
Facundo

Vous ne semblez pas avoir le corpus de mots vides sur votre ordinateur.

Vous devez démarrer NLTK Downloader et télécharger toutes les données dont vous avez besoin.

Ouvrez une console Python et procédez comme suit:

>>> import nltk
>>> nltk.download()
showing info http://nltk.github.com/nltk_data/

Dans la fenêtre GUI qui s'ouvre, cliquez simplement sur le bouton "Télécharger" pour télécharger tous les corpus ou allez dans l'onglet "Corpa" et téléchargez uniquement ceux dont vous avez besoin/envie.

121
tttthomasssss

J'ai essayé depuis le terminal d'ubuntu et je ne sais pas pourquoi l'interface graphique ne s'est pas présentée selon la réponse de tttthomasssss. J'ai donc suivi le commentaire de KLDavenport et cela a fonctionné. Voici le résumé:

Ouvrez votre terminal/ligne de commande et tapez python puis

>>> import nltk .>>> nltk.download("stopwords")

Ceci stockera le corpus de mots vides sous le nltk_data. Pour mon cas, c'était /home/myusername/nltk_data/corpora/stopwords.

Si vous avez besoin d’un autre corpus, visitez nltk data et recherchez le corpus avec son identifiant. Puis utilisez l’ID pour télécharger comme nous l’avons fait pour les mots vides.

8
Abu Shoeb

Si vous souhaitez installer manuellement NLTK Corpus.

1) Allez sur http://www.nltk.org/nltk_data/ et téléchargez le fichier de corpus NLTK souhaité.

2) Maintenant, dans un shell Python, vérifiez la valeur de nltk.data.path

3) Choisissez l’un des chemins existants sur votre ordinateur et décompressez les fichiers de données dans le sous-répertoire corpus.

4) Maintenant, vous pouvez importer les données de nltk.corpos importer des mots vides

Référence: https://medium.com/@satorulogic/how-to-manually-download-a-nltk-corpus-f01569861da9

2
SVK
import nltk
nltk.download()

Cliquez sur le bouton de téléchargement lorsque vous y êtes invité. Cela a fonctionné pour moi. (nltk.download('stopwords') ne fonctionne pas pour moi)

0
Rohit P