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