有一个大的 pandas 文本列,我想首先对该列中的整个文本训练 LDA 模型并识别 50 个主题:
doc_clean = df['tweet_tokenized'].tolist()
dictionary = corpora.Dictionary(doc_clean)
doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]
lda = LdaMulticore(doc_term_matrix, id2word=dictionary, num_topics=50)
然后,我想创建与每个主题关联的 50 列,并迭代每一行,并将其属于任何主题的概率放入其相应的主题,并将其余主题置零。
例如,如果在第一行应用训练好的LDA的结果是:
new_doc = dictionary.doc2bow(tweet1)
results = lda(new_doc)
results:
[(1, 0.92), (4,0.42)]
这意味着 tweet1 属于主题 1 的概率为 0.92,属于主题 4 的概率为 0.42,我希望有 50 个与主题 1、主题 2、...、主题 50 关联的新列,然后是主题 1 的值为 0.92,主题 4 为 0.42,所有其他主题为零:
topic1 topic2 topic3 topic4 topic5 ... topic50
tweet1 0.92 0 0 0.42 0 ... 0
是否有任何 Pythonic 方法可以快速完成最后一部分(即填充 50 列)?
最佳答案
这个很好的端到端教程涵盖了您使用的工具、pandas 和 LDA 的需求: https://www.machinelearningplus.com/nlp/topic-modeling-gensim-python/
您要查找的部分是 18. 查找每个句子中的主导主题,19. 查找每个主题最具代表性的文档,以及 20. 跨文档的主题分布。
关于python - 将 LDA 结果从 Pandas 文本列向量化为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584003/