我有以下代码:
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单词列表所以我需要它。
如何更正错误?
答案 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))
答案 1 :(得分:0)
我发现我需要将所有传递给t__map的函数包装在content_transformer中,就像你使用tolower一样。然后错误就消失了。