使用python3.6建立詞雲
阿新 • • 發佈:2019-02-03
先給大家介紹一些詞雲線上生成網站:
國外網站
WordItOut(https://worditout.com/)
Tagxedo(http://www.tagxedo.com/)
Tagul(https://wordart.com/)
Tocloud(http://www.tocloud.com/)
國內網站
圖悅(http://www.picdata.cn/)BDP個人版(https://me.bdp.cn/home.html)介紹了這麼多,既然有線上生成詞雲的工具,那麼我們為什麼還要用python 來實現?“Because we can”python版本:3.6.4用到的庫:jieba、PIL、numpy、matplotlib、wordcloud(安裝方法自行百度)
背景圖
效果圖一、首先使用jieba庫對文字進行分詞jieba分詞有三種模式:精準模式(預設)、全模式和搜尋引擎模式。在本文中我們使用關鍵詞提取法jiepa.analyse,基於TextRank演算法的關鍵詞抽取。
jieba.analyse.textrank(l,topK=250,withWeight=True)
- text:代替去的文字
- topK:返回多少個TextRank權重最大的關鍵詞
- withWeight:是否一併返回關鍵詞的權重值
np.array(image)
- 使用nump將圖片轉化為陣列
WordCloud(font_path='simhei.ttf',background_color='White',max_font_size=170,mask=graph)
- font_path:設定字型,注意要設定成支援中文的字型
- background_color:設定生成的詞雲背景顏色
- max_font_size:設定詞雲容納的詞量
- mask:設定背景圖片
wc.generate_from_frequencies(keyworlds)
- 呼叫wordcloud中的generate_from_frequencies方法,根據分詞的頻率建立一個詞雲
image_color = ImageColorGenerator(graph)
- 使用ImageColorGenerator方法,提取RGB圖片的顏色並應用於詞雲
import jieba.analyse from PIL import Image,ImageSequence import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator l = '' f = open('狼圖騰.txt','r') for i in f: l +=f.read() result = jieba.analyse.textrank(l,topK=250,withWeight=True) keyworlds = dict() for i in result: keyworlds[i[0]]=i[1] # print(keyworlds) image = Image.open('timg.jpg') graph = np.array(image) wc = WordCloud(font_path='simhei.ttf',background_color='White',max_font_size=170,mask=graph) wc.generate_from_frequencies(keyworlds) image_color = ImageColorGenerator(graph) plt.imshow(wc) plt.imshow(wc.recolor(color_func=image_color)) plt.axis('off') plt.show() wc.to_file('1.png')