文本處理之可視化wordcloud


 

  • 什么是詞雲
詞雲又叫文字雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。
  • 准備工作:

python開發環境、wordcloud、jieba、matplotlib、numpy 、PIL 等庫文件安裝好。

    • pip 安裝方法:

      1. pip install xxx
      2. 使用idea 直接安裝

      wordcloud生成詞雲的原理簡介 
      wordcloud生成詞雲的原理其實並不復雜,大體分成5步(具體可自行查看源碼):

      1.wordcloud制作詞雲時,首先要對對文本數據進行分詞,使用process_text()方法,這一步的主要任務是去除停用詞 
      2.第二步是計算每個詞在文本中出現的頻率,生成一個哈希表。詞頻用於確定一個詞的重要性 
      3.根據詞頻的數值按比例生成一個圖片的布局,類IntegralOccupancyMap 是該詞雲的算法所在,是詞雲的數據可視化方式的核心。生成詞的顏色、位置、方向等 
      4.最后將詞按對應的詞頻在詞雲布局圖上生成圖片,核心方法是generate_from_frequencies,不論是generate()還是generate_from_text()都最終用到generate_from_frequencies 
      完成詞雲上各詞的着色,默認是隨機着色 
      5.詞語的各種增強功能大都可以通過wordcloud的構造函數實現,里面提供了22個參數,還可以自行擴展。

  • demo:
# coding:utf-8
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
import jieba
import numpy as np
from PIL import Image

# 讀入背景圖片
abel_mask = np.array(Image.open("/home/djh/PycharmProjects/source/test.jpg"))

# 讀取要生成詞雲的文件
text_from_file_with_apath = open('/home/djh/PycharmProjects/source/a.txt').read()

# 通過jieba分詞進行分詞並通過空格分隔
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True)
wl_space_split = " ".join(wordlist_after_jieba)
# my_wordcloud = WordCloud().generate(wl_space_split) 默認構造函數
my_wordcloud = WordCloud(
	background_color='white',  # 設置背景顏色
	mask=abel_mask,  # 設置背景圖片
	max_words=200,  # 設置最大現實的字數
	stopwords=STOPWORDS,  # 設置停用詞
	font_path='/home/djh/win_font/simkai.ttf',  # 設置字體格式,如不設置顯示不了中文
	max_font_size=50,  # 設置字體最大值
	random_state=30,  # 設置有多少種隨機生成狀態,即有多少種配色方案
	scale=.5
).generate(wl_space_split)

# 根據圖片生成詞雲顏色
image_colors = ImageColorGenerator(abel_mask)
# my_wordcloud.recolor(color_func=image_colors)

# 以下代碼顯示圖片
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM