使用Python定制詞云

ojxr1023 7年前發布 | 27K 次閱讀 Python Linux Python開發

在互聯網時代,人們獲取信息的途徑多種多樣,大量的信息充斥在我們周圍。此時,如何從浩如煙海的信息中提煉出關鍵信息,并讓人記住,顯得至關重要。本教程我們將教你如何使用Python,制作炫酷的詞云效果!

大家平時上網,一定會經常看到下圖這樣的詞云。

但你知道嗎,詞云還可以長這樣:

或者這樣:

什么是詞云呢?

“詞云”是對網絡文本中出現頻率較高的“關鍵詞”予以視覺上的突出,形成“關鍵詞云層”或“關鍵詞渲染”,從而過濾掉大量的無意義信息,使瀏覽者只要一眼掃過詞云圖片就可以領略文章或者網頁內容的主旨。

不僅如此,一幅制作精美的詞云圖片,可以起到一圖勝千言的效果,在報告或者PPT中適當的使用詞云,會使表達更清晰充分,為演講者表達的意義加分。

本節課,我們就教你實現這種效果。

一、課程介紹

1. 內容簡介

本實驗將使用Python的wordcloud擴展包制作詞云,生成圖片保存。并介紹如何改進wordcloud擴展包使其能顯示中文字符,最后介紹如何使用自己喜歡的圖片定制詞云圖片輪廓。

2. 課程知識點

  • 制作詞云的基本步驟和原理

  • Python代碼實現詞云制作

  • wordcloud擴展包的使用

  • 使用自定義圖片制作詞云,分析《三體》I、 II、 III的關鍵

3. 實驗原理

詞云的原理是對輸入的文本數據進行詞頻統計,根據詞匯出現頻率的不同,按不同比例顯示出詞匯,生成圖片。頻率高的詞匯顯示的大,頻率低的詞匯顯示的小。文本數據可以是本地數據,也可是是爬蟲動態從網絡中獲取的。

4. 效果截圖

二、開發準備

打開Xfce終端,進入 Code 目錄,創建 work 文件夾, 將其作為課程的工作目錄。下載并安裝實驗需要的擴展包 。如果大家平時想在自己的電腦上進行實驗,無論是Windows還是Linux還是Mac,都強烈推薦安裝Anaconda,這是一個Python的科學計算包,里面幾乎包含了常用的所有擴展包,不用自己費力安裝了,該軟件由Python之父帶頭維護,三個平臺同時更新。

$ mkdir work && cd work
$ sudo apt-get update
$ sudo apt-get install python-dev
$ sudo pip install numpy
$ sudo apt-get install python-matplotlib
$ sudo apt-get install python-pil

下載小說《三體》I、 II、 III。

$ wget http://labfile.oss.aliyuncs.com/courses/756/santi.txt
$ wget http://labfile.oss.aliyuncs.com/courses/756/santi2.txt
$ wget http://labfile.oss.aliyuncs.com/courses/756/santi3.txt

安裝wordcloud擴展包。

$ sudo pip install wordcloud

三、實驗步驟

本項目的詳細步驟及全部代碼可在 實驗樓 查看并在線完成: 使用Python定制詞云

1. 運行一個簡單工程,測試擴展包安裝是否正常

在對《三體》進行處理之前,我們先運行一下官方的示例程序,確保擴展包安裝正常,程序能夠正常工作。在work目錄下新建python腳本,命名為simple.py,

$ gedit simple.py

代碼如下:

#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""

from os import path
from wordcloud import WordCloud

d = path.dirname(__file__)

# Read the whole text.
text = open(path.join(d, 'constitution.txt')).read()

# Generate a word cloud image
wordcloud = WordCloud().generate(text)

# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")

# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

由代碼可見,程序運行時會搜尋腳本所在的路徑下的文本文件“constitution.txt”,所以我們在運行腳本前需要將這個文本放入work文件夾下面。 通過下面的命令下載文本:

$ wget http://labfile.oss.aliyuncs.com/courses/756/constitution.txt

在work文件夾下啟動控制臺,操作如下圖所示:

在控制臺中運行腳本:

$ python simple.py

如果擴展包安裝一切正常,程序將輸出如下窗口:

至此,我們得到了一個英文詞云。

其他問題

解決中文顯示問題

我們已經成功安裝了wordcloud擴展包,并成功運行了一個示例文件。但是這個示例文件有很多問題,首先,顯示的是英文字符,在面對中國同事或者老板做報告和分享時,使用英文的詞云明顯不合適,而且很多文本本身就是中文詞匯,沒法制作成英文詞云;詞云的外輪廓顯示的方方正正中規中矩,比較呆板,沒有美感。

定制詞云

我們經常在網上看到別人家的詞云都是奇形怪狀的,像下面這樣:

所以看著我們自己方方正正的詞云,是不是感覺太中規中矩了?都不好意思拿出手了吧?

以上兩個問題,大家可以先開動腦筋思考下,如果想不出來可以參考 完整教程 中的思路動手實踐下,把問題一一解決。

 

 

來自:https://zhuanlan.zhihu.com/p/25538157

 

 本文由用戶 ojxr1023 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!