【實戰】詞頻統計及詞雲圖製作
阿新 • • 發佈:2018-12-22
寫在開頭
最近對詞雲有些興趣,就自己瞎琢磨研究一些這方面的知識,期間也遇到一些小問題,寫下此篇文章留作備註吧。
研究物件
金庸老先生的《天龍八部》
正式開始(微笑臉)
- 統計字頻
(1)先統計下小說的字頻數:
天龍八部總共用字量4134個,top20的字不出意外都是一些常用詞,不過“一”竟然排名第二很讓我意外。
# -*- coding:utf-8 -*-
import re
wordcount = {}
stopwords=[]
# stopwords = [u'好',u'一',u'的',u'了']
with open('F:\\tlbb.txt','r') as files:
text = files.read().decode('gb18030')
text = text.strip('\n').strip('\t').strip(' ')
string = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[:“”+——!,。?、[email protected]#¥%……&*()]+".decode("utf8"), "".decode("utf8"),text) #去除標點符號
for word in string:
if word in stopwords:
continue
wordcount[word] = wordcount.get(word,0)+1
wordcount = sorted(wordcount.items(),key=lambda d:d[1],reverse=True)
print len(wordcount)
for x in xrange(20):
print wordcount[x][0]+':'+str(wordcount[x][1])
files.close()
*執行結果*
字數: 4134
以下是排名前20的各個子的數量統計
不:20125
一:18732
的:18565
是:16524
道:15564
了:15413
人:12627
我:11000
你:10108
這:9893
他:9794
大:9083
來:8870
之:8064
說:7123
中:7056
得:6651
在:6624
下:6465
上:6443
- 詞頻統計及詞雲圖製作
從詞雲圖中可以看出三大主角的名字還是很凸顯。當然我也看到詞雲圖中的“一個”了,想不到這個詞的佔比挺高的。
本來是想借助上面統計字頻,做一個停用詞集的。但是沒有弄好,新增到stopwords引數中,完全沒有效果,只能回頭再研究研究。當然如果讀到此處你的知道怎麼回事,煩請告知,感激不盡呀!
以下是詞雲程式碼:
# -*- coding:utf-8 -*-
#天龍八部分詞統計
import jieba
from wordcloud import WordCloud,STOPWORDS
import matplotlib.pyplot as plt
s={}
with open('F:\\tlbb.txt','r') as files:
fid = files.read()
fc = jieba.cut(fid) #用jieba分詞
for words in fc:
if len(words)>1:
s[words] = s.get(words,0)+1
word = sorted(s.items(),key=lambda (word,count):count,reverse=True)
word = dict(word[1:100])
# for x in word:
# print x ,
wordcloud = WordCloud(font_path = 'C:/Windows/Fonts/msyh.ttf', # 設定字型格式,如不設定顯示不了中文
background_color="black", # 設定背景顏色
stopwords=STOPWORDS, # 設定停用詞
max_font_size=40, # 設定字型最大值
random_state=30, # 設定有多少種隨機生成狀態,即有多少種配色方案
relative_scaling=.5
).fit_words(word) #word為字典格式
plt.figure()
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
files.close()
問題總結
- WordCloud().fit_words(word) 中的這個word是傳入的是字典,之前一直傳入錯誤,看了原始碼才恍然大悟
- 詞雲圖中停用詞的新增失敗
參考
最後希望對看到此處的你有所幫助【微笑】