我有一个由lda包中的函数 lda.collapsed.gibbs.sampler 生成的模型,我需要知道顶部单词的“相关性”。 使用
时 top.topic.words(result$topics, 10, by.score=TRUE)
我得到了每个主题的前10个单词列表,但是我希望看到这10个单词所代表的主题的百分比。我猜信息存在,因为有一个“得分”,但我并不熟悉Gibbs采样器的统计方法。
提前致谢!
答案 0 :(得分: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
,以便您可以看到该主题中单词的运行总重量。