Hagamos un poco de texto MineríaConversión de un plazo Matriz de documentos en una matriz con una gran cantidad de datos provoca desbordamiento
Aquí estoy con una matriz concepto documento (del tm
paquete)
dtm <- TermDocumentMatrix(
myCorpus,
control = list(
weight = weightTfIdf,
tolower=TRUE,
removeNumbers = TRUE,
minWordLength = 2,
removePunctuation = TRUE,
stopwords=stopwords("german")
))
Cuando hago un
typeof(dtm)
veo que se trata de una "lista" y la estructura se parece a
Docs
Terms 1 2 ...
lorem 0 0 ...
ipsum 0 0 ...
... .......
así que trato de un
wordMatrix = as.data.frame(t(as.matrix( dtm)))
que funcione para 1000 Documentos.
Pero cuando intento usar 40000, ya no funciona.
me sale este error:
Fehler in vector(typeof(x$v), nr * nc) : Vektorgröße kann nicht NA sein
Zusätzlich: Warnmeldung:
In nr * nc : NAs durch Ganzzahlüberlauf erzeugt
error en vector ...: Vector no puede ser NA adicional: En AN NC * nr creados por desbordamiento de entero
Por lo tanto, miró as.matrix y resulta que de alguna manera la función la convierte en un vector con as.vector y luego a una matriz. La conversión a un vector funciona pero no la del vector a la matriz dosen't.
¿Tiene alguna sugerencia cuál podría ser el problema?
Gracias, El Desbordamiento de enteros capitán
Una manera fácil de obtener su DTM bajo el límite de memoria puede ser para eliminar términos dispersos usando la función 'tm :: removeSparseTerms' – Ben
Una forma fácil de evitar la inclusión de términos muy raros o que ocurren solo en primer lugar es usar' DocumentTermMatrix (..., control (... bounds = list (global = c (N, Inf)))) 'y establecer N a, por ejemplo, 2,3,4 ... hasta que el tamaño sea lo suficientemente pequeño. – smci