从 LDA 主题模型生成文档

Posted

技术标签:

【中文标题】从 LDA 主题模型生成文档【英文标题】:Generating documents from LDA topic model 【发布时间】:2015-11-15 23:56:35 【问题描述】:

我正在从一组文档中学习一个主题模型,并且效果很好。但我想知道是否有任何现有系统实际上会根据模型中的主题和单词生成 文档。

即。假设我想要一个主题 0 的新文档,任何 Gensim/MALLET/其他工具实际上会在给定我的主题选择(或选择)的一些输入的情况下生成一个新文档吗?或者这是一个自己动手的问题?

假设我有两个主题:

topic #0: 0.009*river + 0.008*lake + 0.006*island + 0.005*mountain + 0.004*area + 0.004*park + 0.004*antarctic + 0.004*south + 0.004*mountains + 0.004*dam
topic #1: 0.026*relay + 0.026*athletics + 0.025*metres + 0.023*freestyle + 0.022*hurdles + 0.020*ret + 0.017*divisão + 0.017*athletes + 0.016*bundesliga + 0.014*medals

是否有任何工具可以采用“主题0:.5,主题1:.5,长度:7” 并很好地生成如下文档:

island freestyle river south medals mountains area

或类似的东西?如果它已经存在,我不想复制它。

【问题讨论】:

【参考方案1】:

您是否阅读过Mallet 网站上的开发者指南和教程?它概述了如何创建具有某个主题的高概率的文档:

    StringBuilder topicZeroText = new StringBuilder();
    Iterator<IDSorter> iterator = topicSortedWords.get(0).iterator();

    int rank = 0;
    while (iterator.hasNext() && rank < 5) 
        IDSorter idCountPair = iterator.next();
        topicZeroText.append(dataAlphabet.lookupObject(idCountPair.getID()) + " ");
        rank++;
    

这段代码创建了一个很有可能成为主题 0 的新文档。这段代码可以很容易地修改为包含多个主题并具有一定的长度。

【讨论】:

谢谢——我不久前解决了这个问题,并使用了多语言模型,所以它涉及的更多一些,但我认为这对其他人来说是一个很好的提示。

以上是关于从 LDA 主题模型生成文档的主要内容,如果未能解决你的问题,请参考以下文章

Spark机器学习:LDA主题模型算法

自然语言处理-LDA主题模型

LDA模型可以用于文本分析吗

文档主题生成模型(LDA)

如何从 gensim 打印 LDA 主题模型? Python

自然语言处理-主题模型