2012-05-06 11 views
24

Soy un estudiante graduado de Literatura, y he estado revisando el libro de O'Reilly en Natural Language Processing (nltk.org/book). Se ve increíblemente útil. He jugado con todos los textos de ejemplo y tareas de ejemplo en el Capítulo 1, como concordancias. Ahora sé cuántas veces Moby Dick usa la palabra "ballena". El problema es que no puedo descifrar cómo hacer estos cálculos en uno de mis propios textos. Encontré información sobre cómo crear mi propio corpus (Capítulo 2 del libro de O'Reilly), pero no creo que eso sea exactamente lo que quiero hacer. En otras palabras, quiero ser capaz de hacer¿Cómo creo mi propio texto NLTK a partir de un archivo de texto?

import nltk 
text1.concordance('yellow') 

y obtener los lugares donde la palabra 'amarillo' se utiliza en mi texto. Por el momento, puedo hacer esto con los textos de ejemplo, pero no con los míos.

Soy muy nuevo en python y en programación, así que esto es muy emocionante, pero muy confuso.

Respuesta

43

Encontré la respuesta yo mismo. Eso es vergonzoso. O increíble

De Ch. 3:

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

Tiene el truco.

+4

excelente. Solo estaba tratando de responder a esta pregunta yo mismo; muy contenta de haber tropezado con tu (auto) respuesta. - Otro becario de literatura – cforster

+0

Para que esto funcione, primero necesitaba descargar "punkt": nltk.download ('punkt') –

+0

¿Qué hace el rU? Encontrado: f = abrir ('myfile.txt', 'rU') # rU significa "leer", y maneja terminaciones de línea – ProfVersaggi

13

Para una importación estructurado de varios archivos:

from nltk.corpus import PlaintextCorpusReader 

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

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

véase: NLTK 3 book/sección 1.9

+0

Me alegré de ver esto, ya que el método anterior (arriba) no funcionó para mi. Por desgracia, otro mensaje de error. No le gustó la línea que involucra a PlaintextCorpusReader: UnicodeDecodeError: el códec 'utf8' no puede decodificar el byte 0xe8 en la posición 50: byte de continuación no válido –

Cuestiones relacionadas