Jorge, amigos de R-help
obtengo lo siguiente:
chr [1:150] "qB001" "qB002" "qB003" "qB004" "qB005" "qB006" "qB007" ...
Gracias y saludos
Oscar
El 12 de abril de 2015, 20:15, Jorge I Velez <jorgeivanvelez en gmail.com>
escribió:
Hola Oscar,
A lo mejor este equivocado, pero creo que necesitas
read.table(bNames[[i]])
en lugar de
bNames[[i]]
Como esta, bNames[[i]] corresponde al nombre del corupus, no al corpus
como tal.
Nos ayudaria muchisimo el resultado de
str(bNames)
Saludos cordiales,
Jorge.-
2015-04-13 9:25 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com>:
Jorge, estimados colaboradores de R-help
Estuve tratando de utilizar un script para uno de los pasos en mi
análisis, que es transformar cada uno de los corpus en mi espacio de
trabajo en un objeto TermDocumentMatrix
Tengo un vector llamado bNames que lista todos los corpus que quiero
pasar a TDM, y construà los siguientes comandos:
tdm.n1 <- vector('list', length = length(bNames))
for(i in seq_along(tdm.n1)){
tdm.n1.[[i]] <-
TermDocumentMatrix(bNames[[i]],control=list(tokenize=nGram1Tok))
}
pero obtengo el siguiente error:
Error in UseMethod("TermDocumentMatrix", x) :
no applicable method for 'TermDocumentMatrix' applied to an object of
class "character"
entonces revisé qué es lo que bNames[[i]] le está pasando al for
bNames[[1]]
[1] "qB001"
Una cadena de texto, no el corpus llamado "qB001"!!, por eso obtengo el
error.
Alguien se le ocurre cómo hacer para que lea cada uno de los objetos en
la lista y se los pase de a uno a la función?
Muchas gracias por adelantado
Oscar
El 10 de abril de 2015, 11:28, Jorge I Velez <jorgeivanvelez en gmail.com>
escribió:
Oscar,
Cambia
(l[i])
por
read.table(l[i])
Olvide leer cada archivo en el codigo anterior.
Saludos,
Jorge.-
2015-04-11 0:02 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com>:
Jorge
Gracias por el consejo. Aparentemente no lo estoy aplicando bien, pues
el objeto que obtengo no contiene lo que quiero.
Me explico, al ejecutar
txt <- vector('list', length = length(names)) #names el el vector
donde ya tenÃa almacenada la lista de txt's
for(i in seq_along(txt)){
txt[[i]] <- Corpus(VectorSource(names[i]))
}
obtengo el objeto txt:
[1] "list"
si extraigo solamente el primer objeto de esa lista:
<<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
si quiero ver el contenido del primer copus
<<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
[[1]]
<<PlainTextDocument (metadata: 7)>>
qB001.txt
me informa cosas sobre el objeto, pero los datos no están allÃ...
deberÃa mostrarme algo asà como:
inspect(cbD02[1:1]) #inspecciono el corpus cbD120, creado a mano por
la sentencia cbD120<-Corpus(VectorSource(qT120))
#......contenido del corpus......
I went to go see some gypsy to tell me my future, but she asked for my
photograph instead.
itz me the one who was talkin to u last time !!!
starts at 4pm. come get sunny munny :)
kind of scary to imagine what needs military wiping!!!!
#.....más.contenido del corpus......
si quiero aplicarle un función propia de limpieza de corpus, por
ejemplo eliminar los números presentes en el corpus
tm_map(txt[[1]], removeNumbers)
<<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
no hace nada de nada...
Saludos
Oscar
El 10 de abril de 2015, 1:15, Jorge I Velez <jorgeivanvelez en gmail.com>
escribió:
Oscar,
Una forma de trabajar con este tipo de archivos es utilizando listas:
# directorio del proyecto
setwd('~/proyecto')
# archivos de texto
l <- list.files(pattern = '.txt')
# procesamiento
txt <- vector('list', length = length(l))
for(i in seq_along(txt)){
txt[[i]] <- Corpus(VectorSource(l[i]))
}
# para acceder a la informacion del primero archivo, solo debes
escribir
txt[[1]]
Espero sea de utilidad.
Saludos,
Jorge.-
2015-04-10 14:14 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com
Hola a todos!
Estoy en un proyecto de text mining y por razones de los recursos
con que
cuento tuve que separar los archivos de texto de input del proyecto
en
muchos archivos pequeños.
Luego de transformar cada uno de estos archivos en un corpus
separado,
puedo aplicar limpieza sobre cada corpus, buscar n-gramas, construir
cada
termDocumentMatrix y finalmente reunir todo en una sola TDM.
Pero estoy atorado en el paso de transformar cada uno de los
archivos en
corpus mediante un loop. Es decir que en lugar de hacer esto
infinitas
veces:
#Librerias necesarias
library(tm)
corpus_001<-Corpus(VectorSource(qBlog001))
corpus_002<-Corpus(VectorSource(qBlog002))
corpus_003<-Corpus(VectorSource(qBlog003))
.........
corpus_150<-Corpus(VectorSource(qBlog150))
........
quisiera poder armar un loop que haga el trabajo, como por ejemplo
#lista con los nombres que quiero para cada corpus
c_names <- paste("corpus_",formatC(seq(length(bNames)),
width=3, flag="0"),
sep="")
donde bNames es la lista de los df que tengo cargados "qBlog001"
"qBlog002"..."qBlog150"...
algo asà es lo que tengo en mente:
for (i in bNames) {
for (j in c_names) {
j<- Corpus(VectorSource(i))
}
}
Pero no funciona, he probado con lapply, con sapply, con llply de la
librerÃa (plyr) y no encuentro la manera de hacerlo..
Cualquier sugerencia sera bienvenida!
Muchas gracias por adelantado!
--
Oscar Benitez
[[alternative HTML version deleted]]