python資料探勘課程 十三.WordCloud詞雲配置過程及詞頻分析
一. 安裝WordCloud
在使用WordCloud詞雲之前,需要使用pip安裝相應的包。
pip install WordCloud
pip install jieba
其中WordCloud是詞雲,jieba是結巴分詞工具。
jieba參考我的部落格:[python] 使用Jieba工具中文分詞及文字聚類概念
問題:在安裝WordCloud過程中,你可能遇到的第一個錯誤如下。
error: Microsoft Visual C++ 9.0 is required. Get it from http://asa.ms/vcpython27
安裝完成之後,可以正常執行程式碼啦。
二. 簡單詞雲程式碼
下面這部分程式碼參考老曹的,希望對你有所幫助。
老曹說:什麼是詞雲呢?詞雲又叫文字雲,是對文字資料中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文字資料的主要表達意思。
程式碼如下:
- # -*- coding: utf-8 -*-
- import jieba
- import sys
- import matplotlib.pyplot as plt
-
from wordcloud import
- #開啟本體TXT檔案
- text = open('test.txt').read()
- print type(text)
- #結巴分詞 cut_all=True 設定為全模式
- wordlist = jieba.cut(text, cut_all = True)
- #使用空格連線 進行中文分詞
- wl_space_split = " ".join(wordlist)
- print wl_space_split
- #對分詞後的文字生成詞雲
- my_wordcloud = WordCloud().generate(wl_space_split)
- #顯示詞雲圖
-
plt.imshow(my_wordcloud)
- #是否顯示x軸、y軸下標
- plt.axis("off")
- plt.show()
執行結果如下所示:
這是中文編碼問題,下面講解解決方法。
三. 中文編碼錯誤及解決
在WordCloud安裝的目錄下找到WordCloud.py檔案,對原始碼進行修改。
注意,此時執行程式碼還是報錯,因為需要在同一個目錄下放置msyh.ttf字型檔案供程式呼叫,如下圖所示,這是原來的字型DroidSansMono.ttf。
此時的執行結果如下所示,這是分析CSDN多篇部落格的主題,"閱讀"和"評論"比較多。
也可以採用下面的程式碼:
wordcloud = WordCloud(font_path = 'MSYH.TTF').fit_words(word)
四. 照片背景的詞雲程式碼
下面進一步深入,假設存在一個圖 "sss3.png",核心程式碼如下:
- # -*- coding: utf-8 -*-
- from os import path
- from scipy.misc import imread
- import jieba
- import sys
- import matplotlib.pyplot as plt
- from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
- # 開啟本體TXT檔案
- text = open('weixin.txt').read()
- # 結巴分詞 cut_all=True 設定為全模式
- wordlist = jieba.cut(text) #cut_all = True
- # 使用空格連線 進行中文分詞
- wl_space_split = " ".join(wordlist)
- print wl_space_split
- # 讀取mask/color圖片
- d = path.dirname(__file__)
- nana_coloring = imread(path.join(d, "sss3.png"))
- # 對分詞後的文字生成詞雲
- my_wordcloud = WordCloud( background_color = 'white', # 設定背景顏色
- mask = nana_coloring, # 設定背景圖片
- max_words = 2000, # 設定最大現實的字數
- stopwords = STOPWORDS, # 設定停用詞
- max_font_size = 50, # 設定字型最大值
- random_state = 30, # 設定有多少種隨機生成狀態,即有多少種配色方案
- )
- # generate word cloud
- my_wordcloud.generate(wl_space_split)
- # create coloring from image
- image_colors = ImageColorGenerator(nana_coloring)
- # recolor wordcloud and show
- my_wordcloud.recolor(color_func=image_colors)
- plt.imshow(my_wordcloud) # 顯示詞雲圖
- plt.axis("off") # 是否顯示x軸、y軸下標
- plt.show()
- # save img
- my_wordcloud.to_file(path.join(d, "cloudimg.png"))
一弦一柱思華年,一co一ding夢嚴賢。
希望文章對你有所幫助,尤其是結合資料庫做資料分析的人。還是那句話,如果剛好需要這部分知識,你就會覺得非常有幫助,否則只是覺得好玩,這也是線上筆記的作用。如果文章中存在不足或錯誤的地方,還請海涵~