R语言分词并绘图——以《老人与海》为对象
> library(tm)
> library(tmcn)
> library(jiebaR)
> library(tau)
> library(Rwordseg)
> library(wordcloud2)
> oldman<-readLines("老人与海.txt",encoding = "UTF-8") #read the file in lines
Warning message:
In readLines("老人与海.txt", encoding = "UTF-8") :
incomplete final line found on '鑰佷汉涓庢捣.txt'
>#上面的提醒是因为在文章最末尾没有回车就结束了
> class(oldman) #inspect the class of this file
[1] "character"
> head(oldman) #inspect the head information
[1] "『老人与海/作者:欧内斯特·海明威』"
[2] "『状态:全本』"
[3] "『内容简介:"
[4] " 这部小说是根据一位古巴渔夫的真实经历创作的,以摄象机般的写实手法记录了桑提阿果老人捕鱼的全过程,塑造了一个在重压下仍
然保持优雅风度、在精神上永远不可战胜的老人形象。这部小说创下了人类出版史上空前绝后的一个纪录:48小时售出530万册! 作品在当年就
获得了普利策奖,两年后又获得了诺贝尔奖。』"
[5] "天下电子书Txt版阅读,下载和分享更多电子书请访问:http://www.txdzs.com,手机访问:http://wap.txdzs.com,E-
mail:support@txdzs.com"
[6] "------章节内容开始-------"
> wk=worker() #create a worker
> oldman_seg=segment(oldman,wk) #divide the text
> head(oldman_seg)
[1] "老人与海" "作者" "欧内斯特" "海明威" "状态" "全本"
> length(oldman_seg) #get the length of the vector
[1] 25296
> oldman_seg<-remove_stopwords(oldman_seg,stopwordsCN()) #去除停用词
> length(oldman_seg) #计算去除停用此以后的向量长度
[1] 15085
> oldman_freq<-getWordFreq(oldman_seg) #生成词频矩阵
> oldman_freq<-oldman_freq[oldman_freq$Freq>20,] #提取词频大于20的词
> nrow(oldman_freq) #得到词频大于20的词的数目
[1] 91
> wordcloud2(oldman_freq) #绘制词图
> oldman_freq[order(oldman_freq$Freq,decreasing = TRUE),] #降序查看词频
Word Freq
1961 老人 216
2793 上 211
3607 想 189
3112 说 186
4100 鱼 161
788 钓索 152
2636 去 117
226 不 106
1282 孩子 97
844 都 85
417 吃 79
2209 没有 75
2770 鲨鱼 75
1994 里 74
4375 知道 73
1385 很 72
3948 一条 66
1483 会 64
1330 好 61
1273 还 60
1827 看见 55
1096 感到 54
592 大 51
3645 小船 49
3595 现在 48
4363 只 48
830 东西 47
4416 中 46
723 地方 45
2854 身子 45
2680 人 44
4185 再 44
3834 也许 43
2930 时 42
3987 已经 39
2956 使 36
3556 下 36
3624 象 36
3232 太阳 35
482 船 34
496 船头 33
2890 声来 33
3116 说出 33
4585 左手 33
2329 那条 32
494 船梢 30
2531 起来 30
3090 水面 30
3781 眼睛 30
3085 水里 29
4535 走 29
3872 一点 28
4303 这鱼 28
1174 更 27
3076 双手 27
3956 一下 27
4127 渔夫 27
618 大鱼 26
1650 觉得 26
2627 鳅 26
3005 手 26
3451 尾巴 26
3786 眼下 26
4237 长 26
309 才 25
1296 海面 25
3570 下去 25
253 不会 24
265 不能 24
3877 一定 24
3932 一起 24
4118 鱼肉 24
1300 海水 23
1685 金枪鱼 23
1814 看 23
4059 怞 23
4099 右手 23
1100 干 22
1474 回来 22
2003 力气 22
2410 弄 22
3384 拖 22
3874 一点儿 22
3971 一只 22
4105 鱼饵 22
4352 正在 22
530 此刻 21
1008 飞鱼 21
1618 桨 21
1889 快 21
3101 水中 21
> #如果长度小于一个汉字的词不计算在内的话,得到如下结果
> oldman_freq1<-oldman_freq[nchar(oldman_freq$Word)>1,]
> nrow(oldman_freq1)
[1] 55
> wordcloud2(oldman_freq1)