一.写在前面的话~
刚吃饭的时候同学问我,你为什么要用R做文本分析,你不是应该用R建模么,在我和她解释了一会儿后,她嘱咐我好好写这篇博文,嗯为了娟儿同学,细细说一会儿文本分析。
文本数据挖掘(Text Mining)是指从文本数据中抽取有价值的信息和知识的计算机处理技术。顾名思义,文本数据挖掘是从文本中进行数据挖掘(Data Mining)。从这个意义上讲,文本数据挖掘是数据挖掘的一个分支。
文本分析是指对文本的表示及其特征项的选取;文本分析是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。
在拉勾网上搜索文本分析的相关工作,甚至还会发现专门招聘这方面人才的公司(并且大部分都是目前来说高不可攀的公司。。)。
随便进入了一个职位,看其要求:
编程能力、文本挖掘项目经验、大规模数据处理或统计基础。。瞬间觉得自己弱爆了有木有!!
再找一下相关的文献,不要再说文本分析和统计学没有关系啦~
博主刚刚接触R语言和文本分析,所以只是试探了一下下皮毛,为了将二者结合,试着对《红楼梦》进行分析,首先对《红楼梦》进行分词处理,并统计词频,同时画出标签云。
闲话的最后,大家一起翻译这篇文章好不好233
http://jmlr.org/proceedings/papers/v37/kusnerb15.pdf
二.利用R对《红楼梦》进行分析
(一)需要加载的包
需要用到rJava,Rwordseg,wordcloud
安装步骤:
1.安装java:
http://www.java.com/zh_CN/download/windows_xpi.jsp
2.安装rJava:
在R的命令框输入
install.packages("rJava")
错误解决方案:
错误1.错误: ‘rJava’程辑包或名字空间载入失败,
解决方案:换路径
错误2.
解决方案:
在R中输入
Sys.setenv(JAVA_HOME='C:/Program Files/Java/jre1.8.0_73') #注意:要根据你的java路径更改
3.安装Rwordseg:
下载地址:
https://r-forge.r-project.org/R/?group_id=1054
点这儿下载Rwordseg
解压后将文件放入R下library文件夹下
4.安装wordcloud
在R的命令框输入
install.packages("wordcloud")
利用Rwordseg分词包进行分词
(二)分析过程
1.基础导入
library(rJava)
library(Rwordseg)
library(RColorBrewer)
library(wordcloud)
2.读入数据
将需要分析的文本放入记事本中,保存到相应路径,并在R中打开。这儿我导入的是《红楼梦》的文本。
lecture<-read.csv("E:/Rtagcloud/hongloumeng.txt", stringsAsFactors=FALSE,header=FALSE)
3.优化词库
对于文言文和人物名字分词结果不是很理想的问题,有一个很好的解决方案,就是导入搜狗细胞词库(http://pinyin.sogou.com/dict/),以本例作为例子,分别导入了文言文常用词库、红楼梦常用词库、红楼梦成员名字词库,这三个词库,让分词效果更为理想。
installDict("C:\\Users\\Administrator\\Desktop\\红楼梦词汇大全.scel","hongloumeng1")
installDict("C:\\Users\\Administrator\\Desktop\\红楼梦群成员名字词库.scel","hongloumeng2")
installDict("C:\\Users\\Administrator\\Desktop\\红楼梦词汇.scel","hongloumeng3")
为了让大家更直观的理解优化词库,举如下例子:
先导入rJava和Rwordseg两个包
library(rJava)
library(Rwordseg)
利用Rwordseg对“朝辞白帝彩云间,千里江陵一日还。两岸猿声啼不尽,轻舟已过万重山。”进行分词,结果如下
接着到http://pinyin.sogou.com/dict/detail/index/22394 下载李白诗集的细胞词库,并把它放到E盘,在R中输入以下代码安装词典:
installDict("e:/李白诗集.scel","libai")
安装好后,输入同样的代码,结果如下
可见利用细胞词库可以得到更好的分词结果。
4.分词+统计词频
words=unlist(lapply(X=res, FUN=segmentCN))
#unlist将list类型的数据,转化为vector
#lapply()返回一个长度与X一致的列表,每个元素为FUN计算出的结果,且分别对应到X中的每个元素。
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))
#table统计数据的频数
结果v的部分截图如下,可以看出此时已经统计好词频了:
5.对词频进行排序
# 降序排序
v=rev(sort(v))
6.创建数据框
d=data.frame(词汇=names(v), 词频=v)
7.过滤掉1个字的结果和词频小于100的结果
筛选标准大家可以根据自己的需求进行修改
d=subset(d, nchar(as.character(d$词汇))>1 & d$词频>=100)
8.词频结果输出
根据自己的具体需求改变路径和文件名称
write.csv(d, file="E:/Rtagcloud/hongloumengfcresult.csv", row.names=FALSE)
词频统计结果(节选)如下:
9.画出标签云
(1)读入词频统计数据
路径和文件名称根据自己的需求更改
mydata<-read.csv("E:/Rtagcloud/hongloumengfcresult.csv",head=TRUE)
(2)设置字体类型和字体颜色
mycolors <- brewer.pal(12,"Paired")
windowsFonts(myFont=windowsFont("锐字巅峰粗黑简1.0"))
字体下载地址:
http://www.zhaozi.cn/
大家可以根据自己的喜好选择喜欢的字体
brewer.pal配色如下,大家可以根据喜好选择:
(3)画出标签云
wordcloud(mydata$词汇,mydata$词频,random.order=FALSE,random.color=TRUE,colors=mycolors,family="myFont")
所有代码:
library(rJava)
library(Rwordseg)
library(RColorBrewer)
library(wordcloud)
#读入数据
lecture<-read.csv("E:/Rtagcloud/hongloumeng.txt", stringsAsFactors=FALSE,header=FALSE)
#文本预处理
res=lecture[]
#分词+频数统计
installDict("E:\\红楼梦词汇大全.scel","hongloumeng1")
installDict("E:\\红楼梦群成员名字词库.scel","hongloumeng2")
installDict("E:\\红楼梦词汇.scel","hongloumeng3")
words=unlist(lapply(X=res, FUN=segmentCN))
#unlist将list类型的数据,转化为vector
#lapply()返回一个长度与X一致的列表,每个元素为FUN计算出的结果,且分别对应到X中的每个元素。
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))
#table统计数据的频数
# 降序排序
v=rev(sort(v)) d=data.frame(词汇=names(v), 词频=v) #创建数据框
#过滤掉1个字和词频小于200的记录
d=subset(d, nchar(as.character(d$词汇))> & d$词频>=) #输出结果
write.csv(d, file="E:/Rtagcloud/hongloumengfcresult.csv", row.names=FALSE) #画出标签云
mydata<-read.csv("E:/Rtagcloud/hongloumengfcresult.csv",head=TRUE)
mycolors <- brewer.pal(,"Paired")
windowsFonts(myFont=windowsFont("锐字巅峰粗黑简1.0"))
wordcloud(mydata$词汇,mydata$词频,random.order=FALSE,random.color=TRUE,colors=mycolors,family="myFont")
以下是博主画的其它标签云(对啦对啦就是上瘾啦233):
《时间简史》
这只是很简单很简单的文本分析入门,继续努力~
用R进行文本分析初探——以《红楼梦》为例的更多相关文章
-
重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 词向量的表示主流的有两种方式,一种当然是耳熟能 ...
-
R软件中 文本分析安装包 Rjava 和 Rwordseg 傻瓜式安装方法四部曲
这两天,由于要做一个文本分析的内容,所以搜索了一天R语言中的可以做文本分析的加载包,但是在安装包的过程,真是被虐千百遍,总是安装不成功.特此专门写一篇博文,把整个心塞史畅快的释放一下. ------- ...
-
R语言︱情感分析—词典型代码实践(最基础)(一)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...
-
R语言︱情感分析—基于监督算法R语言实现(二)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...
-
Solr:文本分析
文本分析时搜索引擎的核心工作之一,对文本包含许多处理步骤,比如:分词.大写转小写.词干化.同义词转化等.简单的说,文本分析就说将一个文本字段的值转为一个一个的token,然后被保存到Lucene的索引 ...
-
使用Linux的命令行工具做简单的文本分析
Basic Text Analysis with Command Line Tools in Linux | William J Turkel 这篇文章非常清楚的介绍了如何使用Linux的命令行工具进 ...
-
使用R进行相关性分析
基于R进行相关性分析 一.相关性矩阵计算: [1] 加载数据: >data = read.csv("231-6057_2016-04-05-ZX_WD_2.csv",head ...
-
Linux文本分析命令awk的妙用
基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ...
-
LinkedIn文本分析平台:主题挖掘的四大技术步骤
作者 Yongzheng (Tiger) Zhang ,译者 木环 ,本人只是备份一下.. LinkedIn前不久发布两篇文章分享了自主研发的文本分析平台Voices的概览和技术细节.LinkedIn ...
随机推荐
-
Javascript的一个生产PDF的库: unicode和中文问题的解决
Javascript的一个生产PDF的库: unicode和中文问题的解决基于canvas和jspdf库, 实现用javascript的支持中文pdf生成实用工具.参考:http://javascri ...
-
Qt数据库操作(qt-win-commercial-src-4.3.1,VC6,Oracle,SQL Server)
qt-win-commercial-src-4.3.1.qt-x11-commercial-src-4.3.1Microsoft Visual C++ 6.0.KDevelop 3.5.0Window ...
-
eclipse中tomcat发布失败(Could not delete May be locked by another process)原因及解决办法
在eclipse中tomcat发布项目时,偶尔出现了以下情况: publishing to tomcat v7.0 services at localhost has encountered a pr ...
-
C# [STAThread]
转载:http://www.cnblogs.com/netdazhi/articles/1189549.html 每个Thread都有一个关于ApartmentState的属性,可以把它设置为:STA ...
-
Winform webBrowser 不跳转网页
private void webBrowser1_NewWindow(object sender, CancelEventArgs e) { string url = ((WebBrowser)sen ...
-
windows下Jdk和Tomcat的安装配置
Jdk全称Java development Kit,Jdk是sun公司提供的免费开源的java语言开发工具包,现在最新版本是8.0,说道jdk的版本,有些人可能会有疑惑,怎么有说jdk1.6,jdk1 ...
-
FCN的理解
FCN特点 1.卷积化 即是将普通的分类网络丢弃全连接层,换上对应的卷积层即可 2.上采样 方法是双线性上采样差 此处的上采样即是反卷积3.因为如果将全卷积之后的结果直接上采样得到的结果是很粗糙的,所 ...
-
Android DatePickerDialog使用案例
DatePickerDialog提供了一个弹出的Dialog供用户选择日期. 在这里分享一下其使用方法,效果图如下: DatePickerActivity.java package com.yw.my ...
-
【机器学习】粗糙集属性约简—Attribute Reduction
介绍 RoughSets算法是一种比较新颖的算法,粗糙集理论对于数据的挖掘方面提供了一个新的概念和研究方法.本篇文章我不会去介绍令人厌烦的学术概念,就是简单的聊聊RoughSets算法的作用,直观上做 ...
-
python编辑购物车
一.需求分析 输入工资金额,进入购物车,并打印输出商品编号和价格,用户可以通过输入商品编号进行商品选购 余额不足时,打印提示信息 通过q进行退出结算 购物车能够循环购物 二.代码实现 ShoopCar ...