我知道为时已晚。但我也在寻找答案,最后自己实现了。我是 R 的新手,但喜欢这个算法,并建议在 R 中实现它。它与我的大型稀疏 dtm 完美配合,即具有 10 次迭代的文档术语矩阵:
##PLSA algo
k <- 100;
P1<-t(apply(matrix(sample.int(46, k*dim(mat)[2], TRUE), k, dim(mat[2]),1,funnorm <- function(matrow){
matcol <- matrow/sum(matrow)
return(matcol)
}))
P2<-t(apply(matrix(sample.int(46, dim(mat)[1]*k, TRUE), dim(mat)[1], k),1,funnorm <- function(matrow){
matcol <- matrow/sum(matrow)
return(matcol)
}))
for(n in 1:10){
P3<-P2 %*% P1
P4 <- mat / P3
P5 <- P4 %*% t(P1)
P6 <- P2 * P5
P2new <- P6/(rowSums(P6))
P5 <- t(P2) %*% P4
P6 <- P1 * P5
P1new <- P6/(rowSums(P6))
P1 <- P1new
P2 <- P2new
}
希望它可以帮助任何仍在寻找这个的人。