版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cocaine_bai/article/details/80623381
数据分析–R的文本分词
有的时候我们需要对某些评论或者文章进行分析,比如关键词,词频等问题,这个时候我们用R的jiebaR这个包分析,是非常方便的~
这里Mark一下:官方文档、jiebaR官网、jiebaR的Github和中文文档
第一步:安装jiebaR包,然后导入
> install.packages("jiebaR")
> library(jiebaR)
第二步:建立分词器
> wk <- worker()
第三步:分词
> segment("我是一句话", wk)
[1] "我" "是" "一句" "话"
感觉简单的不要不要的,慢慢的幸福感~
还有更简单的方法,你信不信?!
对分词器直接操作:
> wk["我就是想看看能不能分词~"]
[1] "我" "就是" "想" "看看" "能" "不能" "分词"
实例:
下面我们对一段文本来进行分析:《天龙八部》
首先先下载好《天龙八部》的txt,这里就不提供了,网上一大堆
> txt <- file.choose()
> head(txt)
[1] "D:\\R_project\\words\\天龙八部.txt"
读取好数据之后,我们来分词:
> wk <- worker()
> wk[txt]
Error in file_coding(code[1]) : Cannot open file
报错了!!
这里我猜想:是不是文件名字是中文的问题导致打不开文件,然后我改了一下
> txt <- file.choose()
> head(txt)
[1] "D:\\R_project\\words\\tian.txt"
> wk[txt]
[1] "D:\\R_project\\words\\tian.segment.2018-06-08_15_52_58.txt"
把文件的名字改成拼音的就OK了,这里应该读取文件的时候中文会报错
分词结束,我们来看看词频:
> txt <- scan(file.choose(), sep = "\n", what = "", encoding = "UTF-8")
Read 1 item
> df <- freq(wk[txt])
> head(df)
char freq
1 A 1
2 Calif 1
3 Berkley 1
4 Highgate 1
5 48 1
6 址 1
注意:这里的file.choose()选择的是分好词的文件,即上面的tian.segment.2018-06-08_15_52_58.txt
之后我们使用sqldf包来对数据框 df来处理:
> library(sqldf)
载入需要的程辑包:gsubfn
载入需要的程辑包:proto
载入需要的程辑包:RSQLite
> df <- sqldf('select * from df where length(char)> 1 limit 500 ')
> head(df)
char freq
1 说道 2122
2 自己 1635
3 虚竹 1518
4 一个 1442
5 什么 1314
6 武功 1068
嗯,差不多了,可以做词云图了
> library(wordcloud2)
> wordcloud2(df)
感觉天龙八部也是一部”嘴遁“的小说啊,虚竹才是金庸老爷子的真爱啊~