3

我在 R 中工作,包“topicmodels”。我正在努力解决并更好地理解代码/包。在我正在阅读的大多数教程和文档中,我看到人们用 5 个或 10 个最可能的术语来定义主题。这是一个例子:

    library(topicmodels)
    data("AssociatedPress", package = "topicmodels")
    lda <- LDA(AssociatedPress[1:20,],  k = 5)
    topics(lda)
    terms(lda)
    terms(lda,5)

所以代码的最后一部分返回了与我定义的 5 个主题相关的 5 个最可能的术语。

在 lda 对象中,我可以访问 gamma 元素,它包含每个文档属于每个主题的概率。因此,基于此,我可以以大于我喜欢的任何阈值的概率提取主题,而不是为每个人提供相同数量的主题。

但是我的第二步是要知道哪些词与主题相关性最强。我可以使用 terms(lda) 函数来提取它,但这给了我这么多的 N。

在输出中我还发现了

    lda@beta

它包含每个主题每个单词的 beta,但这是一个 Beta 值,我很难解释。它们都是负值,虽然我看到一些值在 -6 左右,而另一些值在 -200 左右,但我无法将其解释为一种概率或衡量标准,以查看哪些词以及某些词与某个主题相关联的强度有多大。有没有办法提取/计算任何可以解释为这种措施的东西。

非常感谢弗雷德里克

4

1 回答 1

2

beta-matrix 为您提供了一个维度为#topics x #terms 的矩阵。这些值是对数似然,因此您可以使用它们。给定的概率是 P(word|topic) 类型,如果你对单词而不是主题 P(all words|topic) = 1 而不是 P(word|all topic) = 1。您要搜索的是 P(topic|word) 但我实际上不知道如何在这种情况下访问或计算它。我猜你需要 P(word) 和 P(topic)。P(主题)应该是:colSums(lda@gamma)/sum(lda@gamma)

如果您查看伽玛矩阵,即#document x #topics,就会变得更加明显。给定的概率是 P(topic|document),可以解释为“给定文档 y 的主题 x 的概率是多少”。所有主题的总和应该是 1,但不是所有文档的总和。

于 2018-08-17T11:08:31.383 回答