termdocumentmatrix在R中引发错误

时间:2015-03-31 00:23:56

标签: r

我有以下代码:

library(tm)
text<-readLines("anyText.txt")
corpus<-Corpus(VectorSource(text))
corpus<-tm_map(corpus,content_transformer(tolower))
inspect(corpus)
corpus<-tm_map(corpus,removePunctuation)
stopwords<-c(stopwords('english'),"available","via")
corpus<-tm_map(corpus,removeWords,stopwords)
tempCorpus<-corpus
inspect(tempCorpus)
library(ctv)
library(SnowballC)
corpus<-tm_map(corpus,stemDocument)
inspect(corpus)
corpusT<- tm_map(corpus, PlainTextDocument)
corpusT<-tm_map(corpusT,stemCompletion,dictionary=tempCorpus)
dtm<-TermDocumentMatrix(corpusT,control=list(minWordLength=1))

但我得到了错误:

   Error: inherits(doc, "TextDocument") is not TRUE

我发现当我评论该行时:

corpusT<-tm_map(corpusT,stemCompletion,dictionary=tempCorpus)

该程序运行正常,但据我所知,最后一行是用tempCorpus中的那些更新steem单词列表所以我需要它。

如何更正错误?

2 个答案:

答案 0 :(得分:2)

代码corpusT<-tm_map(corpusT,stemCompletion,dictionary=tempCorpus)未返回TextDocuments,因此您收到错误。

在创建dtm之前和corpusT<- tm_map(corpusT, PlainTextDocument)之后添加代码stemCompletion应该可以解决问题。

您的代码的最后一部分应如下所示:

inspect(corpus)
corpusT<-tm_map(corpus,stemCompletion,dictionary=tempCorpus)
corpusT<- tm_map(corpusT, PlainTextDocument)
dtm<-TermDocumentMatrix(corpusT,control=list(minWordLength=1))

有关其他信息,请参阅https://stackoverflow.com/a/24206825/3858156

答案 1 :(得分:0)

我发现我需要将所有传递给t__map的函数包装在content_transformer中,就像你使用tolower一样。然后错误就消失了。