如何在 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