來源:Python爬蟲與資料探勘作者:黃偉前言大家好,我是黃偉。詞雲,相信大家對這個概念比較陌生,它其實就是指的是對某一段文字中出現頻率最高的關鍵詞進行特殊描繪,過濾到太多沒用的
2021-06-10 11:27:53
來源:Python爬蟲與資料探勘
作者:黃偉
前言
大家好,我是黃偉。詞雲,相信大家對這個概念比較陌生,它其實就是指的是對某一段文字中出現頻率最高的關鍵詞進行特殊描繪,過濾到太多沒用的字眼,以此達到視覺上的突出,讓人一看就知道這篇文章講的什麼。
一、詞雲的運用
設計到的模組:wordcloud
編輯器:sublime text 3
編譯器:Python 3.6
1.下載安裝wordcloud模組
pip install wordcloud
2.匯入模組並初始化詞雲物件
下面我們開啟它的幫助文件看看它的使用方法:
可以看到這個類就是詞雲初始化的主要類,下面都是它的初始化參數,所以我們要使用它:
import wordcloudwc=wordcloud.WordCloud(font_path=r'C:WindowsFonts華康少女文字簡W5.ttc',width=200,height=100) #初始化
這裡為了使得生成的詞雲圖更好看,所以我加入了華康少女字型,這個字型不是系統自帶的,得下載。下載好後把它放到window 字型資料夾中。
3.加入文字到詞雲中
使用初始化的物件來呼叫文字生成器,我們從幫助函數中可以得出它有兩個生成器函數。
這兩個生成器函數差不多,而且意思相近,這裡不做過多討論,我們來看下它的使用方法:
wc.generate('任性的90後boy')
這樣就從文字中生成詞雲了。
4.顯示詞雲物件
生成之後,我們需要把它顯示出來,那怎麼辦呢?如圖所示:
由此可以看出它有四種生成方式,即為:陣列,檔案,html,圖片。我們隨機選擇一種,就選檔案。
wg.to_file('gf.jpg')
這樣就生成了一個以剛才的文字為主的華康少女字型的詞雲圖了,是不是很簡單了?彆著急,還有大菜。
5.顯示詞雲背景
我們從上幅圖片可以看出,字型和圖片的顏色都很讓人揪心,那麼有沒有方法改變它們呢?答案當然是有的。
我們可以通過設定詞雲的背景顏色來改變詞雲背景:
wordcloud.WordCloud(font_path=r'C:WindowsFonts華康少女文字簡W5.ttc',width=200,height=100,background_color="gray")
這樣我們可以將背景顏色改為灰色,要是改變字型顏色該怎麼辦呢?由剛才的幫助文件,我們可以看出有個顏色
生成器類ImageColorGenerator,它負責專門定義我們喜歡的顏色方案,而且它還可以隨時修改,不過要在初始化後使用color_func函數進行回撥才行,因為ImageColorGenerator傳入的是一個圖片陣列,所以我們需要用到一個可以將圖片轉化為陣列的模組numpy,今天我們只講它的一個方法,下面我們來看下:
from wordcloud import ImageColorGeneratorfrom wordcloud import WordCloud as wcfrom PIL import Imageimport numpy as nff=open('OSI.txt','r',encoding='utf-8').read() #匯入文字檔案並讀取內容bg=n.array(Image.open('g.png')) #將圖片以陣列形式輸出#注意如果背景圖片是png,那麼模式必須是RGBA,因為png圖片支援透明度設定,設定背景圖片,背景顏色必須是白色w=wc(font_path=r'C:WindowsFonts華康少女文字簡W5.ttc',mode='RGBA',mask=bg,repeat=True,background_color='#FFFFFF')wg=w.generate(ff) #嵌入文字ig=ImageColorGenerator(bg) #圖片顏色匯入wg.recolor(color_func=ig) #重新設定詞雲圖顏色wg.to_file('gf.png') #儲存圖片
可以看到,最後圖片裡文字的顏色和引用的圖片顏色一樣:
除此之外WordCloud還有很多優秀的方法,比如:
mask='' #設定背景圖片font_path='C:WindowsFontsSTZHONGS.TTF' #解決中文無法輸出的尷尬max_words=5 #設定單詞顯示最多的數目stopwords='' #設定停用詞 如果為空,則使用內建的STOPWORDS方法max_font_size=4 #設定字型最大值 int類型random_state=1 #設定有多少種配色方案 int類型mode:'RGB' #當參數為「RGBA」並且背景顏色不為空時,背景為透明。color_func # 生成新顏色的回撥函數scale #按比例放大畫布 類型為floatcolormap # 給每個詞隨機分配顏色,若指定color_func,則忽略該方法。repeat=True #如果文字太少無法充滿整個照片導致效果不明顯就用這個
6.選擇性輸出
不知道大家注意到沒有,這裡有一個停用詞設定,它就是stopwords,它就是限制某些字不能輸出在詞雲上,不過必須使用wordcloud內建的STOPWORDS方法才可以,下面我們來看下:
因為它只涉及到英文的分詞限制,於是我們先選擇個英文單詞,就選擇頻率比較高的control:
sd=STOPWORDS.add('Control') #新增Control為禁用詞
然後我們在給初始化時的wordcloud新增一個屬性stopwords屬性:
wc(font_path=r'C:WindowsFonts華康少女文字簡W5.ttc',mode='RGBA',mask=bg,width=500,height=300 repeat=True,stopwords=sd,background_color='#FFFFFF')
可以看到我們的Control沒了,這就是詞雲的神奇之處。
二、詞雲拓展
在這裡,小編還要教大家解鎖一個詞雲的新方式,那就是它不光是一個圖片生成神器,還是一個看圖,製圖,圖表生成神器,因為它與PIL ,matplotlib完美的契合在一起,使得它可以隨心所欲的呼叫這兩個模組的功能,不信的話,你可以隨我來看看:
可以看到基本上都是pillow的方法,而且還有matplotlib 和random以及os的方法,可以說是很全了。
im=wordcloud.wordcloud.Image.open('q.jpg')im.show()
這樣基本上你就可以開啟一個詞雲生成的圖片了,相信很多小夥伴還沒解鎖這一知識吧,哈哈哈。
三、總結
通過對詞雲的學習,可以使我們很直觀的瞭解到文字中的資料的佔比情況,其實它就是比較簡單的資料分析。
相關文章
來源:Python爬蟲與資料探勘作者:黃偉前言大家好,我是黃偉。詞雲,相信大家對這個概念比較陌生,它其實就是指的是對某一段文字中出現頻率最高的關鍵詞進行特殊描繪,過濾到太多沒用的
2021-06-10 11:27:53
允中 發自 凹非寺量子位 編輯 | 公眾號 QbitAI6月6日,2021全球人工智慧技術大會「發展與挑戰」專題論壇在杭州舉行。快手技術副總裁、MMU&Y-tech負責人王仲遠出席論壇並發表
2021-06-10 11:27:45
出品|開源中國文|局長Redis 作者 antirez 近日對在維護開源項目過程中遇到精神壓力的情況發表了看法。起因是開源項目 Docz 作者 Pedro 在 repo 中發表的一篇短文章,他在其中
2021-06-10 11:27:32
目前手機廠商釋出的全面屏手機都是比較成熟,而且花樣百出,蘋果的iPhone手機進入全面屏後,一直是劉海屏,而三星偏偏熱衷於挖孔屏,國產機發展比較曲折一些,從18:9螢幕比例的「大額頭
2021-06-10 11:27:21
【6月10日訊】自從進入到6月份以後,華為鴻蒙系統2.0正式版推出,更是成為了全球科技界網紅,不僅僅在國內掀起了極大的關注度,就連在海外市場,都有不少科技媒體以及消費者高度關注
2021-06-10 11:27:13
6月5日,OPPO Reno6系列中的OPPO Reno6 Pro與Reno6 Pro+正式首銷,並且在開售一小時內,就斬獲了全網全價位段銷量&銷售額雙冠軍,直接霸榜!高光的成績直接證明了OPPO Reno6系列
2021-06-10 11:26:34