wordclou:根據文本生成詞雲
一.詞雲設置

1 wc=WordCloud(width=400, height=200, #畫布長、寬,默認(400,200)像素 2 margin=1, #字與字之間的距離 3 background_color='white',#背景顏色 4 min_font_size=3,max_font_size=None,#顯示的最小,最大的字體大小 5 max_words=200,#顯示的詞的最大個數 6 ranks_only=None,#是否只是排名 7 prefer_horizontal=.9,#詞語水平方向排版出現的頻率0.9(所以詞語垂直方向排版出現頻率為 0.1 ) 8 mask=None,## 以該參數值作圖繪制詞雲,這個參數不為空時,width和height會被忽略 9 scale=1, #按照比例進行放大畫布 10 color_func=None,#生成新顏色的函數,如果為空,則使用 self.color_func 11 stopwords=('Book'),#設置需要屏蔽的詞,如果為空,則使用內置的STOPWORDS 12 random_state=None, # 為每個詞返回一個PIL顏色 13 font_step=1, #字體步長,如果步長大於1,會加快運算但是可能導致結果出現較大的誤差。 14 mode="RGB",#當參數為“RGBA”並且background_color不為空時,背景為透明 15 relative_scaling=.5, #詞頻和字體大小的關聯性 16 regexp=None,#使用正則表達式分隔輸入的文本 17 collocations=True,#是否包括兩個詞的搭配 18 colormap=None,#給每個單詞隨機分配顏色 19 normalize_plurals=True,#是否刪除詞的尾隨S之類的 20 font_path="C:/Windows/Fonts/STFANGSO.ttf" #字體路徑 21 )
二.生成詞雲
1 fit_words(frequencies) //根據詞頻生成詞雲 2 generate(text) //根據文本生成詞雲 3 generate_from_frequencies(frequencies[, ...]) //根據詞頻生成詞雲 4 generate_from_text(text) //根據文本生成詞雲 5 process_text(text) //將長文本分詞並去除屏蔽詞(此處指英語,中文分詞還是需要自己用別的庫先行實現,使用上面的 fit_words(frequencies) ) 6 recolor([random_state, color_func, colormap]) //對現有輸出重新着色。重新上色會比重新生成整個詞雲快很多。 7 to_array() //轉化為 numpy array 8 to_file(filename) //輸出到文件
三.基本步驟
1 import jieba #jieba分詞 2 import matplotlib.pyplot as plt#繪制圖形 3 from scipy.misc import imread#處理圖像 4 from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator#詞雲 5 6 #一.文本獲取,利用jieba分詞獲取文本中的詞 7 file=open('test.txt',encoding='UTF-8').read() 8 word=' '.join(jieba.cut_for_search(file)) 9 10 #二.詞雲背景圖像獲取 11 image=imread('test.jpg') # 解析該圖片 12 13 #三.詞雲設置 14 wc=WordCloud( 15 mode='RGBA',#設置透明底色 16 background_color=None, 17 mask=image, #詞雲形狀設置為背景圖像 18 max_words=100,#顯示的詞的最大個數 19 font_path="C:\\Windows\\Fonts\\STFANGSO.ttf",#設置字體,否則中文可能會出現亂碼 20 scale=3#擴大三倍 21 ) 22 23 #生成詞雲 24 image_colors = ImageColorGenerator(image)# 基於背景顏色設置字體色彩 25 wc.generate(word)#根據文本生成詞雲 26 27 #顯示 28 plt.imshow(wc)#顯示詞雲圖 29 plt.axis("off")#關閉坐標軸 30 plt.show()#顯示窗口 31 wc.to_file('test.png')# 保存圖片


