我使用R中的csv文件创建了wordcloud。我在TermDocumentMatrix
包中使用了tm
方法。这是我的代码:
csvData <- read.csv("word", encoding = "UTF-8", stringsAsFactors = FALSE)
Encoding(csvData$content) <- "UTF-8"
# useSejongDic() - KoNLP package
nouns <- sapply(csvData$content, extractNoun, USE.NAMES = F)
#create Corpus
myCorpus <- Corpus(VectorSource(nouns))
myCorpus <- tm_map(myCorpus, removePunctuation)
# remove numbers
myCorpus <- tm_map(myCorpus, removeNumbers)
#remove StopWord
myCorpus <- tm_map(myCorpus, removeWords, myStopwords)
#create Matrix
TDM <- TermDocumentMatrix(myCorpus, control = list(wordLengths=c(2,5)))
m <- as.matrix(TDM)
这个过程似乎花费了太多时间。我认为extractNoun
是花费太多时间的原因。为了使代码更节省时间,我想将生成的TDM保存为文件。当我读到这个保存的文件时,我可以完全使用m <- as.matrix(saved TDM file)
吗?或者,有更好的选择吗?
答案 0 :(得分:1)
我不是专家,但我有时会使用NLP。
我使用parSapply
包中的parallel
。这是文档http://stat.ethz.ch/R-manual/R-devel/library/parallel/doc/parallel.pdf
parallel
附带R base,这是一个愚蠢的使用示例:
library(parallel)
no_cores <- detectCores() - 1
cl<-makeCluster(no_cores)
clusterExport(cl, "base")
base <- 2
parSapply(cl, as.character(2:4),
function(exponent){
x <- as.numeric(exponent)
c(base = base^x, self = x^x)
})
因此,并行化nouns <- sapply(csvData$content, extractNoun, USE.NAMES = F)
并且它会更快:)