miri@m@@iz@te m@iii@g oii u@@v@rr@@es
2020-Feb-10 15:56 UTC
[R-es] Cannot allocate a vector of size...
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 >> >> >> >> >> > >> >> >> >> >> >> >> > >> >> >> >
Xavier-Andoni Tibau Alberdi
2020-Feb-10 16:18 UTC
[R-es] Cannot allocate a vector of size...
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í > > < > 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 > >> >> >> > >> >> > > >> >> > >> >> > >> >> > >> > > >> > >> > >> > > > > >[[alternative HTML version deleted]]
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í
> > > <
> >
>
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
> > >> >> >>
> > >> >> >
> > >> >>
> > >> >>
> > >> >>
> > >> >
> > >>
> > >>
> > >>
> > >
> >
> >
> >
>
> [[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]]