我想计算LDA主题之间的余弦相似度。事实上,gensim函数.matutils.cossim可以做到,但我不知道我可以使用哪个参数(向量)?
以下是代码片段:
import numpy as np
import lda
from sklearn.feature_extraction.text import CountVectorizer
cvectorizer = CountVectorizer(min_df=4, max_features=10000, stop_words='english')
cvz = cvectorizer.fit_transform(tweet_texts_processed)
n_topics = 8
n_iter = 500
lda_model = lda.LDA(n_topics=n_topics, n_iter=n_iter)
X_topics = lda_model.fit_transform(cvz)
n_top_words = 6
topic_summaries = []
topic_word = lda_model.topic_word_ # get the topic words
vocab = cvectorizer.get_feature_names()
for i, topic_dist in enumerate(topic_word):
topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n_top_words+1):-1]
topic_summaries.append(' '.join(topic_words))
print('Topic {}: {}'.format(i, ' '.join(topic_words)))
doc_topic = lda_model.doc_topic_
lda_keys = []
for i, tweet in enumerate(tweets):
lda_keys += [X_topics[i].argmax()]
import gensim
from gensim import corpora, models, similarities
#Cosine Similarity between LDA topics
**sim = gensim.matutils.cossim(LDA_topic[1], LDA_topic[2])**
答案 0 :(得分:0)
您可以使用词主题分布向量。 您需要两个主题向量具有相同的维度,并且元组的第一个元素为 int,第二个元素为 float。
vec1 (list of (int, float))
所以第一个元素是 word_id,你可以在模型的 id2word 变量中找到它。 如果你有两个模型,你需要联合字典。 您的向量必须是:
[(1, 0.541223), (2, 0.44123)]
然后你可以比较它们。