web-dev-qa-db-de.com

NLTK und Stoppwörter scheitern #lookuperror

Ich versuche ein Sentiment-Analyse-Projekt zu starten und werde die Stop-Word-Methode verwenden. Ich habe etwas recherchiert und festgestellt, dass nltk Stoppwörter hat, aber wenn ich den Befehl ausführt, liegt ein Fehler vor.

Was ich mache, ist das Folgende, um zu wissen, welche Wörter von Nltk verwendet werden (wie zB das, was Sie hier finden können: http://www.nltk.org/book/ch02.html in Abschnitt 4.1):

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

Aber wenn ich Enter drücke, bekomme ich

---------------------------------------------------------------------------
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'
**********************************************************************

Aufgrund dieses Problems können Dinge wie diese nicht ordnungsgemäß ausgeführt werden (mit demselben Fehler):

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

Wissen Sie, was ein Problem sein kann? Ich muss Wörter auf Spanisch verwenden. Empfehlen Sie eine andere Methode? Ich dachte auch, Goslate-Paket mit Datensätzen in Englisch zu verwenden

Danke fürs Lesen!

P.D .: Ich verwende Ananconda

47
Facundo

Sie scheinen den Stoppwortkörper nicht auf Ihrem Computer zu haben.

Sie müssen den NLTK Downloader starten und alle erforderlichen Daten herunterladen.

Öffnen Sie eine Python-Konsole und führen Sie folgende Schritte aus:

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

Klicken Sie im sich öffnenden GUI-Fenster einfach auf die Schaltfläche "Download", um alle Korpora herunterzuladen, oder gehen Sie auf die Registerkarte "Corpora" und laden Sie nur die gewünschten Dateien herunter.

121
tttthomasssss

Ich habe es vom Ubuntu-Terminal aus versucht und weiß nicht, warum die GUI laut tttthomasssss Antwort nicht auftauchte. Also folgte ich dem Kommentar von KLDavenport und es funktionierte. Hier ist die Zusammenfassung:

Öffnen Sie Ihr Terminal/Ihre Befehlszeile und geben Sie dann Python ein

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

Dadurch werden die Stoppwortkorpus unter den nltk_data gespeichert. Für meinen Fall war es /home/myusername/nltk_data/corpora/stopwords.

Wenn Sie einen anderen Korpus benötigen, besuchen Sie nltk data und finden Sie den Korpus mit seiner ID. Dann verwenden Sie die ID zum Herunterladen wie bei Stoppwörtern.

8
Abu Shoeb

Wenn Sie NLTK Corpus manuell installieren möchten.

1) Gehen Sie zu http://www.nltk.org/nltk_data/ und laden Sie Ihre gewünschte NLTK-Corpus-Datei herunter.

2) Überprüfen Sie nun in einer Python-Shell den Wert von nltk.data.path

3) Wählen Sie einen Pfad aus, der auf Ihrem Computer vorhanden ist, und entpacken Sie die Datendateien in das Corpora-Unterverzeichnis.

4) Jetzt können Sie die Daten aus nltk.corpos import stopwords importieren

Referenz: https://medium.com/@satorulogic/how-to-manually-download-a-nltk-corpus-f01569861da9

2
SVK
import nltk
nltk.download()

Klicken Sie auf "Download", wenn Sie dazu aufgefordert werden. Es hat für mich funktioniert. (nltk.download('stopwords') funktioniert nicht für mich)

0
Rohit P