2014-11-01 14 views
35

Sto provando ad avviare un progetto di analisi dei sentimenti e userò il metodo delle parole di arresto. Ho fatto delle ricerche e ho scoperto che nltk ha delle parole d'arresto, ma quando eseguo il comando c'è un errore.NLTK e Stopwords Fail #lookuperror

Quello che faccio è la seguente, al fine di conoscere quali sono le parole che NLTK uso (come quello che si può trovare qui http://www.nltk.org/book/ch02.html in section4.1):

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

Ma quando premo entrano ottengo

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

E, a causa di questo problema le cose come questo non può funzionare correttamente (ottenendo lo stesso errore):

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

Sai quale potrebbe essere un problema? Devo usare le parole in spagnolo, raccomandi un altro metodo? Ho anche pensato di usare il pacchetto Goslate con i dataset in inglese

Grazie per la lettura!

P.D .: Io uso Ananconda

risposta

94

Non sembrano avere le stopword corpus sul computer.

È necessario avviare NLTK Downloader e scaricare tutti i dati necessari.

Aprire una console Python e procedere come segue:

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

Nella finestra GUI che si apre è sufficiente premere il pulsante 'Download' per scaricare tutti i corpora o andare scheda 'Corpora' e solo scaricare quelli hai bisogno/vuoi

+49

In alternativa, se si desidera evitare la GUI e sapere cosa si desidera scaricare: '' 'nltk.download (" stopwords ")' '' – KLDavenport

1

Se si desidera installare manualmente NLTK Corpus.

1) Vai a http://www.nltk.org/nltk_data/ e scarica il file Corpus NLTK desiderato.

2) Ora, in un guscio di Python controllare il valore di nltk.data.path

3) Scegliere una delle opzioni percorso che esiste sul computer, e decomprimere i file di dati nella directory sub corpora all'interno.

4) Ora è possibile importare i dati da importare nltk.corpos stopwords

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

-2
import nltk 
nltk.download() 

Fare clic sul pulsante di download quando gui richiesto. Ha funzionato per me. (nltk.download('stopwords') non funziona per me)

3

Ho provato dal terminale ubuntu e non so perché la GUI non si è presentata in base alla risposta di tttthomasssss. Quindi ho seguito il commento di KLDavenport e ha funzionato. Ecco il riassunto:

Aprire il terminale/riga di comando e digitare python poi

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

Questo memorizzerà le stopword corpus sotto la nltk_data.Per il mio caso era /home/myusername/nltk_data/corpora/stopwords.

Se è necessario un altro corpus, visitare nltk data e trovare il corpus con il proprio ID. Quindi usa l'ID per scaricare come abbiamo fatto per le stopword.

+0

Questo ha funzionato bene, ma sono sorpreso che questo non è qualcosa che è possibile fare con pip. Invece devi copiarlo per estrarre queste risorse in ogni ambiente. – timhysniu