例如,为 corpus 创建两个文档术语矩阵(一个用于 unigrams,一个用于 bigrams)acq
:
library(tm)
data(acq)
tokenize_bigrams <- function(x) {
rownames(as.data.frame(unclass(tau::textcnt(x$content, method="string", n=2))))
}
m1 <- DocumentTermMatrix(acq)
m2 <- DocumentTermMatrix(acq, control=list(tokenize=tokenize_bigrams))
dim(m1)
# [1] 50 2103
dim(m2)
# [1] 50 5100
使用cbind
. 它之所以有效,是因为它tm
依赖于 package slam
,它cbind
为简单的三元组矩阵提供了一种方法:
m <- cbind(m1, m2)
dim(m)
# [1] 50 7203
正如预期的那样,生成的矩阵m
有 50 行(对于 50 个文档acq
)和 7203 列(2103 用于 unigrams + 5100 用于 bigrams)。
请注意,这m
是一个简单的三元组矩阵:
m
# A 50x7203 simple triplet matrix.
如果要将其用作文档术语矩阵,可以执行以下操作:
attributes(m) <- attributes(m1)
然后:
m
# <<DocumentTermMatrix (documents: 50, terms: 7203)>>
# Non-/sparse entries: 10706/349444
# Sparsity : 97%
# Maximal term length: 29
# Weighting : term frequency (tf)