3

我有一个由函数lda.collapsed.gibbs.sampler生成的模型,来自 lda 包,我需要知道最重要的词的“相关性”。使用时

    top.topic.words(result$topics, 10, by.score=TRUE)

我得到了每个主题的前 10 个词的列表,但我想看看这 10 个词代表的主题百分比。我猜信息是存在的,因为有一个“分数”,但我对 Gibbs 采样器的统计方法并不是很熟悉。

提前致谢!

4

1 回答 1

3

我认为这样的事情可能是你想要的:

for (ii in 1:nrow(result$topics)) {
  print(
    head(
      cumsum(
        sort(result$topics[ii,], decreasing=TRUE)
      ),
      n = 20
    ) / result$topic_sums[ii]
  ) 
}

让我们分解一下。如果你想要吉布斯分配的分数,那很容易。LDA 例程返回分配给每个(单词、主题)对的数量。因此,您所要做的就是对 的每一行进行排序result$topics以获得最热门的单词(这基本上就是top.topic.words您设置 时所做的事情by.score=FALSE)。将其按排序顺序排列后,您就可以看到,对于每个主题,该词相对于整个主题出现了多少计数。为此,我除以result$topic_sums包含该主题的作业总数。最后,我使用cumsum这样您就可以看到该主题中单词的运行总权重。

于 2014-01-29T18:11:14.723 回答