Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中稀疏矩阵的余弦()相似性——如何加速?(NLP)_R_Performance_Nlp - Fatal编程技术网

R中稀疏矩阵的余弦()相似性——如何加速?(NLP)

R中稀疏矩阵的余弦()相似性——如何加速?(NLP),r,performance,nlp,R,Performance,Nlp,我使用的是R余弦()函数{“lsa”package}确定存储在稀疏矩阵中的两个向量之间的相似性。每个矩阵中有240000行,3100列。1000行的计算时间约为2分钟,这相当于处理完整数据集的8小时。我正在寻找加快处理时间的方法,因为我将不得不运行几次时代 这是我的代码: t1 <- Sys.time() for (i in 1:NROWS) { title_cosine_sim[i] <- cosine(dtm_search[i,],dtm_title[i,]) desc_

我使用的是R余弦()函数{“lsa”package}确定存储在稀疏矩阵中的两个向量之间的相似性。每个矩阵中有240000行,3100列。1000行的计算时间约为2分钟,这相当于处理完整数据集的8小时。我正在寻找加快处理时间的方法,因为我将不得不运行几次时代

这是我的代码:

t1 <- Sys.time()
for (i in 1:NROWS) {
  title_cosine_sim[i] <- cosine(dtm_search[i,],dtm_title[i,])
  desc_cosine_sim[i] <- cosine(dtm_search[i,], dtm_desc[i, ])
  if (i%%1000 == 0 ) {
    cat("processed ", i, "rows out of 240,760...", system.time(), "\n")
  }
}
print( difftime( Sys.time(), t1, units = 'sec'))
cat("finish")

t1这是我用于DocumentTermMatrix的代码。代码不可复制-什么是title\u cosine\u sim、dtm\u search、dtm\u title、dtm\u desc?这是我用于DocumentTermMatrix的代码。代码不可复制-title\u cosine\u sim、dtm\u search、dtm\u title、dtm\u desc是什么?
c1 <- makeCluster(4)
registerDoParallel(c1)

    #calculate title similarity vector
    t1 <- Sys.time()
    title_cosine_sim <- foreach(z = 1:NUMROWS, .combine = 'rbind', .packages =  c('lsa', 'Matrix')) %dopar% {
        cosine( dtm_search[z,],  dtm_title[z,] )
    }

    # calculate description similarity vector
    t1 <- Sys.time() 
    desc_cosine_sim <- foreach(z = 1:NUMROWS, .combine = 'rbind', .packages =  c('lsa', 'Matrix')) %dopar% {
        cosine( dtm_search[z,],dtm_title[z,] )
    }


stopCluster(c1)
print( difftime( Sys.time(), t1, units = 'sec'))
cat("finish PARALLEL processing")