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

文本挖掘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)

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值