在检查使用TermDocumentMatrix
库(Twitter数据)tm
创建的术语 - 文档矩阵时,我发现很多单词都是这样的:
aaa 0
aaaa 0
aaaaaand 0
aaaagggghhhh 0
aaas 0
aaawww 1
我使用removeWords, stopwords
进行了预处理,但我还要删除相同字母重复四次或更多次的字词。我怎样才能在tm_map
?
答案 0 :(得分:0)
您只想选择与正则表达式匹配的术语,并相应地对TermDocumentMatrix对象进行子集化。所以用你的例子:
require(tm)
txt <- "aaa aaaa aaaaaand aaaagggghhhh aaas aaawww"
tdm <- TermDocumentMatrix(VCorpus(VectorSource(txt)))
as.matrix(tdm[grep("(\\w)\\1{3,}", Terms(tdm)), ])
## Docs
## Terms 1
## aaaa 1
## aaaaaand 1
## aaaagggghhhh 1
在正则表达式中,\\1
是&#34;反向引用&#34;,指的是括号\\w
之间的表达式(\\w)
捕获的内容,代表任何单词字符。 (注意:你的问题是任何两个字母,但如果你的意思是任何两个字符,只需替换(.)
。){3,}
要求三个或者更多与后向引用组中捕获的相同字符。结果:正则表达式匹配包含重复四次或更多次的相同字母的任何术语。
注意:此处使用as.matrix()
只是为了在控制台上显示对象,以便我们可以看到剩下的条款。