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

17

He usado LDA en un corpus de documentos y encontré algunos temas. La salida de mi código es dos matrices que contienen probabilidades; probabilidades de un tema de documento y las otras probabilidades de tema de palabras. Pero en realidad no sé cómo usar estos resultados para predecir el tema de un nuevo documento. Estoy usando el muestreo de Gibbs. ¿Alguien sabe cómo? Gracias

Hossein
fuente
1
¿Qué quiere decir con "predecir el tema de un nuevo documento"? ¿Desea encontrar de qué tema único se generó este documento? ¿Desea encontrar una mezcla de temas para el documento? ¿Desea etiquetar cada palabra en el nuevo documento por el tema del que proviene la palabra?
SheldonCooper
¿Desea encontrar de qué tema único se generó este documento? ¿Desea encontrar una combinación de temas para el documento? - Quiero responder ambas preguntas en realidad ... pero mi corpus es realmente grande, por lo que no puedo permitirme volver a entrenar todo mi modelo cada vez que un documento nuevo es examinado
Hossein

Respuestas:

21

Intentaría 'doblar'. Esto se refiere a tomar un nuevo documento, agregarlo al corpus y luego ejecutar el muestreo de Gibbs solo en las palabras de ese nuevo documento , manteniendo las asignaciones de temas de los documentos antiguos iguales. Esto generalmente converge rápido (tal vez 5-10-20 iteraciones), y no necesita muestrear su antiguo corpus, por lo que también funciona rápido. Al final, tendrá la asignación de temas para cada palabra en el nuevo documento. Esto le dará la distribución de temas en ese documento.

En su muestra 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 el mismo, excepto que comienza con las matrices existentes, les agrega los tokens del nuevo documento y realiza el muestreo solo para los nuevos tokens. Es decir:

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

pwiwijwj

jpwji
Sheldon Cooper
fuente
gracias por tu respuesta Leí algunas cosas sobre pero todavía un poco confundido acerca de "plegarse". ¿Está diciendo que debería mantener las asignaciones de temas de los documentos antiguos igual, esto significa que las asignaciones de temas de palabras deben ser recalculadas? ¿Es posible que me des unos pasos más detallados de lo que se debe hacer? o quizás remitiéndome a un documento o un enlace que realmente me puede ayudar a aclarar este proceso de "plegado". Mi primera opción es hacer "plegar". Si no tiene éxito, iré por el segundo método que propuso (no estoy seguro de qué tan bien funciona en comparación con plegar). Gracias.
Hossein
@SheldonCooper: si te entiendo correctamente, entonces dudo que esta sea la forma de hacerlo: lo que haces es como si midieras el rendimiento de un SVM en una nueva muestra de prueba dando al algoritmo de optimización unos pasos más desde la solución actual que incluye la muestra de prueba y luego la evalúa en esta muestra ... pero: en el aprendizaje automático, es posible que nunca pruebe en su conjunto de entrenamiento ... y al incluir la muestra de prueba en el modelo, hace exactamente eso: prueba en un muestra de entrenamiento ...
Fabian Werner
@FabianWerner Creo que la solución no actualizó la matriz de tema de palabras de la capacitación original. Simplemente vuelve a ejecutar una muestra de Gibbs que comienza con la matriz de temas de palabras capacitada, y crea una nueva matriz de temas de documentos. En cualquier caso, ¿conoce otra forma de hacer lo que le pidió el OP (es cierto que hace varios años)? Estoy viendo el mismo problema.
thecity2
@ thecity2 Aunque tengo dudas sobre este problema por un tiempo, debo decir tristemente que todavía no tengo una solución. Si encuentra uno, ¡hágamelo saber!
Fabian Werner
@FabianWerner No tiene un tren y un conjunto de pruebas para este problema; su comentario es irrelevante aquí. Este es un aprendizaje no supervisado, al igual que la agrupación.
emem