讀取txt文件並生成詞雲圖
-
(一)下載第三方模塊
2.jieba:是一個分詞模塊,因為我是從一個txt文本里提取關鍵詞,所以需要 jieba 來分詞並統計詞頻。如果是已經有了現成的數據,不再需要它。
pip install wordcloud pip install jieba
-
(二)WordCloud類的使用
-
WordCloud構造方法的參數 說明 font_path 字體路徑,需要展現什么字體就把該字體路徑+后綴名寫上,如:font_path = ‘黑體.ttf’ width 輸出的畫布寬度,默認為400像素 height 輸出的畫布高度,默認為200像素 prefer_horizontal 詞語水平方向排版出現的頻率,默認 0.9 (所以詞語垂直方向排版出現頻率為 0.1 ) mask 如果參數為空,則使用二維遮罩繪制詞雲。如果 mask 非空,設置的寬高值將被忽略,遮罩形狀被 mask 取代。除全白(#FFFFFF)的部分將不會繪制,其余部分會用於繪制詞雲。如:bg_pic = imread(‘讀取一張圖片.png’),背景圖片的畫布一定要設置為白色(#FFFFFF),然后顯示的形狀為不是白色的其他顏色。可以用ps工具將自己要顯示的形狀復制到一個純白色的畫布上再保存。 scale 按照比例進行放大畫布,如設置為1.5,則長和寬都是原來畫布的1.5倍。 min_font_size 顯示的最小的字體大小 font_step 字體步長,如果步長大於1,會加快運算但是可能導致結果出現較大的誤差。 max_words 顯示的詞的最大個數 stopwords 設置需要屏蔽的詞,如果為空,則使用內置的STOPWORDS background_color 背景顏色,如background_color=‘white’,背景顏色為白色。 max_font_size 顯示的最大的字體大小 mode 當參數為“RGBA”並且background_color不為空時,背景為透明。 relative_scaling 詞頻和字體大小的關聯性 color_func 生成新顏色的函數,如果為空,則使用 self.color_func regexp 使用正則表達式分隔輸入的文本 collocations 是否包括兩個詞的搭配 colormap 給每個單詞隨機分配顏色,若指定color_func,則忽略該方法。
數據准備
源代碼
import jieba import jieba.analyse import codecs import re from collections import Counter from wordcloud import WordCloud import matplotlib.pyplot as plt import wordcloud # 創建停用詞列表 def stopwordlist(): stopwords = [line.strip() for line in open('../結巴分詞/hit_stopwords.txt',encoding='UTF-8').readlines()] return stopwords # 對句子進行中文分詞 def seg_depart(sentence): print('正在分詞') sentence_depart = jieba.cut(sentence.strip()) # 創建一個停用詞列表 stopwords = stopwordlist() # 輸出結果為 outstr outstr = '' # 去停用詞 for word in sentence_depart: if word not in stopwords: if word != '\t': outstr += word outstr += " " return outstr print("讀取文件並生成詞雲圖") def create_word_cloud(file): # 讀取文件內容 content = codecs.open(file,'r','gbk').read() # 去停用詞 content = seg_depart(content) # 結巴分詞 wordlist = jieba.cut(content) wl = " ".join(wordlist) print(wl) # 配置詞雲圖 wc = wordcloud.WordCloud( # 設置背景顏色 background_color='white', # 設置最大顯示的詞數 max_words=100, # 設置字體路徑 font_path = 'C:\Windows\Fonts\msyh.ttc', height=1200, width=1600, # 設置字體最大值 max_font_size=300, # 設置有多少種配色方案,即多少種隨機生成狀態 random_state=50, ) # 生成詞雲圖 myword = wc.generate(wl) # 展示詞雲圖 plt.imshow(myword) plt.axis("off") plt.show() create_word_cloud("中國合伙人1.txt")
生成詞雲圖