基于稀疏矩阵的 R tm TermDocumentMatrix

R tm TermDocumentMatrix based on a sparse matrix

我有一个 txt 格式的书集,想将 tm R 库的一些程序应用到这些书上。但是,我更喜欢在 bash 中而不是在 R 中清理文本,因为它要快得多。

假设我可以从 bash 得到一个 data.frame 例如:

book term frequency
--------------------
1     the      10
1     zoo      2
2     animal   2
2     car      3
2     the      20

我知道 TermDocumentMatrices 实际上是带有元数据的稀疏矩阵。事实上,我可以使用 TDM 的 i、j 和 v 条目从 TDM 创建一个稀疏矩阵,用于 sparseMatrix 函数的 i、j 和 x。如果您知道如何进行逆运算,或者在这种情况下,如何使用上面 data.frame 中的三列构造 TDM,请帮助我。谢谢!

你可以试试

library(tm)
library(reshape2)
txt <- readLines(n = 7)
book term frequency
--------------------
1     the      10
1     zoo      2
2     animal   2
2     car      3
2     the      20
df <- read.table(header=T, text=txt[-2])
dfwide <- dcast(data = df, book ~ term, value.var = "frequency", fill = 0)
mat <- as.matrix(dfwide[, -1]) 
dimnames(mat) <- setNames(dimnames(dfwide[-1]), names(df[, 1:2]))
(tdm <- as.TermDocumentMatrix(t(mat), weighting = weightTf))
# <<TermDocumentMatrix (terms: 4, documents: 2)>>
#   Non-/sparse entries: 5/3
# Sparsity           : 38%
# Maximal term length: 6
# Weighting          : term frequency (tf)

as.matrix(tdm)
#        Docs
# Terms     1  2
# animal    0  2
# car       0  3
# the      10 20
# zoo       2  0