代碼以及釋義如下:
```
import jieba
import jieba.analyse
import wordcloud
from PIL import Image, ImageSequence
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import jieba
import jieba.analyse
##============分詞===============
stopwords=[lines.strip() for lines in open('chineseStopWords.txt',encoding='utf-8').readlines()]? ? ? #停用詞文件的讀取
stopwords.append('')
path = '《三國演義》羅貫中.txt'? ? #第一步爬蟲結(jié)果存儲的路徑
file_in = open(path,'r',encoding='utf-8').read()
jieba.del_word("卻說")? ? #刪除一些不想要的詞
jieba.del_word("二人")? ?
jieba.del_word("荊州")
words=jieba.lcut(file_in)? ? #分詞
# cut_text=" ".join(words)
##==============詞頻統(tǒng)計=============
word_freq={}? ? #詞頻統(tǒng)計的字典
for word in words:? ? ? ? ? #這一步是對近義詞進行統(tǒng)計
? ? if (word in stopwords) or len(word)==1 :? ? ? ? #禁用詞和低頻詞不統(tǒng)計了
? ? ? ? continue
? ? elif word=='玄德' or word == '玄德曰':
? ? ? ? newword='劉備'
? ? elif word=='丞相':
? ? ? ? newword='曹操'
? ? elif word=='孔明' or word=='孔明曰':
? ? ? ? newword='諸葛亮'
? ? elif word=='關公' or word=='云長':
? ? ? ? newword='關羽'
? ? else:
? ? ? ? newword=word
? ? if newword in word_freq:
? ? ? ? word_freq[newword]+=1
? ? else:
? ? ? ? word_freq[newword]=1
? ? ? ? # word_freq[word]=word_freq.get(word,0)+1
# print(word_freq)
freq_word=[]
for word,freq in word_freq.items():
? ? fenci=freq_word.append((word,freq))
freq_word.sort(key=lambda x:x[1],reverse=True)? ? #詞語根據(jù)詞頻排序
for word,freq in freq_word[:50]:
? ? with open('wukaiaaaaa.txt','a',encoding='utf-8')as fp:
? ? ? ? fp.write(word+'\n')? #將前五十詞頻文件保存
? ? print(word,freq)? #打印排名前50%的單詞
##===========詞云制作=======================
#background_image=np.array(Image.open("music.png"))
c=[lines.strip("\n") for lines in open('wukaiaaaaa.txt',encoding='utf-8').readlines()]? #讀取詞頻前五十的文本文件
cc=" ".join(c)? #必要羽戒,否則 expected string or bytes-like object:應為字符串或類似對象的字節(jié)
wordcloud=WordCloud(
? ? font_path = 'C:/Users/Windows/fonts/simkai.ttf',? #字體樣式設置
? ? background_color="white",width=2000,height=2000,
? ? mask=np.array(Image.open("music.png"))? #mask=background_image?
).generate(cc)? ? ? ? ? #詞云圖設置
plt.imshow(wordcloud,interpolation="bilinear")
plt.axis("off")? ? #不展示坐標軸 否則為plt.axis("off")? 梁棠,可以試一下結(jié)果如何
plt.show()? #詞云圖的展示
```
結(jié)果如圖:
詞頻:
詞云:背景圖隨便選了張彻桃,有點丑州邢,但是不難發(fā)現(xiàn)詞頻與字體大小的關系