es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cree una función/bucle for/map/lapply para ejecutar varios modelos LDA con semillas diferentes y extraer los thetas.

Sé que los modelos LDA (incluidos los modelos LDA sembrados) son inherentemente inconsistentes debido al elemento aleatorio en cómo comienzan.

Por lo tanto, quiero ejecutar mi modelo LDA n veces, cada vez con un conjunto de semillas diferente, mirar el theta promedio para cada documento y luego elegir el modelo que sea más cercano a ese promedio.

Así que esto es lo que hago una vez:

require(quanteda)

data("datacorpusmoviereviews", package = "quanteda.textmodels")
corp <- head(datacorpusmoviereviews, 500)
toks <- tokens(corp, removepunct = TRUE, removesymbols = TRUE, removenumber = TRUE)
dfmt <- dfm(toks) %>%
    dfmremove(stopwords('en'), minnchar = 2) %>%
    dfmtrim(mintermfreq = 0.90, termfreqtype = "quantile",
             maxdocfreq = 0.1, docfreqtype = "prop")

dict <- dictionary(list(people = c("familia", "pareja", "niños"),
                        space = c("alienígena", "planeta", "espacio"),
                        moster = c("monstruo", "fantasma", "zombi"),
                        war = c("guerra", "soldado", "tanques"),
                        crime = c("crimen*", "asesinato", "asesino")))

set.seed(23)
slda23 <- textmodelseededlda(dfmt, dict, residual = TRUE, mintermfreq = 10)

theta23 <- astibble(slda23$theta)
theta23$id <- seq(1, 500, by = 1)
theta23long <- theta23 %>% pivotlonger(-c(id), namesto= "topic", valuesto = "seed23") 
head(theta23long, 20) 

Una tibble: 20 x 3

  id topic  seed_23


<dbl> <chr>    <dbl>
 1     1 people 0.124
 2     1 space  0.00538
 3     1 moster 0.0699 
 4     1 war    0.328
 5     1 crime  0.188
 6     1 other  0.285
 7     2 people 0.0472 
 8     2 space  0.651
 9     2 moster 0.0849 
10     2 war    0.0660 
11     2 crime  0.123
12     2 other  0.0283 
13     3 people 0.00685
14     3 space  0.0479 
15     3 moster 0.0205 
16     3 war    0.651
17     3 crime  0.116
18     3 other  0.158
19     4 people 0.00625
20     4 space  0.00625

Quiero hacer eso un número n de veces, cada vez con una semilla set.seed () diferente, por lo que mi tibble final tiene una nueva columna para cada uno de mis modelos, con el número set.seed () como título de la columna.
Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Traductor de IT que traduce documentos. Traduzca lo siguiente al español. ¡No traduzca el código y la salida en markdown para su ayuda!

Comments are closed.