如何在r中读写TermDocumentMatrix?

时间:2017-02-08 02:34:30

标签: r nlp term-document-matrix

我使用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)吗?或者,有更好的选择吗?

1 个答案:

答案 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)并且它会更快:)