1. 程式人生 > >使用python3.6建立詞雲

使用python3.6建立詞雲

先給大家介紹一些詞雲線上生成網站:

國外網站

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')