利用Python將已有TXT文件生成中文詞雲
Python學習心得之一
近期剛上手學習Python,在學習完一些基礎教程後,開始動手做一些小專案。之後也會不定期更新一些學習心得……
準備階段
本人的開發環境採用Python2.7+cmd命令視窗的形式,安裝方法可以參考網上一些教程。
操作階段
生成詞雲需要用到一些Python擴充套件包,最好採用命令視窗pip的方式下載,而在此之前,需要在網上下載pip安裝好(此處網上也有參考教程)
然後在命令列視窗敲擊如下程式碼:
pip install matplotlib
下載完成後再依次下載wordcloud包和jieba包
附jieba包下載成功圖:
現在我們可以開始敲程式碼了
前面執行的都還順利,包括建立TXT文字,讀取內容,進行中文分詞
但是執行到如下程式碼的時候出現了問題
from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear'
plt.axis("off")
此段程式碼裡%pylab inline 執行出錯了,錯誤如下:
經過查詢資料後發現,這段程式碼可能是隻對IPython開發環境有效。於是便放棄了用這種方式顯示詞雲。
進而參考了第三份資料的詞雲設定程式碼:
python中文詞雲生成
但是在詞雲設定程式碼中:
wc = WordCloud( background_color = 'white', # 設定背景顏色
mask = backgroud_Image, # 設定背景圖片
max_words = 2000, # 設定最大現實的字數
stopwords = STOPWORDS, # 設定停用詞
font_path = 'C:/Users/Windows/fonts/simsun.ttf' , # 設定字型格式,如不設定顯示不了中文
max_font_size = 60, # 設定字型最大值
color_func=None, #設定關鍵字的字型顏色
random_state = 42, # 設定有多少種隨機生成狀態,即有多少種配色方案
).generate(mytext)
關於font_path的設定,需要保證該路徑中含有中文字型,如果沒有,需要在網上下載相關字型,放入此路徑中。此處我們採用的是simsun.ttf宋體中文字型。
在詞雲顯示程式碼中含有兩種不同的顯示方法:
plt.imshow(wc) #第一種 直接按設定好的字型顏色 背景形狀來顯示
image_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func = image_colors)
plt.imshow(wc) #第二種 根據前兩句程式碼 將字型顏色變成了背景圖的顏色
plt.axis('off')
plt.show()
實際上第二種顯示方法使用較多,因為第一種顏色太過花花綠綠
兩種顯示方法圖片有如下區別:
第一種:
第二種:
原背景圖:
出現的錯誤
1、就是如上所述操作階段的程式碼錯誤
2、在程式碼無誤後,第一種方法顯示出來的圖形沒有按照設定背景圖的形狀來顯示,而是變成了矩形的形狀。
在請教了同學@sunhuan之後,發現原來是我找的背景圖的背景和圖片顏色過於相近,導致機器識別不出來邊緣形狀,在更換相差度高的圖片之後,順利的顯示出了相應形狀的詞雲。
至此,本次生成中文詞雲完成,附完整程式碼如下:
完整程式碼
import matplotlib.pyplot as plt
#import pickle
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import jieba
filename = "jade.txt"
with open(filename) as f:
mytext = f.read()
mytext = " ".join(jieba.cut(mytext)) #進行中文分詞
backgroud_Image = plt.imread('D:\pycharm\projects\world.jpeg')
wc = WordCloud( background_color = 'white', # 設定背景顏色
mask = backgroud_Image, # 設定背景圖片
max_words = 2000, # 設定最大現實的字數
stopwords = STOPWORDS, # 設定停用詞
font_path = 'C:/Users/Windows/fonts/simsun.ttf', # 設定字型格式,如不設定顯示不了中文
max_font_size = 60, # 設定字型最大值
color_func=None, #設定關鍵字的字型顏色
random_state = 42, # 設定有多少種隨機生成狀態,即有多少種配色方案
).generate(mytext)
plt.imshow(wc)
image_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.show()