topic python nlp lda gensim

python - topic - gensim lda



Python Gensim: ¿cómo calcular la similitud del documento utilizando el modelo LDA? (2)

Depende de la métrica de similitud que quieras usar.

La similitud de coseno es universalmente útil e built-in :

sim = gensim.matutils.cossim(vec_lda1, vec_lda2)

La distancia de Hellinger es útil para la similitud entre las distribuciones de probabilidad (como los temas de LDA):

import numpy as np dense1 = gensim.matutils.sparse2full(lda_vec1, lda.num_topics) dense2 = gensim.matutils.sparse2full(lda_vec2, lda.num_topics) sim = np.sqrt(0.5 * ((np.sqrt(dense1) - np.sqrt(dense2))**2).sum())

Tengo un modelo LDA entrenado y quiero calcular la puntuación de similitud entre dos documentos del corpus en el que entrené a mi modelo. Después de estudiar todos los tutoriales y funciones de Gensim, todavía no puedo entenderlo. ¿Alguien puede darme una pista? ¡Gracias!


No sé si esto ayudará, pero logré resultados exitosos en la coincidencia de documentos y similitudes al usar el documento real como una consulta.

dictionary = corpora.Dictionary.load(''dictionary.dict'') corpus = corpora.MmCorpus("corpus.mm") lda = models.LdaModel.load("model.lda") #result from running online lda (training) index = similarities.MatrixSimilarity(lda[corpus]) index.save("simIndex.index") docname = "docs/the_doc.txt" doc = open(docname, ''r'').read() vec_bow = dictionary.doc2bow(doc.lower().split()) vec_lda = lda[vec_bow] sims = index[vec_lda] sims = sorted(enumerate(sims), key=lambda item: -item[1]) print sims

Tu puntaje de similitud entre todos los documentos que residen en el corpus y el documento que se usó como consulta será el segundo índice de cada sim para sims.