wordcloud是python中乙個非常優秀的第三方詞云展示庫,但是處理中文就不怎麼能勝任,因為中文通常包含著一整句話,儘管在wordcloud裡雖然也有process_text()方法用於把很長的文字做分隔,但這個方法本身是根據英文文字分詞設計的,所以對於中文字的展示必須要配合更適合做中文分詞處理的jieba分詞庫來操作效果更佳,今天就拿這兩個庫配合一起展示下**《三國演義》中,四個字成語中那些出現的頻率最高。
先來看下最終的詞云效果圖,下面就是我們以武將張飛為模板形狀產生的中文詞雲圖,可以很明顯的看到諸如,如之奈何
、大喝一聲
、木牛流馬
、決一死戰
都是比較大突出和大的字型,說明頻率最高,也不得不說三國劇情的跌宕起伏和打鬥場面精彩。
下面就是整段處理的**,因為我們的目標是建立基於**《三國演義》裡所有四個字成語的中文詞雲圖,因此我們從邏輯上來說只需要設計兩個函式體。分別是split_four_text()
函式用來處理中文分詞功能,和draw_wordcloud
函式用於將處理後的中文詞顯示成詞雲,對於整段**提一下幾處重要的**區域。
第13行**處,在配置例項物件wordcloud引數時,我們設定了font_path引數,因為在部分系統環境內顯示中文會出現亂碼,所以強制以定義的中文字型顯示就可以解決這個問題。
第64行**處,由於wordcloud詞云讀取的文字必須以字串或者二進位制形式輸入,否則會報錯typeerror: expected string or bytes-like object的關係,所以我們強制將jieba分詞返回的list型別內容轉換為str型別。
import jieba
import numpy as np
from pathlib import path
from pil import image
from wordcloud import wordcloud, imagecolorgenerator
from matplotlib import pyplot as plt
defsplit_four_text
(text)
:# split_four_text函式用於jieba分詞並分隔為4個字為一組的內容。
words =jieba.cut(text)
# 用counter方法計算單詞頻率數
count = counter(words)
most_count = count.most_common(
) words_list =
for i in most_count:
iflen
(i[0])
==4:0
])return words_list
defdraw_wordcloud
(text, image_mask,):
# draw_wordcloud函式以使用者定義的模板輪廓圖來顯示中文詞云。
sanguo_mask = np.array(image.
open
(image_mask)
) wordcloud = wordcloud(background_color =
'white'
, mask = sanguo_mask,
max_words =
1000
,# 如果不設定中文字型,可能會出現亂碼
font_path =
'/system/library/fonts/stheiti light.ttc'
) wordcloud.generate(text)
image_colors = imagecolorgenerator(sanguo_mask)
plt.figure(figsize =(14
,8))
# 建立左側中文詞雲圖
plt.subplot(
121)
plt.imshow(wordcloud.recolor(color_func = image_colors)
, interpolation =
'bilinear'
) plt.axis(
'off'
)# 建立右側原圖
plt.subplot(
122)
plt.imshow(sanguo_mask, interpolation =
'bilinear'
) plt.axis(
'off'
) plt.show(
)# 讀取檔案內容
text_path = path(
'三國演義.txt'
)with text_path.
open
(encoding =
'gb18030'
)as f:
text_content = f.read(
)# 把檔案內容交給自定義的split_four_text中文分詞函式處理。
sanguo = split_four_text(text = text_content)
# 由於split_four_text函式返回的是乙個list型別,詞云只接收字串或者二進位制形式輸入,
# 所以用str()函式轉換為字串。
draw_wordcloud(text =
str(sanguo)
, image_mask =
'guanyu_template.jpeg'
)
wordcloud和jieba 的學習
wordcloud和jieba的安裝都很簡單 都是pip install 直接安裝就行,但是在學校機房,那個詞云就是安裝完就是報錯,很奇怪,自己的電腦很順利。然後 其實也不是自己寫的 就直接從網上找的例子,自己看了看 感覺能看懂 嘻嘻 好懶 說說重點步驟吧 1 def gettext text 該函...
檔案的使用和wordcloud庫
1.開啟檔案 變數名 open filename 開啟模式 開啟模式 描述 r 唯讀模式,預設值,若檔案不存在,則返回filenotfounderror w 覆蓋寫模式,檔案不存在則建立,存在則完全覆蓋 x 建立寫模式,檔案不存在則建立,存在則返回fileexistserror錯誤 a 追加寫模式,...
wordcloud庫基本介紹和使用方法
1.1 wordcloud庫概述 wordcloud是優秀的詞云展示第三方庫 1.2wordcloud庫的安裝 pip install wordcloud cmd命令列 2.1 wordcloud庫基本是使用 wordcloud庫把詞云當作乙個wordcloud物件 2.2 wordcloud庫常規...