17 votos

Predicción de temas mediante la asignación de Dirichlet latente

He utilizado LDA en un corpus de documentos y he encontrado algunos temas. El resultado de mi código son dos matrices que contienen probabilidades; una de probabilidades de temas de documentos y otra de probabilidades de temas de palabras. Pero en realidad no sé cómo utilizar estos resultados para predecir el tema de un nuevo documento. Estoy utilizando el muestreo de Gibbs. ¿Alguien sabe cómo hacerlo? Gracias

21voto

Tom Jalinki Puntos 11

Yo probaría a "doblar". Esto se refiere a tomar un nuevo documento, añadirlo al corpus y luego ejecutar el muestreo de Gibbs sólo en las palabras de ese nuevo documento Manteniendo la misma asignación de temas de los documentos antiguos. Esto suele converger rápidamente (tal vez 5-10-20 iteraciones), y no es necesario muestrear el corpus antiguo, por lo que también se ejecuta rápidamente. Al final tendrá la asignación de temas para cada palabra del nuevo documento. Esto le dará la distribución de los temas en ese documento.

En su muestreador de Gibbs, probablemente tenga algo similar al siguiente código:

// This will initialize the matrices of counts, N_tw (topic-word matrix) and N_dt (document-topic matrix)
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Assign current token to a random topic, updating the count matrices
    end
end

// This will do the Gibbs sampling
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Compute probability of current token being assigned to each topic
       Sample a topic from this distribution
       Assign the token to the new topic, updating the count matrices
    end
end

El plegado es lo mismo, salvo que se empieza con las matrices existentes, se les añaden los tokens del nuevo documento y se hace el muestreo sólo para los nuevos tokens. Por ejemplo:

Start with the N_tw and N_dt matrices from the previous step

// This will update the count matrices for folding-in
for token = 1 to N_Tokens_In_New_Document
   Assign current token to a random topic, updating the count matrices
end

// This will do the folding-in by Gibbs sampling
for token = 1 to N_Tokens_In_New_Document
   Compute probability of current token being assigned to each topic
   Sample a topic from this distribution
   Assign the token to the new topic, updating the count matrices
end

Si se hace un LDA estándar, es poco probable que un documento entero haya sido generado por un tema. Así que no sé lo útil que es para calcular la probabilidad del documento bajo un tema. Pero si todavía quieres hacerlo, es fácil. A partir de las dos matrices que obtienes puedes calcular $p^i_w$ la probabilidad de la palabra $w$ en el tema $i$ . Tome su nuevo documento; suponga que el $j$ La palabra es $w_j$ . Las palabras son independientes dado el tema, por lo que la probabilidad es sólo $$\prod_j p^i_{w_j}$$ (tenga en cuenta que probablemente tendrá que calcularlo en el espacio del registro).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X