2012-05-06 17 views
24

Sono uno studente laureato in letteratura, e ho letto il libro O'Reilly in Natural Language Processing (nltk.org/book). Sembra incredibilmente utile. Ho giocato con tutti i testi di esempio e le attività di esempio nel Capitolo 1, come le concordanze. Ora so quante volte Moby Dick usa la parola "balena". Il problema è che non riesco a capire come eseguire questi calcoli su uno dei miei testi. Ho trovato informazioni su come creare i miei corpora personali (capitolo 2 del libro di O'Reilly), ma non penso che sia esattamente quello che voglio fare. In altre parole, io voglio essere in grado di fareCome posso creare il mio testo NLTK da un file di testo?

import nltk 
text1.concordance('yellow') 

e ottenere i luoghi dove la parola 'giallo' è usato nel mio testo. Al momento posso farlo con i testi di esempio, ma non i miei.

Sono molto nuovo a Python e alla programmazione, quindi questa roba è molto eccitante, ma molto confusa.

risposta

43

Ho trovato la risposta da solo. Questo è imbarazzante. O fantastico.

Dal cap. 3:

f=open('my-file.txt','rU') 
raw=f.read() 
tokens = nltk.word_tokenize(raw) 
text = nltk.Text(tokens) 

Il trucco.

+4

eccellente. Stavo solo cercando di rispondere a questa domanda me stesso; molto contento di aver inciampato nella tua (auto) risposta. - Un altro studioso di letteratura – cforster

+0

Per far funzionare tutto questo, ho dovuto prima scaricare "punkt": nltk.download ('punkt') –

+0

Cosa fa la RU? Trovato: f = open ('myfile.txt', 'rU') # rU significa "leggi" e gestisce le terminazioni di linea – ProfVersaggi

13

Per un'importazione strutturata di più file:

from nltk.corpus import PlaintextCorpusReader 

# RegEx or list of file names 
files = ".*\.txt" 

corpus0 = PlaintextCorpusReader("/path/", files) 
corpus = nltk.Text(corpus0.words()) 

vedi: NLTK 3 book/sezione di 1,9

+0

Mi ha fatto piacere vedere questo, poiché il metodo precedente (sopra) non funzionava per me. Ahimè, un altro messaggio di errore. Non mi piace la riga che coinvolge PlaintextCorpusReader: UnicodeDecodeError: il codec 'utf8' non può decodificare il byte 0xe8 in posizione 50: byte di continuazione non valido –

Problemi correlati