如何删除R中的term-document矩阵中的错误?

时间:2015-09-11 12:28:16

标签: r

我正在尝试使用文件语料库中的R创建Term-Document矩阵。但是在运行代码时,我收到此错误,然后是2个警告:

Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms),  : 
 'i, j' invalid
 Calls: DocumentTermMatrix ... TermDocumentMatrix.VCorpus ->    simple_triplet_matrix -> .Call
In addition: Warning messages:
1: In mclapply(unname(content(x)), termFreq, control) :
 scheduled core 1 encountered error in user code, all values of the job will be affected
2: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow =   length(allTerms),  :
NAs introduced by coercion

我的代码如下:

library(tm)
library(RWeka)
library(tmcn.word2vec)

#Reading data
data <- read.csv("Train.csv", header=T)
#text <- data$EventDescription

#Pre-processing
corpus <- Corpus(VectorSource(data$EventDescription))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, PlainTextDocument)
#dataframe <- data.frame(text=unlist(sapply(corpus,'[',"content")))

#Reading dictionary file
 dict <- scan("dictionary.txt", what='character',sep='\n')

#Bigram Tokenization
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 4))
tdm_doc <- DocumentTermMatrix(corpus,control=list(stopwords = dict,    tokenize=BigramTokenizer))
tdm_dic <- DocumentTermMatrix(corpus,control=list(tokenize=BigramTokenizer, dictionary=dict))

正如SO中的其他答案所示,我尝试过安装SnowballC软件包和其他列出的想法。我仍然得到同样的错误。谁可以在这方面帮助我?提前谢谢。

2 个答案:

答案 0 :(得分:14)

我在获取DocumnetTermMatrix方面遇到了同样的问题,我通过删除以下命令解决了这个问题:

corpus <- tm_map(corpus, PlainTextDocument)

答案 1 :(得分:12)

清理语料库时我遇到了类似的错误。为了解决这个问题,我在违规的代码行之后添加了以下内容并修复了它。某些tm_map函数不返回语料库...

corpus <- Corpus(VectorSource(corpus))

对我来说,问题出现在干完成之后。我建议在每次调用tm_map后尝试创建一个tdm。这将告诉您哪个清洁步骤导致问题。

祝你好运!