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

原创 2015年11月18日 16:33:41

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




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

学习正则

这里需要用到一个第三方 regexkitLite NSString *str = @"asuhfhi(#你好)你好(#你好)你(#hao好)(#好hao)好(jrtn)ka(#haode)jhvd...

UE/US正则表达式查找搜索替换,查询的字符串未找到(UE studio/ultraEdit)/修改UE使用Perl正则引擎

UE默认使用UltraEdit正则表达式,就是UE自己改造过的正则语法,跟常用的perl兼容正则表达式语法不一致,所以即使写对了正则表达式,还会显示“查询的字符串未找到”。 这就需要修改UE的正则引...

使用perl的正则表达式对文件中的特定类型超链接里面的换行去掉,使其在一行

感谢大学里面的王仲老师,他给我的影响很大,他教给我很重要的一点是要学习使用perl,当时我只是借了一本图书学习了一下,不曾运行过一句代码。 现今遇到难题了,才想起perl的强大来。如果说就我熟悉的语...

perl 正则表达式

  • 2015年12月10日 15:49
  • 19KB
  • 下载

Perl正则表达式讲解.chm

  • 2009年06月28日 11:01
  • 82KB
  • 下载

Perl语言入门笔记 第八章 用正则表达式进行匹配

#用正则表达式进行匹配 =pod m// = // = m%%,m||,m,m{},m(),匹配的时候根据需要写自己的定界符,像qw省略双引号定界符一样 模式匹配修饰符: 跟在定界符后面的,//...

perl 正则表达式

  • 2008年07月08日 20:40
  • 213KB
  • 下载

perl里面的正则表达式

  • 2013年09月02日 16:11
  • 44KB
  • 下载

posix和perl标准的正则表达式区别

posix和perl标准的正则表达式区别 标签: perl正则表达式searchregexnewline文本编辑 2011-05-27 22:07 3056人阅读 评论(0) 收藏 举报 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tm中使用Perl正则表达式秒杀stopwords
举报原因:
原因补充:

(最多只允许输入30个字)