1. 程式人生 > >python WordCloud 簡單例項

python WordCloud 簡單例項

首先需要進行分詞,也就是將一個句子分割成一個個的詞語,我這裡使用的是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')  #儲存圖片

源圖片為

這是我從另外一個博主那拉下來的,侵刪,生成的結果是這樣的:

從這個圖片看來資料探勘和機器學習的關係是非常密切。還生成了一張文字的,不過很模糊

最後貼幾個參考資料的連結,在此感謝各位博主: