python WordCloud 簡單例項
阿新 • • 發佈:2019-02-20
首先需要進行分詞,也就是將一個句子分割成一個個的詞語,我這裡使用的是jieba分詞
import jieba
cut = jieba.cut(text) #text為你需要分詞的字串/句子
string = ' '.join(cut) #將分開的詞用空格連線
print(string)
上面是一個非常簡單的分詞的例子,在cut的時候也可以選擇不同的引數,使用不同的模式進行分詞,具體使用方法可自行百度,當然也有其他的分詞包,大家可自行選擇
分好詞後就需要將詞做成詞雲了,我使用的是wordcloud
from matplotlib import pyplot as plt from wordcloud import WordCloud string = 'Importance of relative word frequencies for font-size. With relative_scaling=0, only word-ranks are considered. With relative_scaling=1, a word that is twice as frequent will have twice the size. If you want to consider the word frequencies and not only their rank, relative_scaling around .5 often looks good.' font = r'C:\Windows\Fonts\FZSTK.TTF' wc = WordCloud(font_path=font, #如果是中文必須要新增這個,否則會顯示成框框 background_color='white', width=1000, height=800, ).generate(string) wc.to_file('ss.png') #儲存圖片 plt.imshow(wc) #用plt顯示圖片 plt.axis('off') #不顯示座標軸 plt.show() #顯示圖片
這是一個十分簡單的例子,文字是我隨便copy的,不過這樣方方正正的不怎麼好看,我希望能做成網上那樣有不同形狀的,在wordcloud中提供了一個引數mask,他可以讓你指定你想繪製的圖片,不過必須是白底的,他會在你非白底的地方填充上文字,所以最終我的程式碼是這樣的:
import jieba from matplotlib import pyplot as plt from wordcloud import WordCloud from PIL import Image import numpy as np path = r'檔案儲存的目錄' font = r'C:\Windows\Fonts\FZSTK.TTF' text = (open(path+r'\崗位需求.txt','r',encoding='utf-8')).read() cut = jieba.cut(text) #分詞 string = ' '.join(cut) print(len(string)) img = Image.open(path+r'\22.png') #開啟圖片 img_array = np.array(img) #將圖片裝換為陣列 stopword=['xa0'] #設定停止詞,也就是你不想顯示的詞,這裡這個詞是我前期處理沒處理好,你可以刪掉他看看他的作用 wc = WordCloud( background_color='white', width=1000, height=800, mask=img_array, font_path=font, stopwords=stopword ) wc.generate_from_text(string)#繪製圖片 plt.imshow(wc) plt.axis('off') plt.figure() plt.show() #顯示圖片 wc.to_file(path+r'\new.png') #儲存圖片
源圖片為
這是我從另外一個博主那拉下來的,侵刪,生成的結果是這樣的:
從這個圖片看來資料探勘和機器學習的關係是非常密切。還生成了一張文字的,不過很模糊
最後貼幾個參考資料的連結,在此感謝各位博主: