2011-10-28 16 views
14

Estoy usando el paquete R tm y quiero hacer algo de minería de texto. Este es un documento y se trata como una bolsa de palabras.R archivo de texto y minería de texto ... cómo cargar datos

No entiendo la documentación sobre cómo cargar un archivo de texto y para crear los objetos necesarios para comenzar a utilizar características tales como ....

stemDocument(x, language = map_IETF(Language(x))) 

Así asumir que esta es mi doc "este es una prueba para la carga R "

¿Cómo cargo los datos para el procesamiento de texto y para crear el objeto x?

Respuesta

6

¿No puede simplemente usar la función readPlain de la misma biblioteca? O simplemente podría usar la función scan más común.

mydoc.txt <-scan("./mydoc.txt", what = "character") 
5

De hecho, me pareció bastante complicado para empezar, así que aquí tiene una explicación más amplia.

Primero, debe configurar una fuente para sus documentos de texto. He descubierto que la manera más fácil (especialmente si usted planea en la adición de más documentos, es crear una fuente de directorio que va a leer todos sus archivos en.

source <- DirSource("yourdirectoryname/") #input path for documents 
YourCorpus <- Corpus(source, readerControl=list(reader=readPlain)) #load in documents 

A continuación, puede aplicar la función StemDocument a su Corpus. HTH ..

20

Como @richiemorrisroe me encontré con este mal documentado Así es como consigo mi texto en el uso con el paquete tm y hacer que el término matriz documento:

library(tm) #load text mining library 
setwd('F:/My Documents/My texts') #sets R's working directory to near where my files are 
a <-Corpus(DirSource("/My Documents/My texts"), readerControl = list(language="lat")) #specifies the exact folder where my text file(s) is for analysis with tm. 
summary(a) #check what went in 
a <- tm_map(a, removeNumbers) 
a <- tm_map(a, removePunctuation) 
a <- tm_map(a , stripWhitespace) 
a <- tm_map(a, tolower) 
a <- tm_map(a, removeWords, stopwords("english")) # this stopword file is at C:\Users\[username]\Documents\R\win-library\2.13\tm\stopwords 
a <- tm_map(a, stemDocument, language = "english") 
adtm <-DocumentTermMatrix(a) 
adtm <- removeSparseTerms(adtm, 0.75) 

en este caso no es necesario especifique el nombre exacto del archivo. Siempre y cuando sea el único en t El directorio al que se hace referencia en la línea 3, será utilizado por las funciones tm. Lo hago de esta manera porque no he tenido éxito al especificar el nombre de archivo en la línea 3.

Si alguien puede sugerir cómo introducir texto en el paquete lda, le agradecería muchísimo. No he podido resolver eso en absoluto.

+1

acabo de descubrir que no parece que la función stemDocument a trabajar en absoluto a menos que se especifique el idioma, por lo que he editado mi código anterior para incluir eso. – Ben

2

Creo que lo que quería hacer era leer un archivo individual en un corpus y luego hacerlo tratar las diferentes filas en el archivo de texto como observaciones diferentes.

ver si esto le da lo que quiere:

text <- read.delim("this is a test for R load.txt", sep = "/t") 
text_corpus <- Corpus(VectorSource(text), readerControl = list(language = "en")) 

Esto es suponiendo que el archivo "Esta es una prueba para R load.txt" tiene sólo una columna que tiene los datos de texto.

Aquí el "text_corpus" es el objeto que está buscando.

Espero que esto ayude.

0

Aquí está mi solución para un archivo de texto con una línea por observación. la última viñeta en tm (feb 2017) da más detalles.

text <- read.delim(textFileName, header=F, sep = "\n",stringsAsFactors = F) 
colnames(text) <- c("MyCol") 
docs <- text$MyCol 
a <- VCorpus(VectorSource(docs)) 
Cuestiones relacionadas