我查看了此处已发布的其他类似问题(例如this),但问题仍然存在。

我有一个文本数据的数据框,需要阻止它。所以我将其转换为语料库,对其进行词干处理,然后从词干中完成单词,然后尝试获取文本的数据框作为输出。

myCorpus <- Corpus(VectorSource(textDf$text))
myCorpus <- tm_map(myCorpus, removeWords, stopwords('english'))
myCorpus <- tm_map(myCorpus, content_transformer(tolower))
myCorpus <- tm_map(myCorpus, removePunctuation)
dictCorpus <- myCorpus
myCorpus <- tm_map(myCorpus, stemDocument)
myCorpus <- tm_map(myCorpus, stemCompletion, dictionary=dictCorpus)

现在,我试图从该语料库中获取一个数据帧,因此我尝试了以下这些命令。
dataframe<-data.frame(text=unlist(sapply(myCorpus, '[', "content")), stringsAsFactors=F)

dataframe<-data.frame(text=unlist(sapply(myCorpus, [)), stringsAsFactors=F)
并且
dataframe <-
    data.frame(id=sapply(corpus, meta, "id"),
               text=unlist(lapply(sapply(corpus, '[', "content"),paste,collapse="\n")),
               stringsAsFactors=FALSE)

来自this链接

它们全部产生以下错误:
Error in UseMethod("meta", x) :
  no applicable method for 'meta' applied to an object of class "character"

任何帮助将不胜感激。

最佳答案

这应该做到:

data.frame(text = sapply(myCorpus, as.character), stringsAsFactors = FALSE)

使用工作解决方案编辑了,以crude为例

这里的问题是您不能将stemCompletion用作转换。
getTransformations()
## [1] "removeNumbers"     "removePunctuation" "removeWords"       "stemDocument"      "stripWhitespace"

不包含stemCompletion,后者将词干标记的向量作为输入。

因此,应该这样做:首先,提取转换后的文本并将其标记化,然后完成词干,然后粘贴回去。在这里,我使用内置的crude语料库说明了该解决方案。
data(crude)
myCorpus <- crude
myCorpus <- tm_map(myCorpus, removeWords, stopwords('english'))
myCorpus <- tm_map(myCorpus, content_transformer(tolower))
myCorpus <- tm_map(myCorpus, removePunctuation)
dictCorpus <- myCorpus
myCorpus <- tm_map(myCorpus, stemDocument)
# tokenize the corpus
myCorpusTokenized <- lapply(myCorpus, scan_tokenizer)
# stem complete each token vector
myTokensStemCompleted <- lapply(myCorpusTokenized, stemCompletion, dictCorpus)
# concatenate tokens by document, create data frame
myDf <- data.frame(text = sapply(myTokensStemCompleted, paste, collapse = " "), stringsAsFactors = FALSE)

关于r - 无法在R中将语料库转换为数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33193152/

10-12 17:14
查看更多