如何在R中使用stemDocument?

时间:2014-06-19 16:20:56

标签: r nlp

更新

感谢您的帮助。检查评论。由于包版本,我删除了tolower,它的工作原理。我只需要找到另一种方法来降低它。

============ 我正在使用文档列表进行基本的txt挖掘,一切都很顺利,直到我尝试使用stemmDocument

我已完成的tm_map如下library(tm)

fbVec<-VectorSource(data[,1])
fbCorpus<-Corpus(fb.vec)
fbCorpus <- tm_map(fbCorpus, tolower)
fbCorpus <- tm_map(fbCorpus, removePunctuation)
fbCorpus <- tm_map(fbCorpus, removeNumbers)
fbCorpus <- tm_map(fbCorpus, removeWords, stopwords("english"))
fbCorpus <- tm_map(fbCorpus, removeWords, "pr")
fbCorpus <- tm_map(fbCorpus, stripWhitespace)

结果如下

[[1]]
[1]  easy post position search resumes improvement searching resumes

[[2]]
[1]  easy use good candidiates improvement allow multiple emails sent 

[[3]]
[1]  applicants young kids absolutely sales experience waste time looking improvement applicants apply experience looking dont need kids just high school

[[4]]
[1]  abundance resumes

然后我试图阻止

library(SnowballC)    
fbCorpus <- tm_map(fbCorpus, stemDocument)

但是结果不是我的形象,看起来只是处理句子中的最后一个单词,结果如下:

[[1]]
[1]  easy post position search resumes improvement searching resum

[[2]]
[1]  easy use good candidiates improvement allow multiple emails sent 

[[3]]
[1]  applicants young kids absolutely sales experience waste time looking improvement applicants apply experience looking dont need kids just high school

[[4]]
[1]  abundance resum

有人可以提供帮助吗?

3 个答案:

答案 0 :(得分:4)

此问题出现在tm 0.6中,与使用tm getTransformation()列表中不存在的函数有关。问题是tolower只返回一个字符向量,而不是像tm_map那样的“PlainTextDocument”。 tm包提供了content_transformer函数来管理PlainTextDocument

fbCorpus  <- tm_map(fbCorpus, content_transformer(tolower))

答案 1 :(得分:0)

您没有正确加载文档。如果您的数据位于x.csv文件中,请使用以下内容:

      > x <- read.csv(file_loc, header = TRUE) // where file_loc is the path to the csv file
      > x <- data.frame(lapply(x, as.character), stringsAsFactors=FALSE)

     > require(tm)
         Loading required package: tm

     > dd <- Corpus(DataframeSource(x))

      > inspect(dd)

然后只需使用stemDocument,如下所示:

  fbCorpus <- tm_map(fbCorpus, stemDocument)

答案 2 :(得分:0)

我有同样的问题。

如果查看stemDocuments的参数,则可以指定词干的语言。我发现通过指定“英语”可以为我解决问题。

stemDocument(language="english")