我已经看过这里发布的其他类似问题(如
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)
所有这些都会产生以下错误:
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)
用工作解决方案编辑,以原油为例
这里的问题是你不能将stemCompletion应用为转换.
getTransformations() ## [1] "removeNumbers" "removePunctuation" "removeWords" "stemDocument" "stripWhitespace"
不包括stemCompletion,它将带有标记的标记的向量作为输入.
所以这应该这样做:首先提取转换后的文本并标记它们,然后完成词干,然后粘贴在一起.在这里,我使用内置的粗语料库说明了解决方案.
data(crude) myCorpus <- crude myCorpus <- tm_map(myCorpus,stemDocument) # tokenize the corpus myCorpusTokenized <- lapply(myCorpus,scan_tokenizer) # stem complete each token vector myTokensStemCompleted <- lapply(myCorpusTokenized,dictCorpus) # concatenate tokens by document,create data frame myDf <- data.frame(text = sapply(myTokensStemCompleted,collapse = " "),stringsAsFactors = FALSE)