如何用四重复字母的单词清理语料库?

时间:2015-07-18 09:50:14

标签: r text-mining

在检查使用TermDocumentMatrix库(Twitter数据)tm创建的术语 - 文档矩阵时,我发现很多单词都是这样的:

  aaa                                 0
  aaaa                                0
  aaaaaand                            0
  aaaagggghhhh                        0
  aaas                                0
  aaawww                              1

我使用removeWords, stopwords进行了预处理,但我还要删除相同字母重复四次或更多次的字词。我怎样才能在tm_map

中执行此操作

1 个答案:

答案 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()只是为了在控制台上显示对象,以便我们可以看到剩下的条款。