如何在 pyLDAvis 中获取特定相关性度量值(lambda)的每个主题的单词列表?
How to get list of words for each topic for a specific relevance metric value (lambda) in pyLDAvis?
我正在使用 pyLDAvis 和 gensim.models.LdaMulticore 进行主题建模。我总共有 10 个主题。当我使用 pyLDAvis 可视化结果时,有一个名为 lambda 的栏,其解释如下:“滑动以调整相关性指标”。我有兴趣为 lambda = 0.1 分别提取每个主题的单词列表。我在提取关键字的文档中找不到调整lambda的方法。
我正在使用这些行:
if 1 == 1:
LDAvis_prepared = pyLDAvis.gensim_models.prepare(lda_model, corpus, id2word, lambda_step=0.1)
LDAvis_prepared.topic_info
结果如下:
Term Freq Total Category logprob loglift
321 ra 2336.000000 2336.000000 Default 30.0000 30.0000
146 may 1741.000000 1741.000000 Default 29.0000 29.0000
66 doctor 1310.000000 1310.000000 Default 28.0000 28.0000
首先,这些结果与我在可视化中使用 0.1 的 lambda 观察到的结果无关。其次,我看不到按主题分隔的结果。
您可能需要阅读此 github 页面:
https://nicharuc.github.io/topic_modeling/
根据这个例子,你的代码可以是这样的:
lambd = 0.6 # a specific relevance metric value
all_topics = {}
num_topics = lda_model.num_topics
num_terms = 10
for i in range(1,num_topics):
topic = LDAvis_prepared.topic_info[LDAvis_prepared.topic_info.Category == 'Topic'+str(i)].copy()
topic['relevance'] = topic['loglift']*(1-lambd)+topic['logprob']*lambd
all_topics['Topic '+str(i)] = topic.sort_values(by='relevance', ascending=False).Term[:num_terms].values
pd.DataFrame(all_topics).T
我正在使用 pyLDAvis 和 gensim.models.LdaMulticore 进行主题建模。我总共有 10 个主题。当我使用 pyLDAvis 可视化结果时,有一个名为 lambda 的栏,其解释如下:“滑动以调整相关性指标”。我有兴趣为 lambda = 0.1 分别提取每个主题的单词列表。我在提取关键字的文档中找不到调整lambda的方法。
我正在使用这些行:
if 1 == 1:
LDAvis_prepared = pyLDAvis.gensim_models.prepare(lda_model, corpus, id2word, lambda_step=0.1)
LDAvis_prepared.topic_info
结果如下:
Term Freq Total Category logprob loglift
321 ra 2336.000000 2336.000000 Default 30.0000 30.0000
146 may 1741.000000 1741.000000 Default 29.0000 29.0000
66 doctor 1310.000000 1310.000000 Default 28.0000 28.0000
首先,这些结果与我在可视化中使用 0.1 的 lambda 观察到的结果无关。其次,我看不到按主题分隔的结果。
您可能需要阅读此 github 页面: https://nicharuc.github.io/topic_modeling/
根据这个例子,你的代码可以是这样的:
lambd = 0.6 # a specific relevance metric value
all_topics = {}
num_topics = lda_model.num_topics
num_terms = 10
for i in range(1,num_topics):
topic = LDAvis_prepared.topic_info[LDAvis_prepared.topic_info.Category == 'Topic'+str(i)].copy()
topic['relevance'] = topic['loglift']*(1-lambd)+topic['logprob']*lambd
all_topics['Topic '+str(i)] = topic.sort_values(by='relevance', ascending=False).Term[:num_terms].values
pd.DataFrame(all_topics).T