在R中使用tm-package创建一个Document-Term-Matrix:
dtm <- DocumentTermMatrix(cor, control = list(dictionary=c("someTerm")))
结果是这样的:
A document-term matrix (291 documents, 1 terms)
Non-/sparse entries: 48/243
Sparsity : 84%
Maximal term length: 8
Weighting : term frequency (tf)
Terms
Docs someTerm
doc1 0
doc2 0
doc3 7
doc4 22
doc5 0
现在我想根据文档中someTerm的出现次数过滤这个Document-Term-Matrix。例如。仅过滤someTerm至少出现一次的文档。即doc3和doc4在这里。
我怎样才能做到这一点?
答案 0 :(得分:6)
它与您如何将常规R矩阵子集化非常相似。例如,要从示例路透社数据集创建一个文档术语矩阵,其中只有行中的术语&#34;&#34;出现不止一次:
reut21578 <- system.file("texts", "crude", package = "tm")
reuters <- VCorpus(DirSource(reut21578),
readerControl = list(reader = readReut21578XMLasPlain))
dtm <- DocumentTermMatrix(reuters)
v <- as.vector(dtm[,"would"]>1)
dtm2 <- dtm[v, ]
> inspect(dtm2[, "would"])
A document-term matrix (3 documents, 1 terms)
Non-/sparse entries: 3/0
Sparsity : 0%
Maximal term length: 5
Weighting : term frequency (tf)
Terms
Docs would
246 2
489 2
502 2
tm
文档字词矩阵是来自包slam
的简单三元组矩阵,因此slam
文档有助于确定如何操作dtms。
答案 1 :(得分:1)
或者,您可以使用removeSparseTerms函数删除空元素(请查看文档here)。
dtm <- removeSparseTerms(dtm, 0.1) # This makes a matrix that is 10% empty space, maximum