关闭

tm中使用Perl正则表达式秒杀stopwords

标签: text miningtmperl正则表达式stopwords
710人阅读 评论(0) 收藏 举报
分类:

文本挖掘tm包中提供的removeWords函数可以清除stopwords,比如wordcloud包wordcloud函数说明档中的例子:

data(crude)
crude <- tm_map(crude, removePunctuation)
crude <- tm_map(crude, function(x)removeWords(x,stopwords()))

但如果文献内容很长,10M吧,运行时间会相当长。在应用tm_map之前使用Perl正则表达式能快速解决这个问题。

命令可以整合到R语句中,ifile 是要清理stopwords的文件:

library('tm')
stw <- paste(stopwords(), collapse = "|")
cmd <- paste0('/usr/bin/perl -p -i -e "s/\\b(([^a-z]+)|', stw, ')\\b/ /gi" ', ifile)
system(cmd)

10M的文件一般1~2秒内就可以清理完成,秒杀。

清理完成后再制作词料库只需要去掉标点符号就可以,这一步tm提供的函数速度不慢,不用改:

crude <- paste(readLines(ifile), collapse = " ")
crude <- VCorpus(VectorSource(crude), readerControl = list(reader=readPlain, language="en", load=TRUE))
crude <- tm_map(crude, removePunctuation)




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场