Python產生中文詞雲圖
什麼是詞雲。
首先,什麼是詞雲呢。詞雲又叫文字雲,是對文本資料中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本資料的主要表達意思。
本文目的:
本篇部落客要介紹利用python的wordcloud包實現產生中文詞雲。可指定特定的詞雲形狀和顏色。
Python產生英文詞雲圖請參見部落格Python產生英文詞雲圖。 電腦環境要求:
安裝好Pycharm或者Anaconda。建議同時安裝Pycharm和Anaconda,並且將Pycharm配置好Anaconda,這樣就不用手動安裝wordcloud包和jieba分詞包等了,以後也不用安裝其他一些常用的包了。
安裝Pycharm和Anaconda請參見Pycharm中使用Anaconda。 代碼實現:
#coding=utf-8#Version:python3.6.0#添加自訂分詞import jiebafrom os import path #用來擷取文檔的路徑#詞雲from PIL import Imageimport numpy as npimport matplotlib.pyplot as plt#詞雲產生工具from wordcloud import WordCloud,ImageColorGenerator#需要對中文進行處理import matplotlib.font_manager as fm#背景圖bg=np.array(Image.open("tuoyuan.jpg"))#擷取當前的專案檔加的路徑d=path.dirname(__file__) #讀取停用詞表stopwords_path='stopwords.txt'#添加需要自定以的分詞# jieba.add_word("葉文潔")#讀取要分析的文本text_path="ziranyuyan.txt"#讀取要分析的文本,讀取格式text=open(path.join(d,text_path),encoding="utf8").read()#定義個函數式用於分詞def jiebaclearText(text): #定義一個空的列表,將去除的停用詞的分詞儲存 mywordList=[] #進行分詞 seg_list=jieba.cut(text,cut_all=False) #將一個generator的內容用/串連 listStr='/'.join(seg_list) #開啟停用詞表 f_stop=open(stopwords_path,encoding="utf8") #讀取 try: f_stop_text=f_stop.read() finally: f_stop.close()#關閉資源 #將停用詞格式化,用\n分開,返回一個列表 f_stop_seg_list=f_stop_text.split("\n") #對預設模式分詞的進行遍曆,去除停用詞 for myword in listStr.split('/'): #去除停用詞 if not(myword.split()) in f_stop_seg_list and len(myword.strip())>1: mywordList.append(myword) return ' '.join(mywordList)text1=jiebaclearText(text)#產生wc=WordCloud( background_color="white", #設定背景為白色,預設為黑色 width=990, #設定圖片的寬度 height=440, #設定圖片的高度 margin=10, #設定圖片的邊緣 max_font_size=50, random_state=30, font_path='C:/Windows/Fonts/simkai.ttf' #中文處理,用系統內建的字型 ).generate(text1)#為圖片設定字型my_font=fm.FontProperties(fname='C:/Windows/Fonts/simkai.ttf')#產生背景圖片,基於彩色映像的顏色產生器image_colors=ImageColorGenerator(bg)#開始畫圖plt.imshow(wc)#為雲圖去掉座標軸plt.axis("off")#畫雲圖,顯示#儲存雲圖wc.to_file("tuoyuan3.png")
產生的中文詞雲圖:
參考資料:
1、基於python的詞雲產生(二)
2、Pycharm中使用Anaconda