R tm package vcorpus:将语料库转换为数据帧时出错

lmc*_*ane 15 r corpus tm

我正在使用该tm软件包使用以下代码清理一些数据:

mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)
Run Code Online (Sandbox Code Playgroud)

然后,我想将语料库转换回数据框,以便导出包含数据帧原始格式的数据的文本文件.我尝试过以下方法:

dataframe <- as.data.frame(mycorpus)
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个错误:

"as.data.frame.default中的错误.(mycorpus):无法将类"c(vcorpus,> corpus")强制转换为data.frame

如何将语料库转换为数据框?

MrF*_*ick 22

你的语料库实际上只是一个带有一些额外属性的字符向量.因此最好将其转换为字符,然后您可以将其保存到data.frame,如下所示:

library(tm)
x <- c("Hello. Sir!","Tacos? On Tuesday?!?")
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)

dataframe <- data.frame(text=unlist(sapply(mycorpus, `[`, "content")), 
    stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

返回

              text
1        Hello Sir
2 Tacos On Tuesday
Run Code Online (Sandbox Code Playgroud)

更新:对于更新的版本tm,他们似乎更新了as.list.SimpleCorpus使用sapply和真正混淆的方法lapply.现在我想你必须使用

dataframe <- data.frame(text=sapply(mycorpus, identity), 
    stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)


mle*_*gge 5

语料库分类对象具有可content通过以下方式访问的属性get

library("tm")

x <- c("Hello. Sir!","Tacos? On Tuesday?!?")
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)

attributes(mycorpus)
# $names
# [1] "content" "meta"    "dmeta"  
# 
# $class
# [1] "SimpleCorpus" "Corpus"      
# 

df <- data.frame(text = get("content", mycorpus))

head(df)
#               text
# 1        Hello Sir
# 2 Tacos On Tuesday
Run Code Online (Sandbox Code Playgroud)