上代碼:app
# -*- coding: utf-8 -*- # @Time : 19-1-10 上午10:27 # @Author : Felix Wang import jieba # pip install jieba from scipy.misc import imread # 這是一個處理圖像的函數 pip install scipy from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator # pip install wordcloud import matplotlib.pyplot as plt # pip install matplotlib # 該函數的做用就是把屏蔽詞去掉,使用這個函數就不用在WordCloud參數中添加stopwords參數了 # 把你須要屏蔽的詞所有放入一個stopwords文本文件裏便可 def stop_words(texts, stopwords=None): """ 中止詞處理 :param texts: 文本內容 :param stopwords: 中止詞路徑 :return: """ words_list = [] word_generator = jieba.cut(texts, cut_all=False) # 返回的是一個迭代器 if stopwords: with open(stopwords) as f: str_text = f.read() unicode_text = str(str_text) # 把str格式轉成unicode格式 f.close() # stopwords文本中詞的格式是'一詞一行' else: unicode_text = '' for word in word_generator: if word.strip() not in unicode_text: words_list.append(word) return ' '.join(words_list) # 注意是空格 def get_img(base_img_path, goal_img_path, text_path, stopwords_path=None): """ 得到詞雲圖片 :param base_img_path: 詞雲基準圖片 :param goal_img_path: 輸出目標圖片 :param text_path: 文本路徑 :param stopwords_path: 中止詞路徑 :return: """ back_color = imread(base_img_path) # 解析該圖片 wc = WordCloud(background_color='white', # 背景顏色 max_words=1000, # 最大詞數 mask=back_color, # 以該參數值做圖繪製詞雲,這個參數不爲空時,width和height會被忽略 max_font_size=100, # 顯示字體的最大值 font_path="/home/felix/.local/share/fonts/SIMHEI.TTF", # 解決顯示口字型亂碼問題,可以使用查看 fc-list :lang=zh random_state=42, # 爲每一個詞返回一個PIL顏色 # width=1000, # 圖片的寬 # height=860 #圖片的長 ) # WordCloud各含義參數請點擊 wordcloud參數 # 添加本身的詞庫分詞,好比添加'金三胖'到jieba詞庫後,當你處理的文本中含有金三胖這個詞, # 就會直接將'金三胖'看成一個詞,而不會獲得'金三'或'三胖'這樣的詞 # jieba.add_word('金三胖') # 打開詞源的文本文件 with open(text_path) as f: text = stop_words(f.read(), stopwords_path) wc.generate(text) # 基於彩色圖像生成相應彩色 image_colors = ImageColorGenerator(back_color) # 顯示圖片 plt.imshow(wc) # 關閉座標軸 plt.axis('off') # 繪製詞雲 plt.figure() plt.imshow(wc.recolor(color_func=image_colors)) plt.axis('off') # 保存圖片 wc.to_file(goal_img_path) get_img('002.jpg', 'word_cloud.jpg', 'news.txt') # 不指定中止詞 get_img('002.jpg', 'word_cloud.jpg', 'news.txt', stopwords_path='stopwords.txt') # 指定中止詞
效果圖:dom