R(八): R分词统计-老九门
分析文本内容基本的步骤:提取文本中的词语 -> 统计词语频率 -> 词频属性可视化。词频:能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词云:让词语的频率属性可视化,更加直观清晰。文本下载地址(http://www.yuandn.com/booktxt/59797/#download 效果图是将老九门12章后面内容删除后结果)
目录:
- 效果示例图
- 分词包介绍及安装
- 词云包介绍安装
- 分词统计
- 词云展现
效果示例图:
分词包介绍及安装:
- R分词包:Rwordseg、rJava,rJava提供java的库,供Rwordseg调用。Rwordseg是一个R环境下的中文分词工具,引用了Ansj包,Ansj是一个开源的java中文分词工具,基于中科院的ictclas中文分词算法,采用隐马尔科夫模型(HMM),江湖传言,Rwordseg有三个很牛逼的地方一是分词准确,二是分词速度超快,三是可以导入自定义词库,甚至还可以导入搜狗输入法的细胞词库(sqel格式)
- Rwordseg依赖包rJava,首先你必须确认你的系统中已经有可用的Java。 linux 系统下检查命令:java –version
- centos下安装命令如下,注意安装的顺序,同时 Rwordseg 并未发布至CARN
- 命令: R (进入R命令行)
- R命令: install.packages("rJava")
- R命令: install.packages("Rwordseg",repos="http://R-Forge.R-project.org")
- Windows系统下安装命令,在windows系统的Rstudio 环境下未在线安装成功,从 https://r-forge.r-project.org/R/?group_id=1054 网站下载基于 windows 的安装包 (Rwordseg_0.2-1.zip),本地安装
- 命令: install.packages("rJava")
- 命令: install.packages("d:\\Rwordseg_0.2-1.zip",repos = NULL,type = "source")
词云包介绍安装:
- 词云本身对于分析数据用处不大,但在当前这个看脸的时代,给领导汇报工作或做报告的时候,利用词云的可视化效果可以产生锦上添花的效应
- R里面绘制词云的包有wordcloud,wordcloud2, 相比wordcloud,新的wordcloud2 能更有效的利用词与词的间隔来插入数据,可以根据图片或者文字来绘制定制化的词云
- wordcloud2是基于wordcloud2.js封装的一个R包,使用HTML5的canvas绘制,浏览器的可视化具有动态和交互效果
- wordcloud2 已发布至CARN,安装命令如下:
- 命令: install.packages("wordcloud2")
分词统计:
- 下载 txt 文件,我是在windows Rstudio 完成分词清洗统计的工作,将清洗后的数据保存为 .rda 文件以便后续发布至 FastRWeb
- 在研究过程中,发现人员未被识别,先普及一下自定义词典知识,代码示例及解释如下:
> library(rJava)
> library(Rwordseg)
>
> str <- c("齐铁嘴趴着车窗,张大佛爷来到长沙火车站外面,二月红看热闹")
> segmentCN(str)
[1] "齐" "铁" "嘴" "趴" "着" "车窗" "张大" "佛爷" "来到" "长沙" "火车站"
[12] "外面" "二月红" "看热闹"
>
> #加载文件的方式增加词典未验证通过
> installDict("d:\\dict.txt","mydict",dicttype = "text")
Error in installDict("d:\\dict.txt", "mydict", dicttype = "text") :
Wrong path of the dic file!
> segmentCN(str)
[1] "齐" "铁" "嘴" "趴" "着" "车窗" "张大" "佛爷" "来到" "长沙" "火车站"
[12] "外面" "二月红" "看热闹"
>
> #显示当前手动添加的词库
> listDict()
[1] Name Type Des Path
<0 行> (或0-长度的row.names)
>
> #删除自定义词库
> uninstallDict(removedict='mydict')
>
> #参数isNameRecognition 可用来人的名字识别,默认为false
> #查看函数 getOption("isNameRecognition")
> segment.options(isNameRecognition = TRUE)
> segmentCN(str)
[1] "齐铁嘴" "趴" "着" "车窗" "张大" "佛爷" "来到" "长沙" "火车站" "外面" "二月红"
[12] "看热闹"
>
> #自定义词典,让某词组放入内存
> insertWords(c("张大佛爷","二月红"))
> segmentCN(str)
[1] "齐铁嘴" "趴" "着" "车窗" "张大佛爷" "来到" "长沙" "火车站" "外面"
[10] "二月红" "看热闹"
>
> #删除词典
> deleteWords(c("张大佛爷","二月红")) - 分词代码及解释如下:
#加载分词工具包
library(rJava)
library(Rwordseg) #自定义分词,启用名字识别
segment.options(isNameRecognition = TRUE)
insertWords(c("佛爷","张启山","二爷","二月红","八爷","九爷")) #参数returnType表示返回的分词格式是按空格间隔的格式
#执行完成后,会自动在相同目录生成一个"待分析文件名. .segment.txt"的文本文件
text=segmentCN("d:\\9th.txt",returnType = "tm") #读入分词文件,它是一个长字符
text1=readLines("d:\\9th.segment.txt",encoding = "UTF-8") #word是一个长list
#正则表达式:\\s表示 空格,回车,换行等空白符
#word1 向量
word = lapply(X = text1, FUN = strsplit, "\\s")
word1=unlist(word) #统计词频
df=table(word1)
df=sort(df,decreasing = T) #把词汇词频存入数据框
df1 = data.frame(word = names(df), freq = df) # 过滤掉1个字和词频小于10的记录
d <- subset(df1,nchar(as.character(df1$word)) >1 & df1$freq >= 10) # 输出结果,将结果保存为.rda文件
save(d,file = "d:\\9th.rda")
词云展现:
- worldcloud2提供两个基本的函数:wordcloud2 和 letterCloud
- wordcloud2 : 提供基本的词云功能
- etterCloud : 使用选定的词绘制词云
- 利用上一步清除的数据,显示可视化图云,示例代码如下, 效果与上面的示意图对应
#加载包和清洗后的数据
library(wordcloud2)
data <- load("d:\\9th.rda") #默认样式展视数据
wordcloud2(d,shape = "star") #个性化背景和颜色
wordcloud2(d, color = "random-light", backgroundColor = "grey") #自定义字符模式
letterCloud(d,word = "B", color = "random-light",
backgroundColor = "black",wordSize = 0.3) #自定义图片模式
wordcloud2(d, figPath='d:\\ma.png') 代码中 d:\\ma.png 图片样式如下,你可选择不同图片绘出不同效果,下图是随便从网上截的,仅作演示用
R(八): R分词统计-老九门的更多相关文章
- R语言中文分词包jiebaR
R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...
- R(四): R开发实例-map分布图
前几章对R语言的运行原理.基本语法.数据类型.环境部署等基础知识作了简单介绍,本节将结合具体案例进行验证测试. 案例场景:从互联网下载全国三甲医院数据,以地图作为背景,展现各医院在地图上的分布图.全国 ...
- R(一): R基础知识
R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...
- R(七): R开发实例-map热力图
第四章通过REmap包完成基于map分布图示例,前面提到REmap基于Echart2.0, 一方面在移动终端适应效果差,另一方面REmap提供的热力图仅支持全国及省市大版块map,基于上面的原因,参考 ...
- T Y P E L I B R A R I E S库加载
#---------------------------------------------------------------------------- # T Y P E L I B R A R ...
- Ubuntu安装R及R包
安装R $sudo apt-get update $sudo apt-get install r-base $sudo apt-get install r-base-dev 安装一些可能的依赖包 $s ...
- 转:\r,\n,\r\n的区别
回车.换行的区别 他们间的区别其实是个回车换行的问题 先来段历史 回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别. 符号 ASCII码 ...
- python文件操作各种模式和常用方法总结r r+ rb r+b
1.读,r r+ rb r+b read() 全部读取 read(n) 读取一部分 r模式下:n 个字符. rb模式下:n个 字节. readline() 按行读取. readlines() 返回个列 ...
- velecity报错:Caused by: org.apache.velocity.exception.ParseErrorException: Lexical error, Encountered: <EOF> after : "\'/order/pay?activity=\" + activityId);\r\n }*/\r\n</script>\r\n#end\r\n" at /a
Caused by: org.apache.velocity.exception.ParseErrorException: Lexical error, Encountered: <EOF> ...
随机推荐
- HDU 4576
http://acm.hdu.edu.cn/showproblem.php?pid=4576 题意:给一个1-n的环,m次操作,每次操作顺时针或逆时针走w步,求最后落在[l,r]区间的概率 dp[i] ...
- 【转】Fiddler 教程
原文转自:http://www.cnblogs.com/tankxiao/archive/2012/02/06/2337728.html Fiddler是最强大最好用的Web调试工具之一,它能记录所有 ...
- iOS-NSURLCache内存缓存
在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在IOS设备中加一个缓存的机制.使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行.有时候我们需 ...
- 【Avalon】escape
[\uD800-\uDBFF][\uDC00-\uDFFF] var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g var rnoalphanumeri ...
- 服务调用方案(Spring Http Invoker) - 我们到底能走多远系列(40)
我们到底能走多远系列(40) 扯淡: 判断是否加可以效力于这家公司,一个很好的判断是,接触下这公司工作几年的员工,了解下生活工作状态,这就是你几年后的状态,如果满意就可以考虑加入了. 主题: 场景: ...
- man page的介绍
假设你知道一个命令名,但不知其使用方法,此时可以求助于在线求助系统,即使用man(manual)命令,如man date. 上图为执行man date语句后的结果.<翻页查看时可按空格键,退出m ...
- form表单验证
<script> $(document).ready(function(){ $('.pinglunform').submit(function(){ var issubmit = 0; ...
- php parse_url 函数教程
[导读] php parse_url 函数教程parse_url ( PHP 4中, PHP 5中) parse_url -解析URL并返回其组成部分 描述 混合parse_url (字符串$网址[摘 ...
- IOS中使用手机号注册
#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface KCVVerify : NSObject ...
- Hibernate之:各种主键生成策略与配置详解
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...