我有一个要处理的文档列表,对于每条记录,我想将一些元数据附加到 R 包 tm 生成的“语料库”数据结构内的文档“成员”(通过读取文本文件)。
这个 for 循环可以工作,但速度很慢,性能似乎随着函数 f ~ 1/n_docs 而下降。
for (i in seq(from= 1, to=length(corpus), by=1)){
if(opts$options$verbose == TRUE || i %% 50 == 0){
print(paste(i, " ", substr(corpus[[i]], 1, 140), sep = " "))
}
DublinCore(corpus[[i]], "title") = csv[[i,10]]
DublinCore(corpus[[i]], "Publisher" ) = csv[[i,16]] #institutions
}
这可能会对语料库变量产生影响,但我不知道是什么。但是当我把它放在一个 tm_map() (类似于 lapply() 函数)中时,它运行得更快,但更改不会持久:
i = 0
corpus = tm_map(corpus, function(x){
i <<- i + 1
if(opts$options$verbose == TRUE){
print(paste(i, " ", substr(x, 1, 140), sep = " "))
}
meta(x, tag = "Heading") = csv[[i,10]]
meta(x, tag = "publisher" ) = csv[[i,16]]
})
变量语料库在退出 tm_map 函数后具有空的元数据字段。它应该被填满。我还有一些与收藏有关的事情。
meta() 函数的 R 文档是这样说的:
Examples:
data("crude")
meta(crude[[1]])
DublinCore(crude[[1]])
meta(crude[[1]], tag = "Topics")
meta(crude[[1]], tag = "Comment") <- "A short comment."
meta(crude[[1]], tag = "Topics") <- NULL
DublinCore(crude[[1]], tag = "creator") <- "Ano Nymous"
DublinCore(crude[[1]], tag = "Format") <- "XML"
DublinCore(crude[[1]])
meta(crude[[1]])
meta(crude)
meta(crude, type = "corpus")
meta(crude, "labels") <- 21:40
meta(crude)
我尝试了许多这样的调用(使用 var "corpus" 而不是 "crude"),但它们似乎不起作用。其他人曾经似乎对类似的数据集也有同样的问题(2009 年的论坛帖子,没有回应)