r - 应用 tm_map 时 tm 丢失元数据

标签 r metadata tm

我的 tm r 库有一个(小)问题。 假设我有一个语料库:

# boilerplate
bcorp <- c("one","two","three","four","five")
myCorpus <- Corpus(VectorSource(bcorp), list(lanuage = "en_US"))
tdm <- TermDocumentMatrix(myCorpus)
Docs(tdm)

结果:

[1] "1" "2" "3" "4" "5"

这行得通。但是当我尝试使用转换时 tm_map():

# this does not work
myCorpus <- Corpus(VectorSource(bcorp), list(lanuage = "en_US"))
myCorpus <- tm_map(myCorpus, tolower)
tdm <- TermDocumentMatrix(myCorpus)

给予

Error: inherits(doc, "TextDocument") is not TRUE

在这种情况下提出的解决方案是转换为PlainTextDocument。

# this works but erase the metadata
myCorpus <- Corpus(VectorSource(bcorp), list(lanuage = "en_US"))
myCorpus <- tm_map(myCorpus, tolower)
myCorpus <- tm_map(myCorpus, PlainTextDocument)
tdm <- TermDocumentMatrix(myCorpus)
Docs(tdm)

结果:

[1] "character(0)" "character(0)" "character(0)" "character(0)" "character(0)"

现在它可以工作了,但会删除所有元数据(在本例中是文档名称)。有没有办法维护元数据,或者保存然后恢复它们?

最佳答案

我找到了。

行:

myCorpus <- tm_map(myCorpus, PlainTextDocument)

解决了问题,但删除了元数据。

我找到了 this answer这解释了使用 tm_map() 的更好方法。我只需要替换:

myCorpus <- tm_map(myCorpus, tolower)

与:

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

一切正常!

关于r - 应用 tm_map 时 tm 丢失元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638503/

相关文章:

r - 如何创建要插入到 ggplot 中的对象(当有多个带 + 的部分时)?

删除R中除特定字符串之外的所有字符

node.js - 获取 s3 对象元数据然后创建流

ffmpeg - 使用 FFmpeg 检索和保存媒体元数据

R DocumentTermMatrix控件列表不起作用,静默忽略未知参数

RMarkdown Yacas latex

r - 使用rollapply函数使用R进行VaR计算

android - android 的 abc.db 和 abc.sqlite 有什么区别?

r - 生成包含 R 中给定术语的 DocumentTermMatix

r - 在 R 中查找 ngram 并比较跨语料库的 ngram