R语言文本挖掘(二)—文本分词

浏览: 2027


书接上回,啪!啪!啪!

昨天我们讲了如何安装Java环境,安装了的小伙伴一定是备受折磨吧,哈哈哈!


今天我们就先来看看如何用R语言做文本挖掘的一个基础思路。首先我们要说,文本挖掘的难点在于分词,也就是语义库的积累,这个是需要根据业务模式去长时间整理的,枯燥却又必备的事情,尤其是中文词库,因为中文是博大精深的,真的非常之痛苦啊,但是文本挖掘的应用却是非常广泛的,比如利用用户对商品的评论,分析用户的不满的点,用于商品优化,再比如利用微博,来做舆情分析,可以指导内容借助社会事件更加符合用户的心意,等等…,OK,开始我们今天的分享吧…案例一

我们输入两个短语:菜鸟数据岛,生活不止眼前的苟且。利用Rwordseg包里的segmentCN()函数做分词,运行之后我们得到的是下面这个运行结果,

>segmentCN(c("菜鸟数据岛", "生活不止眼前的苟且"))


感觉分词的效果很差,菜鸟,数据岛,苟且,都被强行拆散,这里我们就要进行加词和删词了,

>insertWords("数据岛")

>insertWords("菜鸟")

>insertWords("苟且")

加词之后我们再运行一下


明显的得到的分词效果更好些,还可以用deleteWords()函数来减少词库中的词。



正好昨天有个小伙伴,让我帮他做文本挖掘,我们就一起来看看吧1Step1:读取数据

>fenci <-readLines("D:/菜鸟/词频文件.txt",encoding="UTF-8")

这里要注意的是检查文件是否读出乱码,如果是有乱码的话就是文件的格式不匹配。

>length(fenci)#查看一下fenci的长度,是不是和我们的原始文件一致

>fenciTemp <- gsub("[0-90123456789 <>~]","",fenci)

 #fenciTemp<-gsub(pattern="[a-zA-Z]+","",cipin))

#去掉一些数字和标点,有必要的话,可以去除掉英文,但是我们这个案例显然不能去掉

2Step2:分词

>fenciTemp <- segmentCN(fenciTemp)


这个分词是不是很糟糕啊,哈哈哈,没办法,谁让我懒呢,在这里我们其实是需要提前做一下词库的,或者可以上搜狗输入法官网下载别人做好的词库。


3Step3:下载安装相应的词库

这里举个例子:

>segmentCN("郑爽被人戏称男神收割机")

第一次运行的时候能明显看出来“郑爽”这个人名被分开了,于是我就到搜狗输入法的网站下载了“歌手名人大全【官方推荐】“词库,下载后使用命令:

>installDict("D:/菜鸟/歌手人名大全【官方推荐】.scel", dictname="names")  #加载词典

在运行之后可以看到“郑爽”就被分词到了一起,当然我们还可以使用命令:

>uninstallDict()  #删除词典


4Step4:去停词


首先你需要一个中文停词表,这个停词表也是需要不断修正的,听着就是很繁琐的工作。


然后我们需要编写函数,重新进行分词,去掉停词,在R中有的时候你是需要自己编写函数的,这个就需要你很扎实的统计学和线性代数的基础知识。


最后我们来比较一下,去停词之前和之后的区别



去掉停词的目的是,让分析更简单和精准


5Step5:作词云图


运行之后我们会得到一个按照词频从大到小的顺序排列的词云图


不是很好看,哈哈,不过如果你的文本词汇很多的话,是非常好的可以找出关键词的方法,在舆情分析中经常被用到。这里再给大家介绍一个傻瓜式的词云图制作的在线工具http://www.tagxedo.com/,在线就可以完成很棒的词云图啦,而且非常简单。这里我们就很容易看出来,这个文本的关键词是产品、产品经理、设计、运营、数据、总监、PPT依次从多到少。


OK,相信大家也都有点累了,今天点到为止,明天将给大家带来文本挖掘中的文本分类和聚类这里面将会涉及分类和聚类算法,有兴趣的小伙伴可以提前预习。可以添加菜鸟数据大管家的微信,索要我们所讲的内容的文件和代码,希望大家有所收获,毕竟我的心愿是,让世界充满爱,我们明天见!



推荐 1
本文由 菜鸟数据岛 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

也在学习R,非常感谢

要回复文章请先登录注册