gpt4 book ai didi

r - 如何并行化 topicmodels R 包

转载 作者:行者123 更新时间:2023-12-02 04:25:07 25 4
gpt4 key购买 nike

我有一系列文档(约 50,000 个),我已将它们转换为语料库,并使用 R 中的 topicmodels 包构建 LDA 对象。不幸的是,为了测试超过 150 个主题,需要几个小时.

到目前为止,我发现我可以使用以下方法同时测试多个不同的集群大小:

library(topicmodels)
library(plyr)
library(foreach)
library(doMC)
registerDoMC(5) # use 5 cores

dtm # my documenttermmatrix

seq <- seq(200,500, by=50)

models <- llply(seq, function(d){LDA(dtm, d)}, .parallel=T)

有没有办法并行化 LDA 函数,使其运行得更快(而不是一次运行多个 LDA)?

最佳答案

我不熟悉 LDA 函数,但假设您将语料库分成 16 个部分,并将每个部分放入名为 corpus16list 的列表中。

要并行运行它,您通常会执行如下操作:

library( doParallel )
cl <- makeCluster( 16 ) # for 16 processors
registerDoParallel( cl )


# now start the chains
nchains <- 16
my_k <- 6 ## or a vector with 16 elements
results_list <- foreach(i=1:nchains ,
.packages = c( 'topicmodels') %dopar% {
result <- LDA(corpus16list[[i]], k=my_k , control = my_control)}, .progress = "text"))


return(result) }

结果是 results_list,它是一个包含 16 个链的 16 个输出的列表。您可以根据需要加入它们,或者在 foreach 中使用 .combine 函数(这超出了本问题的范围)。

您可以使用 i 发送不同的 control 值、k 或任何您需要的值。

此代码应该可以在 Windows 和 Linux 上运行,并且无论您需要多少个内核。

关于r - 如何并行化 topicmodels R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com