日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

左手Python右手R —《白夜行》wordcloud

發布時間:2023/12/8 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 左手Python右手R —《白夜行》wordcloud 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:胡言? R語言中文社區專欄作者

知乎ID:

https://www.zhihu.com/people/hu-yan-81-25

前言

我的天空里沒有太陽,總是黑夜,但并不暗,因為有東西代替了太陽。雖然沒有太陽那么明亮,但對我來說已經足夠。憑借著這份光,我便能把黑夜當成白天。你明白嗎?我從來就沒有太陽,所以不怕失去。”

每每讀完一本東野圭吾的書,我都要感慨一次:《白夜行》真是太好看了!

本文利用R和python分別對該書做分詞并畫詞云,為今后更深一層的文本分析打基礎。


一、R語言wordcloud

R語言最常用的分詞包為jiebaR和Rwordseg,jiebaR分詞對名稱識別更有優勢,Rwordseg效率更高。安裝包時需要為電腦安裝java,安裝過程較繁瑣,請各位看官自行百度。

1library(rJava)
2library(Rwordseg)
3library(wordcloud2)

將《白夜行》小說txt版本讀入R,查看wordbase有7851行:

1setwd('C:/Users/Administrator/Documents/GitHub/play_20180925_wordcloud_whitenight')
2wordbase<-read.csv("white_night.txt")
3dim(wordbase)

OutPut

1##?[1]?7851?1


清除小說中的各種標點符號,這里用到類似正則表達式的gsub()函數:

1word_clean<-NULL
2word_clean$msg?<-?gsub(pattern?=?"?",?replacement?="",?wordbase[,1])?
3word_clean$msg?<-?gsub("\t",?"",?word_clean$msg)?
4word_clean$msg?<-?gsub(",",?"???",?word_clean$msg)
5word_clean$msg?<-?gsub("~|'",?"",?word_clean$msg)
6word_clean$msg?<-?gsub("\\\"",?"",?word_clean$msg)
7#head(word_clean)


將清理后的文本進行分詞,此處手動加入不希望被拆散的詞“亮司”、“雪穗”,jieba包對人名的識別很厲害,在后文python部分我們可以看一下二者的對比:

1insertWords(c('亮司','雪穗'))
2seg_word<-segmentCN(as.character(word_clean))
3head(seg_word)


OutPut

1##?[1]?"c"?"阿"?"日本"?"第一"?"暢銷書"?"作家"

segmentCN()函數將文本拆成了單個的詞匯。

將分詞后的結果做頻數統計:

1words=unlist(lapply(X=seg_word,?FUN=segmentCN))
2word=lapply(X=seg_word,?FUN=strsplit,?"?")?
3v=table(unlist(word))
4v<-rev(sort(v))
5d<-data.frame(word=names(v),cnt=v)
6d=subset(d,?nchar(as.character(d$word))>1)
7d[1:30,]


OutPut

1##?word?cnt.Var1?cnt.Freq
2##?22?雪穗?雪穗?823
3##?23?沒有?沒有?806
4##?28?什么?什么?716
5##?49?知道?知道?483
6##?60?一個?一個?410
7##?66?一成?一成?369
8##?67?他們?他們?355
9##?72?這么?這么?341
10##?73?自己?自己?335
11##?74?因為?因為?332
12##?77?這個?這個?313


上述結果為部分截取,我們可以看到雪穗是小說中出現次數最多的詞,而亮司卻不在前10位。

但是出現次數最多的詞匯里,“沒有”、“什么”、“一個”等詞沒有任何意義,因為任何作品都會

用到這些最常用的詞,所以我們下一步需要去掉停用詞stopwords。

1write.table(v,file="word_result2.txt")
2ssc=read.table("word_result2.txt",header=TRUE)
3class(ssc)
4ssc[1:10,]
5ssc=as.matrix(d)
6stopwords=read.table("wordclean_list.txt")
7class(stopwords)
8stopwords=as.vector(stopwords[,1])
9wordResult=removeWords(ssc,stopwords)
10#去
11kkk=which(wordResult[,2]=="")
12wordResult=wordResult[-kkk,][,2:3]
13wordResult[1:40,]


OutPut

1##?cnt.Var1?cnt.Freq
2##?22?"雪穗"?"823"?
3##?90?"男子"?"285"?
4##?118?"調查"?"218"?
5##?121?"警察"?"215"?
6##?122?"電話"?"214"?
7##?123?"東西"?"212"?
8##?131?"回答"?"195"?
9##?132?"發現"?"195"?
10##?137?"工作"?"189"?
11##?149?"公司"?"173"?
12##?155?"聲音"?"167"


去停用詞后,出現頻數很高的詞匯,我們明顯可以感到《白夜行》特有的嚴肅和悲涼的氣息。


終于可以畫詞云了,

星星詞云:

1write.table(wordResult,'white_night_cloud.txt')
2mydata<-read.table('white_night_cloud.txt')
3#mydata<-filter(mydata,mydata$cnt>=10)
4wordcloud2(mydata,size=1,fontFamily='宋體')


可憐的亮司,存在感太低了

亮司與雪穗:

1write.table(wordResult,'white_night_cloud.txt')
2mydata<-read.table('white_night_cloud.txt')
3#mydata<-filter(mydata,mydata$cnt>=10)
4wordcloud2(mydata,size=4,fontFamily='楷體',figPath='boyandgirl.jpg')

只想和你手牽著手再陽光下漫步


二、python---wordcloud

python同樣可以畫詞云,用到jieba、wordcloud模塊。

畫詞云的過程中需要用到ttf格式的字體,需要手動下載。

1from?os?import?path
2from?wordcloud?import?WordCloud,?ImageColorGenerator
3import?jieba
4import?pandas?as?pd
5import?numpy?as?np
6from?scipy.misc?import?imread
7from?PIL?import?Image


1

讀取文本

用同樣的文本,即《白夜行》小說的txt文件,

1txt=open('white_night.txt',encoding="gbk")
2line=txt.readlines()???#讀取文字
3type(line)?????????????#list無法完成jieba分詞
4line=','.join(line)????#將list轉化為str
5type(line)


2

構建停用詞表

1stoplist=open('wordclean_list.txt',encoding="gbk")
2stopwords?=?[line.strip()?for?line?in?open('wordclean_list.txt',?'r',encoding="gbk").readlines()]
3#stopwords
={}.fromkeys([line.rstrip()?for?line?in?stoplist])????#字典
4for?add?in?['雪穗','桐原','笹垣','友彥','唐澤','秋吉','筱冢','今枝','典子','利子','一成','']:
5?????stopwords.append(add)
6#stopwords=','.join(stopwords)???此處不需要轉化為string


3

jieba分詞

1word_list=jieba.cut(line,cut_all=False)
2#word_cut=','.join(word_list)
3word_cut=list(word_list)
4type(word_cut


4

畫詞云

1cloud_mask?=?np.array(Image.open('/Users/huxugang/Github/boyandgirl.jpeg'))
2
3back_color?=?imread('/Users/huxugang/Github/boyandgirl.jpeg')
4image_colors?=?ImageColorGenerator(back_color)
5
6wd=WordCloud(font_path='/Users/huxugang/Github/wordcloud_whitenight/simhei.ttf',\
7?????????????background_color='white',max_words=500,
8?????????????max_font_size=30,
9?????????????random_state=15,
10?????????????width=1200,??#?圖片的寬
11?????????????height=400,??#圖片的長
12?????????????mask=cloud_mask)
13
14WD=wd.generate(word_cut)
15
16import?matplotlib.pyplot?as?plt
17WD.to_file('whitenight.jpg')
18#?顯示詞云圖片
19plt.figure(figsize=(10,10))
20plt.axis('off')??#去掉坐標軸
21plt.imshow(WD.recolor(color_func=image_colors))
22#plt.show()


我從來就沒有太陽,所以不怕失去。


比較R語言和python,個人感覺R語言的wordcloud更人性化一下,字體設置更方便,更漂亮。

python畫的詞云可以實現字體顏色向背景圖片同化(R語言是否可以我尚不清楚,有機會再研究),字體設置不太方便。兩種工具我都將繼續學習,做更多更有趣的實踐。


愿世間沒有傷害,愿天底下的雪穗和亮司都能無憂無慮地成長,快樂幸福地度過一生。



往期精彩:

  • R語言決策樹:NBA球員如何拿到大合同

  • R語言輕巧的時間包hms

  • R語言中文社區2018年終文章整理(作者篇)

  • R語言中文社區2018年終文章整理(類型篇)



公眾號后臺回復關鍵字即可學習

回復?爬蟲????????????爬蟲三大案例實戰
回復?Python???????1小時破冰入門
回復?數據挖掘?????R語言入門及數據挖掘
回復?人工智能?????三個月入門人工智能
回復?數據分析師??數據分析師成長之路?
回復?機器學習?????機器學習的商業應用
回復?數據科學?????數據科學實戰
回復?常用算法? ? ?常用數據挖掘算法

給我【好看】

你也越好看!

總結

以上是生活随笔為你收集整理的左手Python右手R —《白夜行》wordcloud的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。