python - 将 LDA 结果从 Pandas 文本列向量化为多列

标签 python pandas scikit-learn lda

有一个大的 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/

相关文章:

python - 当日期和时间在不同的列中时,将数据从 csv 读取到 pandas

python - Pandas - 根据特定列重新设置值

python - 将 Scaler 与 LassoCV、RidgeCV 一起使用

python - 遍历 Python 中的字符串列表

python - 使用 Pandas 在特定位置创建列

将列表元素作为单个实际参数扩展到函数(如 matlab)的 Pythonic 方法?

python - Scikit 树状图 : How to disable ouput?

python - 如何从 sklearn.feature_selection.SelectKBest 获取每个特征的分数?

python - WIFI Pineapple Nano 和 RPi GPIO

python - 在 Python 上使用 PIL 更改像素颜色