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.