我正在处理非结构化文本 (Facebook) 数据,并对其进行预处理(例如,去除标点符号、删除停用词、词干提取)。我需要在预处理时保留记录(即 Facebook 帖子)ID。我有一个适用于数据子集的解决方案,但所有数据都失败了(N = 127K 帖子)。我试过对数据进行分块,但这也不起作用。我认为这与我使用变通方法并依赖行名称有关。例如,它似乎适用于前 ~15K 的帖子,但是当我继续进行子集化时,它失败了。我意识到我的代码不够优雅,所以很高兴学习更好/完全不同的解决方案 - 我所关心的只是在我去 V Corpus 然后再回来时保留 ID。我是 tm 包的新手,尤其是 readTabular 函数。(注意:我在制作 VCorpus 之前运行了降低和删除 Words,因为我最初认为这是问题的一部分)。
工作代码如下:
fb = data.frame(RecordContent = c("I'm dating a celebrity! Skip to 2:02 if you, like me, don't care about the game.",
"Photo fails of this morning. Really Joe?",
"This piece has been almost two years in the making. Finally finished! I'm antsy for October to come around... >:)"),
FromRecordId = c(682245468452447, 737891849554475, 453178808037464),
stringsAsFactors = F)
fb$RC = tolower(gsub("[[:punct:]]", "", fb$RecordContent))
fb$RC2 = removeWords(fb$RC, stopwords("english"))
myReader = readTabular(mapping=list(content="RC2", id="FromRecordId"))
corpus.test = VCorpus(DataframeSource(fb), readerControl=list(reader=myReader))
corpus.test2 = corpus.test %>%
tm_map(removeNumbers) %>%
tm_map(stripWhitespace) %>%
tm_map(stemDocument, language = "english") %>%
as.VCorpus()
fb2 = data.frame(unlist(sapply(corpus.test2, `[`, "content")), stringsAsFactors = F)
fb2$ID = row.names(fb2)
fb2$RC.ID = gsub(".content", "", fb2$ID)
colnames(fb2)[1] = "RC.stem"
fb3 = select(fb2, RC.ID, RC.stem)
row.names(fb3) = NULL
我认为IDS被存储,默认情况下保留,由tm
模块。您可以使用
meta(corpus.test, "id")
$`682245468452447`
[1] "682245468452447"
$`737891849554475`
[1] "737891849554475"
$`453178808037464`
[1] "453178808037464"
我建议阅读该tm::meta()
函数的文档,但它不是很好。
您还可以将任意元数据(作为键值对)添加到语料库中的每个集合项,以及集合级别的元数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句