微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以手动重新排序LDA_Gibbs主题模型吗

如何解决我可以手动重新排序LDA_Gibbs主题模型吗

我有一个来自topicmodels库的LDA_Gibbs主题模型。 我也有LDAvis交互式可视化。

我的问题是;在LDA对象和LDAvis中,主题的顺序不同。

我想让一个映射到另一个(不在乎哪个)。 到目前为止,我的方法无效:

ldavis_data <- fromJSON(json_lda)
topic_order <- ldavis_data$topic.order
lda@gamma[order(topic_order),]
lda@beta[,order(topic_order)]

inspired by this github issue - a different topic model package though

但是,这完全掩盖了我的LDA对象。

没有reprex / MWE(但是,我可以链接.rds文件)-但是可以看到glimpse(lda):

<snip>
..@ beta  :num [1:45,1:333...]
..@ gamma :num [1:111...,1:45]
</snip>

现在,我将ldavis主题手动映射到LDA()对象并行。

----编辑----

我找到了一个合理的权宜之计,几乎: 我的进一步分析依赖于tidytext的tidy.LDA函数,因此我可以添加主题词映射的正确顺序,如下所示:


# terms to topics
tidy(lda,matrix = "beta") %>%
  # probably unnecessary,but make sure we're in topic order
  arrange(topic) %>%
  # turn topics into a factor,with levels according to new order
  mutate(topic = factor(topic,levels = topic_order) %>%
  # group by new factor order
  group_by(topic) %>%
  # make the current group id the current topic
  mutate(topic = cur_group_id()) %>%
  # dont forget! had me scratching my head for a few minutes
  ungroup

# documents to topics
tidy(lda,matrix = "gamma") %>%
  arrange(topic) %>%
  mutate(topic = factor(topic,levels = topic_order) %>%
  group_by(topic) %>%
  mutate(topic = cur_group_id()) %>%
  ungroup

是的,也适用于文档映射。现在将它们折叠为一个函数;)

解决方法

将我的编辑重新发布为答案,但还不愿意接受它。

我肯定会得到想要的结果;但不是我想要的如何


我找到了一个合理的权宜之计,几乎: 我的进一步分析依赖于tidytext中的tidy.LDA()函数,因此我可以像这样添加主题词映射的正确顺序:


# terms to topics
tidy(lda,matrix = "beta") %>%
  # probably unnecessary,but make sure we're in topic order
  arrange(topic) %>%
  # turn topics into a factor,with levels according to new order
  mutate(topic = factor(topic,levels = topic_order) %>%
  # group by new factor order
  group_by(topic) %>%
  # make the current group id the current topic
  mutate(topic = cur_group_id()) %>%
  # dont forget! had me scratching my head for a few minutes
  ungroup

# documents to topics
tidy(lda,matrix = "gamma") %>%
  arrange(topic) %>%
  mutate(topic = factor(topic,levels = topic_order) %>%
  group_by(topic) %>%
  mutate(topic = cur_group_id()) %>%
  ungroup

是的,也适用于文档映射。现在将它们折叠为一个函数;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?