我尝试从语料库构建一个Document-Term Meatrix。我使用的命令是:
library(parallel)
library(tm)
library(RWeka)
library(topicmodels)
library(RTextTools)
cl=makeCluster(detectCores())
invisible(clusterEvalQ(cl, library(tm)))
invisible(clusterEvalQ(cl, library(RWeka)))
invisible(clusterEvalQ(cl, library(topicmodels)))
invisible(clusterEvalQ(cl, library(RTextTools)))
myCorpus <-Corpus(DirSource("/home/neeph/Test/DMOZ_Business"), encoding="UTF-8", readerControl=list(reader=readPlain))
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x)
myCorpus <- tm_map(myCorpus, removeURL)
removeAmp <- function(x) gsub("&", "", x)
myCorpus <- tm_map(myCorpus, removeAmp)
removeWWW <- function(x) gsub("www[[:alnum:]]*", "", x)
myCorpus <- tm_map(myCorpus, removeWWW)
myCorpus <- tm_map(myCorpus, tolower)
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removePunctuation)
myCorpus <- tm_map(myCorpus, removeWords, stopwords("english"))
myCorpus <- tm_map(myCorpus, removeWords, stopwords("SMART"))
myCorpus <- tm_map(myCorpus, stripWhitespace)
summary(myCorpus)
包含696个文本文档的语料库
元数据由2个标签值对和一个数据框组成 可用标签是: create_date创建者 数据框中的可用变量是: MetaID
myDtm <- DocumentTermMatrix(myCorpus, control = list(wordLengths = c(1,Inf)))
如果我不包括令牌化,那么在此阶段一切正常。但是,当我使用以下更改运行代码时:
dictCorpus <- myCorpus
myDtm <- DocumentTermMatrix(myCorpus, control = list(wordlengths=c(1,Inf),tokenize=NGramTokenizer, dictionary=dictCorpus))
它挂起了。我让它一夜之间运行,但没有结果。任何帮助将非常感激。
更新
summary(myDtm)
Error in order(list(i = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, :
unimplemented type 'list' in 'orderVector1'
这个错误是什么意思?
答案 0 :(得分:4)
Neep Hazarika
的解决方案并没有解决我的挂起问题。我通过指定默认线程数来解决这个问题:
# Sets the default number of threads to use
options(mc.cores=1)
由于NGramTokenizer
似乎挂在parallel::mclapply
调用上,因此更改线程数似乎可以解决它。
答案 1 :(得分:0)
找到解决方案。
只需在调用RWeka例程之前初始化JVM。所以从:
开始库(rJava) .jinit(参数= “ - Xmx128g”)
在加载RWeka库之前。