Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora de ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
[R-es] Cannot allocate a vector of size...
11 messages · Carlos J. Gil Bellosta, Xavier-Andoni Tibau Alberdi, miri@m@@iz@te m@iii@g oii u@@v@rr@@es +2 more
Significa que tus datos són muy grandes y no se pueden guardar en la RAM. Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora de ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Es la primera vez que trabajo con este tipo de datos...No se si se puede dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en la RAM. Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora de ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
La primera matriz es sparse y la segunda no. Tal vez puedas continuar dentro del universo de tm eliminando términos irrelevantes antes de construir una matriz no completa. O tal vez puedas construir una matriz sparse directamente. El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora de ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Depende de la operació que quieras hacer con la matriz. Si quitas filas y columnas en algun momento, quiza lo puedes hacer por bloques y luego la juntas. O quizá puedes cargarlo directamente como data.frame? Quanta RAM tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se puede dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en la RAM. Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora de ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
2 days later
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14 gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué diferencia es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas filas y columnas en algun momento, quiza lo puedes hacer por bloques y luego la juntas. O quizá puedes cargarlo directamente como data.frame? Quanta RAM tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se puede dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
La respuesta de Carlos creo que es mucho mas acertada que la mÃa. Cuando trabajas con una matriz mayoritariamente con 0s, puedes representar-la en forma de sparse matrix, y ocupa mucho menos espacio porque no guardas todos los valores, sino aquellos distintos de 0 y su posición. Estas construyendo la matriz sparse con esto: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) puedes ver aquà <https://www.rdocumentation.org/packages/tm/versions/0.7-7/topics/TermDocumentMatrix> la documentación. Al hacer esto, conviertes la matrz sparse a matriz normal y pones en memoria todos los 0s, que ahora ocupan espacio en la memoria volátil (RAM) de tu ordenador. tdm.reviews.m<-as.matrix(tdm) Estamos hablando de memoria RAM, no del disco duro de tu ordenador. Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de pasar de sparse matrix a matriz normal, consideres en reducir la cantidad de columnas (o filas) de tu matriz. Imagino que es una matriz con frecuencias de palabras, a lo mejor puedes eliminar aquellas columnas que representen términos muy poco usados. O (2) sigas usando la sparse matrix para tu analisis. Espero que se entienda y te sirva de ayuda, Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de febr. 2020 a les 16:05:
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14 gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué diferencia es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas filas y columnas en algun momento, quiza lo puedes hacer por bloques y luego la juntas. O quizá puedes cargarlo directamente como data.frame? Quanta RAM tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se puede dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo este error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Muchas gracias Xabier. He intentaddo trabajar con la sparse matrix pero al pasar tdm a matriz me dice también que "cannot allocate a vector of size 12 gb". He hecho tdm<-as.matrix(tdm) ¿Está bien hecho eso para trabajar con la sparse matrix? Gracias! El Lun, 10 de Febrero de 2020, 16:15, Xavier-Andoni Tibau Alberdi escribió:
La respuesta de Carlos creo que es mucho mas acertada que la mÃa. Cuando trabajas con una matriz mayoritariamente con 0s, puedes representar-la en forma de sparse matrix, y ocupa mucho menos espacio porque no guardas todos los valores, sino aquellos distintos de 0 y su posición. Estas construyendo la matriz sparse con esto: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) puedes ver aquà <https://www.rdocumentation.org/packages/tm/versions/0.7-7/topics/TermDocumentMatrix> la documentación. Al hacer esto, conviertes la matrz sparse a matriz normal y pones en memoria todos los 0s, que ahora ocupan espacio en la memoria volátil (RAM) de tu ordenador. tdm.reviews.m<-as.matrix(tdm) Estamos hablando de memoria RAM, no del disco duro de tu ordenador. Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de pasar de sparse matrix a matriz normal, consideres en reducir la cantidad de columnas (o filas) de tu matriz. Imagino que es una matriz con frecuencias de palabras, a lo mejor puedes eliminar aquellas columnas que representen términos muy poco usados. O (2) sigas usando la sparse matrix para tu analisis. Espero que se entienda y te sirva de ayuda, Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de febr. 2020 a les 16:05:
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14 gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué diferencia es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas
filas y
columnas en algun momento, quiza lo puedes hacer por bloques y luego
la
juntas. O quizá puedes cargarlo directamente como data.frame? Quanta
RAM
tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se
puede
dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en
la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la
hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo
este
error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Me temo que no tengo demasiada experiencia en trabajar con sparse matrix en R. Definitivamente cuando haces 'as.matrix(x)' estas convirtiendo x en una matriz normal, no sparse. He visto que existe el paquete slam para trabajar con ellas (documentación <https://www.rdocumentation.org/packages/slam/versions/0.1-47>). DeberÃas ver si las opciones del paquete te permiten hacer lo que quieres. FaltarÃa más información de que haces luego con la matriz, para poder saber si es posible dividir-la. Te pongo un ejemplo, si quieres calcular el valor promedio de las columnas, puedes dividir la matriz en dos, calcularlos por separado y luego juntar los resultados. Pero si tu matriz sirve para hacer una regresión lineal, no puedes, puesto que necesitas la inversa de la matriz y no se puede calcular a partir de dos mitades. A ver si con el paquete slam puedes continuar, sino deberÃas compartir que haces luego con la matriz para que podamos intentar aconsejarte. Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de febr. 2020 a les 16:56:
Muchas gracias Xabier. He intentaddo trabajar con la sparse matrix pero al pasar tdm a matriz me dice también que "cannot allocate a vector of size 12 gb". He hecho tdm<-as.matrix(tdm) ¿Está bien hecho eso para trabajar con la sparse matrix? Gracias! El Lun, 10 de Febrero de 2020, 16:15, Xavier-Andoni Tibau Alberdi escribió:
La respuesta de Carlos creo que es mucho mas acertada que la mÃa. Cuando trabajas con una matriz mayoritariamente con 0s, puedes representar-la en forma de sparse matrix, y ocupa mucho menos espacio porque no guardas todos los valores, sino aquellos distintos de 0 y su posición. Estas construyendo la matriz sparse con esto: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) puedes ver aquà <
la documentación. Al hacer esto, conviertes la matrz sparse a matriz normal y pones en memoria todos los 0s, que ahora ocupan espacio en la memoria volátil
(RAM)
de tu ordenador. tdm.reviews.m<-as.matrix(tdm) Estamos hablando de memoria RAM, no del disco duro de tu ordenador. Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de
pasar
de sparse matrix a matriz normal, consideres en reducir la cantidad de columnas (o filas) de tu matriz. Imagino que es una matriz con
frecuencias
de palabras, a lo mejor puedes eliminar aquellas columnas que representen términos muy poco usados. O (2) sigas usando la sparse matrix para tu analisis. Espero que se entienda y te sirva de ayuda, Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de
febr.
2020 a les 16:05:
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14 gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué diferencia es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas
filas y
columnas en algun momento, quiza lo puedes hacer por bloques y luego
la
juntas. O quizá puedes cargarlo directamente como data.frame? Quanta
RAM
tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se
puede
dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en
la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es> escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la
hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo
este
error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola Miriam,
Puedes hacer varias cosas para salir al paso:
- El flujo proceso que se suele seguir en este tipo de análisis es el de
cargar todos los documentos a una gran matriz (documento/palabra) sobre la
que luego te quitas muchas palabras "inútiles" (las stopwords). Pues lo que
puedes hacer de primeras, es sobre tus ficheros de palabras de entrada
limpiarles y quitarles estas palabras (preposiciones, artÃculos y
adverbios) con esto minimizas mucho el número de palabras a representar.
También habrá palabras que en tu tipo de análisis significarán poco (me lo
invento la palabra "producto" por ejemplo).
- ¿Cómo limpio esto en mis ficheros?. Puedes hacerlo con cierta
facilidad utilizando comandos de linux (grep, sed en particular).
- Una vez que has limpiado todo esto, puedes volver a probar a cargar
el nuevo fichero en "tm" y proceder con el análisis. Si es que tu memoria
RAM (no el disco como te han dicho) es la suficiente.
- Realmente, si estás interesada en conocer la frecuencia de palabras
para luego pintar una "inútil" nube de palabras, puedes
incluso calcular la
frecuencia de aparición igualmente con un comando de linux (unique). Y
luego usar el paquete "wordcloud2" para pintar la nubecita. :-).
- Como alternativa, como supongo que querrás analizar sentimiento, y
estas cosa o incluso ver POS cambiarÃa de tercio y no usarÃa "tm" me
pasarÃa a la librerÃa "udpipe" o en su defecto a la librerÃa (tidytext) del
que Julia Silge (su autora, tiene su libro de cómo usar su librerÃa en
abierto:
https://www.tidytextmining.com/tidytext.html#the-unnest_tokens-function).
Saludos,
Carlos Ortega
www.qualityexcellence.es
El lun., 10 feb. 2020 a las 17:20, Xavier-Andoni Tibau Alberdi (<
xavitibau en gmail.com>) escribió:
Me temo que no tengo demasiada experiencia en trabajar con sparse matrix en R. Definitivamente cuando haces 'as.matrix(x)' estas convirtiendo x en una matriz normal, no sparse. He visto que existe el paquete slam para trabajar con ellas (documentación <https://www.rdocumentation.org/packages/slam/versions/0.1-47>). DeberÃas ver si las opciones del paquete te permiten hacer lo que quieres. FaltarÃa más información de que haces luego con la matriz, para poder saber si es posible dividir-la. Te pongo un ejemplo, si quieres calcular el valor promedio de las columnas, puedes dividir la matriz en dos, calcularlos por separado y luego juntar los resultados. Pero si tu matriz sirve para hacer una regresión lineal, no puedes, puesto que necesitas la inversa de la matriz y no se puede calcular a partir de dos mitades. A ver si con el paquete slam puedes continuar, sino deberÃas compartir que haces luego con la matriz para que podamos intentar aconsejarte. Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de febr. 2020 a les 16:56:
Muchas gracias Xabier. He intentaddo trabajar con la sparse matrix pero al pasar tdm a matriz me dice también que "cannot allocate a vector of size 12 gb". He hecho tdm<-as.matrix(tdm) ¿Está bien hecho eso para trabajar con la sparse matrix? Gracias! El Lun, 10 de Febrero de 2020, 16:15, Xavier-Andoni Tibau Alberdi
escribió:
La respuesta de Carlos creo que es mucho mas acertada que la mÃa.
Cuando
trabajas con una matriz mayoritariamente con 0s, puedes representar-la
en
forma de sparse matrix, y ocupa mucho menos espacio porque no guardas todos los valores, sino aquellos distintos de 0 y su posición. Estas construyendo la matriz sparse con esto: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) puedes ver aquà <
la documentación. Al hacer esto, conviertes la matrz sparse a matriz normal y pones en memoria todos los 0s, que ahora ocupan espacio en la memoria volátil
(RAM)
de tu ordenador. tdm.reviews.m<-as.matrix(tdm) Estamos hablando de memoria RAM, no del disco duro de tu ordenador. Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de
pasar
de sparse matrix a matriz normal, consideres en reducir la cantidad de columnas (o filas) de tu matriz. Imagino que es una matriz con
frecuencias
de palabras, a lo mejor puedes eliminar aquellas columnas que
representen
términos muy poco usados. O (2) sigas usando la sparse matrix para tu analisis. Espero que se entienda y te sirva de ayuda, Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de
febr.
2020 a les 16:05:
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa 14 gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué
diferencia
es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas
filas y
columnas en algun momento, quiza lo puedes hacer por bloques y luego
la
juntas. O quizá puedes cargarlo directamente como data.frame?
Quanta
RAM
tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si se
puede
dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar en
la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es>
escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A la
hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting
=weightTf))
tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda tengo
este
error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de R. Un saludo Miriam
_______________________________________________ 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]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Estimada Miriam Alzate
Creo que casi todos pasamos por un problema semejante, por las dudas ¿usted
utiliza alguna librerÃa para realizar el análisis o se encuentra
escribiendo desde cero utilizando matrices? Un matemático puede explicarlo
mucho mejor, pero cuándo yo comencé a ver matrices transpuestas, y varias
en modelos muy semejantes a los modelos mixtos, encontré una cantidad de
requerimientos de memoria impresionantes, luego me aprendà que matriz común
solo es útil cuándo los datos son pocos, a nivel industrial no hay
computadora que pueda. Seguramente si utiliza algún paquete este contempla
el problema y automáticamente trabaja sobre la memoria. ¿Utilizo algo como
lo siguiente (copio y pego)?
library(Matrix)
A <- as(regMat, "sparseMatrix") # see also `vignette("Intro2Matrix")`
B <- Matrix(regMat, sparse = TRUE) # Thanks to Aaron for pointing this out
identical(A, B)
Javier Rubén Marcuzzi
El lun., 10 feb. 2020 a las 16:05, Carlos Ortega (<cof en qualityexcellence.es>)
escribió:
Hola Miriam,
Puedes hacer varias cosas para salir al paso:
- El flujo proceso que se suele seguir en este tipo de análisis es el de
cargar todos los documentos a una gran matriz (documento/palabra) sobre
la
que luego te quitas muchas palabras "inútiles" (las stopwords). Pues lo
que
puedes hacer de primeras, es sobre tus ficheros de palabras de entrada
limpiarles y quitarles estas palabras (preposiciones, artÃculos y
adverbios) con esto minimizas mucho el número de palabras a representar.
También habrá palabras que en tu tipo de análisis significarán poco (me
lo
invento la palabra "producto" por ejemplo).
- ¿Cómo limpio esto en mis ficheros?. Puedes hacerlo con cierta
facilidad utilizando comandos de linux (grep, sed en particular).
- Una vez que has limpiado todo esto, puedes volver a probar a cargar
el nuevo fichero en "tm" y proceder con el análisis. Si es que tu
memoria
RAM (no el disco como te han dicho) es la suficiente.
- Realmente, si estás interesada en conocer la frecuencia de palabras
para luego pintar una "inútil" nube de palabras, puedes
incluso calcular la
frecuencia de aparición igualmente con un comando de linux
(unique). Y
luego usar el paquete "wordcloud2" para pintar la nubecita. :-).
- Como alternativa, como supongo que querrás analizar sentimiento, y
estas cosa o incluso ver POS cambiarÃa de tercio y no usarÃa "tm" me
pasarÃa a la librerÃa "udpipe" o en su defecto a la librerÃa (tidytext)
del
que Julia Silge (su autora, tiene su libro de cómo usar su librerÃa en
abierto:
https://www.tidytextmining.com/tidytext.html#the-unnest_tokens-function
).
Saludos,
Carlos Ortega
www.qualityexcellence.es
El lun., 10 feb. 2020 a las 17:20, Xavier-Andoni Tibau Alberdi (<
xavitibau en gmail.com>) escribió:
Me temo que no tengo demasiada experiencia en trabajar con sparse matrix
en
R. Definitivamente cuando haces 'as.matrix(x)' estas convirtiendo x en
una
matriz normal, no sparse. He visto que existe el paquete slam para
trabajar
con ellas (documentación <https://www.rdocumentation.org/packages/slam/versions/0.1-47>).
DeberÃas
ver si las opciones del paquete te permiten hacer lo que quieres. FaltarÃa más información de que haces luego con la matriz, para poder
saber
si es posible dividir-la. Te pongo un ejemplo, si quieres calcular el
valor
promedio de las columnas, puedes dividir la matriz en dos, calcularlos
por
separado y luego juntar los resultados. Pero si tu matriz sirve para
hacer
una regresión lineal, no puedes, puesto que necesitas la inversa de la matriz y no se puede calcular a partir de dos mitades. A ver si con el paquete slam puedes continuar, sino deberÃas compartir
que
haces luego con la matriz para que podamos intentar aconsejarte. Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de
febr.
2020 a les 16:56:
Muchas gracias Xabier. He intentaddo trabajar con la sparse matrix pero al pasar tdm a matriz
me
dice también que "cannot allocate a vector of size 12 gb". He hecho tdm<-as.matrix(tdm) ¿Está bien hecho eso para trabajar con la sparse matrix? Gracias! El Lun, 10 de Febrero de 2020, 16:15, Xavier-Andoni Tibau Alberdi
escribió:
La respuesta de Carlos creo que es mucho mas acertada que la mÃa.
Cuando
trabajas con una matriz mayoritariamente con 0s, puedes
representar-la
en
forma de sparse matrix, y ocupa mucho menos espacio porque no guardas todos los valores, sino aquellos distintos de 0 y su posición. Estas construyendo la matriz sparse con esto: tdm<-TermDocumentMatrix(corpus,control=list(weighting =weightTf)) puedes ver aquà <
la documentación. Al hacer esto, conviertes la matrz sparse a matriz normal y pones en memoria todos los 0s, que ahora ocupan espacio en la memoria volátil
(RAM)
de tu ordenador. tdm.reviews.m<-as.matrix(tdm) Estamos hablando de memoria RAM, no del disco duro de tu ordenador. Entiendo que tal y como sugiere Carlos, (1) lo mejor es que antes de
pasar
de sparse matrix a matriz normal, consideres en reducir la cantidad
de
columnas (o filas) de tu matriz. Imagino que es una matriz con
frecuencias
de palabras, a lo mejor puedes eliminar aquellas columnas que
representen
términos muy poco usados. O (2) sigas usando la sparse matrix para tu analisis. Espero que se entienda y te sirva de ayuda, Saludos, Xavier Tibau Missatge de l'adreça <miriam.alzate en unavarra.es> del dia dl., 10 de
febr.
2020 a les 16:05:
Buenas, El archivo de R ocupa 33 megas. La matriz que quiero construir cupa
14
gb. En el disco local (C) tengo 400 gb disponibles de 670. No estoy muy puesta en trabajar con este tipo de datos. ¿Qué
diferencia
es trabajar con data.frame? Gracias! El Vie, 7 de Febrero de 2020, 18:07, Xavier-Andoni Tibau Alberdi escribió:
Depende de la operació que quieras hacer con la matriz. Si quitas
filas y
columnas en algun momento, quiza lo puedes hacer por bloques y
luego
la
juntas. O quizá puedes cargarlo directamente como data.frame?
Quanta
RAM
tienes? Cuanto pésan los datos? El vie., 7 feb. 2020 18:04, <miriam.alzate en unavarra.es> escribió:
Es la primera vez que trabajo con este tipo de datos...No se si
se
puede
dividir esa matriz. ¿Cómo lo podrÃa hacer? Muchas gracias! El Vie, 7 de Febrero de 2020, 17:55, Xavier-Andoni Tibau Alberdi escribió:
Significa que tus datos són muy grandes y no se pueden guardar
en
la
RAM.
Tienes alternativas para dividir la matriz? El vie., 7 feb. 2020 17:26, <miriam.alzate en unavarra.es>
escribió:
Buenas tardes, Estoy haciendo un análisis de contenido con el paquete tm. A
la
hora
de
ejecutar este código: tdm<-TermDocumentMatrix(corpus,control=list(weighting
=weightTf))
tdm.reviews.m<-as.matrix(tdm) La primera lÃnea sà me la ejecuta bien pero en la segunda
tengo
este
error: Error: cannot allocate vector of size 14.0 Gb ¿Cómo puedo corregirlo? Estoy usando la versión de 64bits de
R.
Un saludo Miriam
_______________________________________________ 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]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[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