1. 程式人生 > >Python生成詞雲的製作

Python生成詞雲的製作

本文出自部落格Vander丶CSDN部落格,如需轉載請標明出處,尊重原創謝謝

什麼是詞雲?

詞雲又叫文字雲,是對文字資料中出現頻率較高的”關鍵字”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文字資料的主要表達意思.

這裡寫圖片描述

現成的詞雲製作工具也很多:
1.Wordle是一個用於從文字生成詞雲圖而提供的遊戲工具.
2.Tagxedo可以線上製作個性化詞雲.
3.Tagul是一個Web服務,同樣可以建立華麗的詞雲.
4.Tagcrowd還可以輸入web的url,直接生成某個網頁的詞雲.

詞雲的本質是對文字中的詞進行詞雲統計,根據出現頻率的多少來按比例展示大小.

生產詞雲的原理

1.對文字資料進行分詞,也是眾多NLP文字處理的第一步,對於wordcloud中的process_text()方法,主要是停詞的處理.

2.計算每個詞在文字中出現的頻率,生成一個雜湊表。詞頻計算相當於各種分散式計算平臺的第一案例wordcount, 和各種語言的hello world 程式具有相同的地位了,呵呵。

3.根據詞頻的數值按比例生成一個圖片的佈局,類IntegralOccupancyMap是該詞雲的演算法所在,是詞雲的資料視覺化方式的核心。

4.將詞按對應的詞頻在詞雲佈局圖上生成圖片,核心方法是generate_from_frequencies,不論是generate()還是generate_from_text()都最終到generate_from_frequencies

5.完成詞雲上各詞的著色,預設是隨機著色

詞雲背後的6C原理

* Connect: 目標是從各種各樣資料來源選擇資料,資料來源會提供APIs,輸入格式,資料採集的速率,和提供者的限制.
* Correct: 聚焦於資料轉移以便於進一步處理,同時保證維護資料的質量和一致性
* Collect: 資料儲存在哪,用什麼格式,方便後面階段的組裝和消費
* Compose: 集中關注如何對已採集的各種資料集的混搭, 豐富這些資訊能夠構建一個引入入勝的資料驅動產品。
* Consume: 關注資料的使用、渲染以及如何使正確的資料在正確的時間達到正確的效果。
* Control: 這是隨著資料、組織、參與者的增長,需要的第六個附加步驟,它保證了資料的管控。

這十行程式碼構建的詞雲,沒有通過API從公眾號(wireless_com)直接獲取,簡化和抽象是工程化的典型方式,這裡至今複製貼上,甚至省略了correct的過程,直接將資料儲存在純文字檔案中,通過jieba分詞進行處理即compose,使用詞雲生成視覺化圖片用於消費consume,把一個個自己生成的詞雲組織到不同的檔案目錄便於檢索算是初步的管控control吧。

關於分詞的庫
https://github.com/fxsjy/jieba
關於詞雲的庫
https://github.com/amueller/word_cloud

首先先安裝wordcloud和jieba

pip install wordcloud
pip install jieba
Python核心程式碼

import  matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba

text_from_file_with_apath =open("/Users/vander/Desktop/dada",encoding="UTF-8").read()

wordlist_after_jieba =jieba.cut(text_from_file_with_apath,cut_all=True)

wl_space_split =" ".join(wordlist_after_jieba)

my_wordcloud =WordCloud(font_path="/Library/Fonts/Songti.ttc").generate(wl_space_split)

plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
解析:
1-3行分別匯入了畫圖的庫,詞雲生成庫和jieba的分詞庫.

4行是讀取本地的檔案.

5-6行使用jieba進行分詞,並對分詞的結果以空格分隔開.

7行對分詞後的文字生成詞雲.

8-10行用pyplot展示詞雲圖.

Thanks

本文為曹老師在CSDN Python學習班分享的內容整理而成。