python學習(13)————jieba進階生成詞雲

提取小說《開國太后紀事》得到的結果
這裏寫圖片描述

安裝WordCloud

構建詞雲的方法很多,這裏我們介紹一下WordCloud的使用方法,WordCloud是可以自定義圖片背景,然後通過給的文檔自動生成詞雲,它會根據詞出現頻率的大小來確定詞的大小。安裝方法有兩種:
一種是自己下包,並用pip安裝依賴然後再安裝,一種是直接安裝:
它的官網是:
官網: https://amueller.github.io/word_cloud/
github: https://github.com/amueller/word_cloud
1、到github上下載包,解壓後進入文件夾:
執行

pip install -r requirements.txt
python setup.py install

2、直接執行:

pip install wordcloud

wordcloud生成代碼

我們根據https://github.com/amueller/word_cloud/blob/master/examples/colored.py的代碼,修改後來處理中文詞條數據。當然,一個小說首先得先通過jieba自動分詞,否則無法獲得詞條。然後再通過wordcloud處理得到圖片。主要流程如下

Created with Raphaël 2.1.0開始用jieba分詞數據用wordcloud生成詞雲用matplotlib畫圖結束

代碼如下:

#encoding=utf-8
import jieba
import math
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
from collections import Counter
import jieba.analyse
import time
import sys 
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

#讓文件以utf-8的形式讀取
reload(sys) 
sys.setdefaultencoding('utf8')

# 獲取當前文件路徑
# __file__ 爲當前文件, 在ide中運行此行會報錯,可改爲
# d = path.dirname('.')
d = path.dirname(__file__)

# 讀取文本 source.txt 在包文件的example目錄下
source = 'source.txt'

# 設置背景圖片
alice_coloring = imread(path.join(d, "1.jpg"))
wc = WordCloud(
font_path="C:\Windows\Fonts\FZSTK.TTF",#設置字體
background_color="white", #背景顏色
max_words=2000,# 詞雲顯示的最大詞數
mask=alice_coloring,#設置背景圖片
stopwords=STOPWORDS.add("said"),#設置不用的詞
max_font_size=100, #字體最大值
relative_scaling=.4,#設置相對大小
random_state=42)

#使用jieba對source.txt進行分詞,並將得到的數據轉換格式以便於中文輸出
with open(source,'r') as fr:
    d1=jieba.analyse.extract_tags(fr.read(),topK=100,withWeight=True)
data = []   
for tag in d1:
    data.append((tag[0].encode('gbk').decode('gbk'),tag[1]))


# 生成詞雲, 可以用generate輸入全部文本(中文不好分詞),也可以我們計算好詞頻後使用generate_from_frequencies函數
wc.generate_from_frequencies(data)

#設置背景圖片
image_colors = ImageColorGenerator(alice_coloring)

# 以下代碼顯示圖片
plt.imshow(wc)
plt.axis("off")
# 繪製詞雲
plt.figure()
# 重新繪製詞雲並展示
# 我們也可以直接在構造函數中設置參數 color_func=image_colors
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
# 繪製背景圖片爲顏色的圖片
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
# 保存圖片
wc.to_file(path.join(d, "1.png"))

使用WordCloud出現的問題

  • wordcloud中文顯示不出怎麼辦:
    中文顯示不出可以設置wc的參數,font_path到你想要的字體下。例如,在Windows環境下,我將參數設置到C:\Windows\Fonts\FZSTK.TTF這個字體下。windows一些自帶的字體都在C:\Windows\Fonts\下,你也可以自己下載一些字體展示:
  • wordcloud無法調用jieba產生數據:
    目前我想到的就是通過jieba獲取數據,然後挨個將中文的編碼用unicode解析和gbk讀取一遍。
  • wordcloud說缺少模塊 imread:
    用pip或者easy_install安裝scipy
發佈了21 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章