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:> class(txt)[1] "list" si extraigo solamente el primer objeto de esa lista:> txt[[1]]<<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> si quiero ver el contenido del primer copus> inspect(txt[[1]])<<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]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > >-- Oscar Benitez [[alternative HTML version deleted]]
Estimado Oscar Benitez ¿Es posible realizar textminig a partir de un JSON? Porque se me ocurre usar la idea de Jorge Velez, pero leer los archivos separados y colocarlos en un JSON, ahí estarían todos en un solo archivo de texto, luego trabaja sobre este realizando un loop (según su idea). Javier Marcuzzi El 10 de abril de 2015, 11:02, Oscar Benitez <oscar.benitez1962 en gmail.com> escribió:> 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: > > class(txt) > [1] "list" > > si extraigo solamente el primer objeto de esa lista: > > txt[[1]] > <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> > > si quiero ver el contenido del primer copus > > > inspect(txt[[1]]) > <<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]] > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es en r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > > > > > > > -- > Oscar Benitez > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Hola a todos Finalmente le encontré la vuelta a lo que buscaba hacer. Muchas gracias por sus aportes! El resultado final es bien simple: #Librerias necesarias library(tm) #directorio de trabajo setwd("~/Documents/DSC") #esta opción es necesaria para trabajar los datos en el corpus options(stringsAsFactors = FALSE) #lee la lista de archivos a levantar names <- list.files("./Sample",pattern="*.txt") #lista de nombres destino para el for bNames <-substr(names,1,5) #carga los archivos y hace el corpus para cada uno for(i in bNames){ filepath <- paste("./Sample/", i,".txt", sep="") assign(i, Corpus(VectorSource(read.table(filepath,encoding="latin1")))) } El 10 de abril de 2015, 10:17, Javier Marcuzzi < javier.ruben.marcuzzi en gmail.com> escribió:> Estimado Oscar Benitez > > ¿Es posible realizar textminig a partir de un JSON? Porque se me ocurre > usar la idea de Jorge Velez, pero leer los archivos separados y colocarlos > en un JSON, ahí estarían todos en un solo archivo de texto, luego trabaja > sobre este realizando un loop (según su idea). > > Javier Marcuzzi > > El 10 de abril de 2015, 11:02, Oscar Benitez <oscar.benitez1962 en gmail.com> > escribió: > >> 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: >> > class(txt) >> [1] "list" >> >> si extraigo solamente el primer objeto de esa lista: >> > txt[[1]] >> <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> >> >> si quiero ver el contenido del primer copus >> >> > inspect(txt[[1]]) >> <<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]] >> >> >> >> _______________________________________________ >> >> R-help-es mailing list >> >> R-help-es en r-project.org >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >> > >> > >> >> >> -- >> Oscar Benitez >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > >-- Oscar Benitez [[alternative HTML version deleted]]
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: > > class(txt) > [1] "list" > > si extraigo solamente el primer objeto de esa lista: > > txt[[1]] > <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> > > si quiero ver el contenido del primer copus > > > inspect(txt[[1]]) > <<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]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> > > > -- > Oscar Benitez >[[alternative HTML version deleted]]
Estimado Oscar Ahora que lo recuerdo, tengo algo de eso con la lectura de todos los correos de esta lista, si tiene inconvenientes con su código busco en mi disco, incluso creo que alguien más me ayudo con eso, no estoy seguro pero posiblemente en Madrid en algún encuentro presentaron algo. Javier Marcuzzi El 10 de abril de 2015, 12: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: > > > class(txt) > > [1] "list" > > > > si extraigo solamente el primer objeto de esa lista: > > > txt[[1]] > > <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> > > > > si quiero ver el contenido del primer copus > > > > > inspect(txt[[1]]) > > <<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]] > >>> > >>> _______________________________________________ > >>> R-help-es mailing list > >>> R-help-es en r-project.org > >>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>> > >> > >> > > > > > > -- > > Oscar Benitez > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
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: >> > class(txt) >> [1] "list" >> >> si extraigo solamente el primer objeto de esa lista: >> > txt[[1]] >> <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>> >> >> si quiero ver el contenido del primer copus >> >> > inspect(txt[[1]]) >> <<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]] >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es en r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> >>> >>> >> >> >> -- >> Oscar Benitez >> > > >-- Oscar Benitez [[alternative HTML version deleted]]