IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> R语言 -> R系列:分词、去停用词、画词云(词云形状可自定义) -> 正文阅读

[R语言]R系列:分词、去停用词、画词云(词云形状可自定义)

R系列:分词、去停用词、画词云(词云形状可自定义) 附注:不要问我为什么写这么快,是16年写的。
R的优点:免费、界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表)、小(压缩包就几十M,MATLAB.R2009b的压缩包是1.46G)、包多(是真的多,各路好友会经常上传新的包)。
R的麻烦之处:经常升级,是经常,非常经常,这就导致你在加载一个包之前需要考虑这个包要在R的哪个版本上才能使用,而往往做一件事情都要加载10个包左右,一般比较方便的做法就是先升级到最新版,因为只有小部分的包在新版本上不能用。
言归正传,下面用R语言画出红楼梦的词云图。主要是为了演示词云图的画法,不涉及分析。
一直对红楼有不可言说的感情,再见,纯真,你好,任重道远!
 一、软件准备
版本:R x64 3.2.5(我的电脑是64位的,可根据自己电脑自行安装相应版本)
下载链接:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
二、数据准备
文本:红楼梦txt,1.69M,链接:
http://vdisk.weibo.com/s/AfY-rVkr37U3?sudaref=www.so.com
词典:
http://pinyin.sogou.com/dict/search/search_list/%BA%EC%C2%A5%C3%CE/normal/1
停用词库:根据需要自定义了部分停用词,详情见附录1。
三、算法介绍
采用R语言里的Rwordseg包分词。Rwordseg是R环境下的中文分词工具,用rJava调用Java分词工具Ansj。Ansj也是一个开源的Java中文分词工具,基于中科院ictclas中文分词算法,采用HMM模型。
自带基础词库,支持新加词典。
新加词典放在E:\R-3.2.5\library\Rwordseg\dict目录下。(E是R安装位置)
Rwordseg包的详细说明可在E:\R-3.2.5\library\Rwordseg\doc\Rwordseg_Vignette_CN.pdf目录下查看。
四、程序及结果 1.总耗时:1min左右
1.1.分词耗时:24.54秒
图1 分词耗时

2.结果
2.1分词结果
图2 分词部分结果

2.2过滤单字后结果
图3显示,结果中有部分没有意义的词,如“什么”,“一个”,这些没有意义的词也称为“停用词”,需要把他们去掉。
图3 过滤单字后部分结果

2.3去停用词后结果
到图4这里,我们便完成了词频的统计,实际应用中还需要合并同义词的词频,如“林黛玉”“黛玉”“颦颦”便属于同义词。
图4 去停用词后部分结果

2.4词云
词云结果如下。
图5 词云图



3.程序

#加载分词需要用到的包
library(tm)
library(Rwordseg)
library(wordcloud2)
library(tmcn)
#自定义词典
installDict(dictpath = 'C:/Users/Thinkpad/Desktop/红楼梦/红楼梦诗词.scel',
            dictname ='hlmsc', dicttype = 'scel')
installDict(dictpath = 'C:/Users/Thinkpad/Desktop/红楼梦/红楼梦群成员名字词库.scel',
            dictname ='hlmname', dicttype = 'scel')
installDict(dictpath = 'C:/Users/Thinkpad/Desktop/红楼梦/红楼梦词汇.scel',
            dictname ='hlmch', dicttype = 'scel')
installDict(dictpath = 'C:/Users/Thinkpad/Desktop/红楼梦/红楼词语.scel',
            dictname ='hlmcy', dicttype = 'scel')
installDict(dictpath = 'C:/Users/Thinkpad/Desktop/红楼梦/《红楼梦》词汇大全【官方推荐】.scel',
            dictname = 'hlmch', dicttype = 'scel')
#查看已添加词典
listDict()
 
#添加新词可以使用函数insertWords(),这里不添加新词
 
#分词,对segmentCN()第一个参数对应的文本分词,并将结果返回给第二个参数对应的位置,这种方式可以节约很多时间
system.time(segmentCN('C:/Users/Thinkpad/Desktop/红楼梦/红楼梦.txt',outfile='C:/Users/Thinkpad/Desktop/红楼梦/word_result.txt',blocklines=10000))
 
#统计词频,加载data.table()包,提高读取速度;把上步txt格式的分词结果变为csv格式再读取
library(data.table)
fc_result=fread("C:/Users/Thinkpad/Desktop/红楼梦/word_result.csv")
word_freq=getWordFreq(string = unlist(fc_result))
#按照词频排序,排名前100的词
word_freq[1:100,]
#dim(word_freq)[1]
#过滤前10000个热词中的单字
x=rep(0,times=10000)
for(i in 1:10000){
if(nchar(word_freq[i,])[1]>1)
x[i]=i
}
length(x)
y=sort(x)[2930:10000]
y=word_freq[y,]
#y[1:200,]
write.table(y,file="C:/Users/Thinkpad/Desktop/红楼梦/word_result2.txt")
#去停用词
ssc=read.table("C:/Users/Thinkpad/Desktop/红楼梦/word_result2.txt",header=TRUE)
class(ssc)
ssc[1:10,]
ssc=as.matrix(ssc)
stopwords=read.table("C:/Users/Thinkpad/Desktop/红楼梦/停用词.txt")
class(stopwords)
stopwords=as.vector(stopwords[,1])
wordResult=removeWords(ssc,stopwords)
#去空格
kkk=which(wordResult[,2]=="")
wordResult=wordResult[-kkk,][,2:3]
#去停用词结果
wordResult[1:100,]
write.table(wordResult,file="C:/Users/Thinkpad/Desktop/红楼梦/wordResult.txt")
#画出词云
wordResult=read.table("C:/Users/Thinkpad/Desktop/红楼梦/wordResult.txt")
#词云以"红楼梦"的形式展示
wordcloud2(wordResult,figPath='C:/Users/Thinkpad/Desktop/2.jpg')
#词云以"石头记"的形式展示
wordcloud2(wordResult,figPath='C:/Users/Thinkpad/Desktop/3.jpg')
#词云以汉字“红楼梦”的形式展示
letterCloud(wordResult,"红楼梦")

  
五、附录
附录1:停用词库
停用词库截图

停用词库详情
什么
一个
我们
那里
你们
如今
起来
出来
知道
说道
这里
他们
自己
一面
怎么
两个
没有
不知
只见
这个
这样
听见
进来
咱们
告诉
就是
东西
回来
出去
这些
所以
过来
心里
如此
不能
一时
只得
今日
几个
这么
一回
只管
今儿
那些
问道
如何
那边
原来
回去
看见
进去
一声
一句
这话
到底
别人
于是
果然
还有
有些
此时
岂不
的话
别的
想起
许多
多少
不用
不如
十分
后来
时候
附录2:画词云使用的图


end!
上一篇文章      下一篇文章      查看所有文章
加:2017-02-26 02:01:13  更:2017-05-16 01:48:15 
 
  R语言 最新文章
R的方差检验
Solving.Differential.Equations.in.R笔记1
云铝项目市场调查分析
东深新能源科技有限公司
ggplot2图形解析
R语言学习
R包
学习笔记TF037:实现强化学习策略网络
dplyr包
R语言数据可视化0—ggplot2介绍
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年8日历
2018-8-15 3:16:11
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库