一種用Python生成詞云
我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來制作一個詞云程序,將文章中出現次數較多的詞語提取出來,生成一張詞云圖。
詞云圖的生成原理:
程序會將這篇文章中的所有詞組識別出來,然后統計每個詞組出現的次數,出現次數越多,詞組的字號越大,最后把所有詞組拼合成一張圖像,也就是我們想要的詞云圖。我們需要把這篇文章儲存在一個txt文檔里,把這個文檔和程序放在同一個文件夾下。
首先需要安裝好了python的運行環境,并且以pycharm作為默認工具,安裝所需的第三方庫,它們分別是jieba 和wordcloud.安裝可以參考:
https://www.jb51.net/article/141320.htm
然后開始制作詞云程序。在pycharm中新建一個python文件。
首先調用jieba 和worldcloud模塊。
import jieba
import worldcloud
接著,我們把儲存在程序目錄下的txt文檔命名為”b站測試題.txt”
在程序中輸入以下代碼來讀取這個文檔。
f=open(“b站測試題.txt”,”r”,encoding=”gbk”)
現在我們要讀取文檔中的文字, 把它儲存在一個新的變量t中
t=f.read()
然后關閉文檔
f.close()
然后提取詞組
Is=jieba.icut(t)
Txt=” ”.join(Is)
現在我們已經將詞組提取出來并用空格分開,提取出來的詞組保存在一個新的變量txt 里面
下一步我們要新建一個詞云的對象, 并設定一些參數
W=wordcloud.wordcloud(width=2000,
Height=1400,
Font_path=”msyh.ttc”
)
在上面這段代碼中,我們新建了一個詞云的對象并將其命名為w。我們設定生成詞云圖片的寬度為2000像素,高度為1400像素,設定文字的字體為微軟雅黑。
現在我們要把之前生成的詞組變量txt導入詞云對象w中。
w.generate(txt)
w.to_file(“pic.png”)
然后運行測試
打開程序所在的文件夾, 我們可以看到這里生成了一個名為pic.png的圖片文件。
還可以進行個性化,譬如換個背景色
只需要加入一行代碼:
W=wordcloud.wordcloud(width=2000,
Height=1400,
Background_color=”Grey”
Font_path=”msyh.ttc”
)
顏色可以查詢下表
也可以用16進制數值模式,以#開頭的6位16進制數表示顏色,你可以在下面這個網站上找到自己想要的顏色的1 6進制顏色數值。
http://tool.oschina.net/commons?type=3
也可以使用colormap改變文字顏色
還以自定義詞云顯示行狀,譬如奔馬、五角星等
我們需要準備一張白色背景的圖片,將其放到程序所在的文件夾里,程序會把白色的背景摳除,將文字放在主體部分,再填充上背景顏色。這里我選了一個五角星的圖片,將它放置在程序所在的目錄下
現在我們需要調用一個新的庫:imageio,imageio是python自帶的一個庫,可以用來讀取圖
像數據。
在程序開頭添加下面的代碼:
import imageio
然后建立一個變量mask來讀取圖像數據
Mask=imageio.imread(“五角星.png”)
然后我們需要在建立詞云對象的代碼中添加一行代碼
W=wordcloud.wordcloud(width=2000,
Height=1400,
Font_path=”msyh.ttc”
Mask=mask,
)
運行,如下圖:
思路參考:威海市文登區七里湯中學宋海霞《用python生成詞云圖》
除了用Pycharm還可以用sublime,可以參考:
https://blog.csdn.net/ydydyd00/article/details/80665028
未來的編程就這樣,很多基礎的功能已經函數或者庫化了,直接調用就可以了。這樣避免了頻繁的制造錘子,但是這些庫大部分都是國外開發的,國內直接“拿來主義”了,未來會有越來越多的國產庫了。