【发布时间】:2014-06-19 11:14:57
【问题描述】:
如果我有许多文档术语矩阵的列表,我可以这样做来组合它们:
# setup for example
require(tm)
data("acq")
data("crude")
acq_dtm <- DocumentTermMatrix(acq)
crude_dtm <- DocumentTermMatrix(crude)
# make list of dtms
list_of_dtms <- list(acq_dtm, crude_dtm)
# convert list of dtms into one big dtm
dtms_combined_into_one <- do.call(tm:::c.DocumentTermMatrix, list_of_dtms)
但这似乎非常缓慢且占用大量内存,并且是处理几千个 dtms 时的主要瓶颈。如何更快地组合它们并使用更少的内存?
由于 dtm 是一个稀疏矩阵,我想知道是否有人知道在这里可能有用的组合稀疏矩阵的方法。我是我的实际用例,我不是从语料库开始,而是从字数列表开始。
这是一个 rfiddle,以防它对快速测试有用:http://www.r-fiddle.org/#/fiddle?id=SojC9ZlA(看起来很有希望,但我发现它不是很可靠,这种快速原型设计有什么好处,可以安装包吗?)
【问题讨论】:
-
文档术语矩阵是一个 SLAM 简单的三元组矩阵,这意味着它只是一组三元组(i,j,值)。如果您知道所有语料库中的术语都是相同的,并且 i,j 在每个 dtm 中表示相同的值,则可以将它们绑定在一起。但这通常不会是真的。将所有语料库组合成一个大语料库然后计算 dtm 怎么样?似乎这样可能会更快。
-
谢谢,你能扩大答案吗?
-
好吧,我做了一些测试,我从组合语料库重建 dtm 的想法比你已经在做的要慢一个数量级。我将用稀疏矩阵发布我的想法。
标签: r sparse-matrix tm large-data