1. 程式人生 > >python生成詞雲

python生成詞雲

cloud arr 文本 [0 mas func word .text ges

期末復習比較忙過段時間來專門寫scrapy框架使用,今天介紹如何用python生成詞雲,雖然網上有很多詞雲生成工具,不過自己用python來寫是不是更有成就感。

今天要生成的是勵誌歌曲的詞雲,百度文庫裏面找了20來首,如《倔強》,海闊天空是,什麽的大家熟悉的。

所要用到的python庫有 jieba(一個中文分詞庫)、wordcould 、matplotlib、PIL、numpy。

首先我們要做的是讀取歌詞。我將歌詞存在了文件目錄下勵誌歌曲文本中。

現在來讀取他

#encoding=gbk
lyric= ‘‘
f=open(./勵誌歌曲歌詞.txt,r)
for i in f:
    lyric
+=f.read()

加入#encoding=gbk是為了防止後面操作報錯SyntaxError: Non-UTF-8 code starting with ‘\xc0‘
然後我們用jieba分詞來對歌曲做分詞提取出詞頻高的詞

import jieba.analyse
result=jieba.analyse.textrank(lyric,topK=50,withWeight=True)
keywords = dict()
for i in result:
    keywords[i[0]]=i[1]
print(keywords)

得到結果:

技術分享

然後我們就可以通過wrodcloud等庫來生成詞雲了

首先先自己找一張圖片來作為生成詞雲的形狀的圖

技術分享

from PIL import Image,ImageSequence
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
image= Image.open(./tim.jpg)
graph = np.array(image)
wc = WordCloud(font_path=./fonts/simhei.ttf,background_color=White,max_words=50,mask=graph)
wc.generate_from_frequencies(keywords)
image_color 
= ImageColorGenerator(graph) plt.imshow(wc) plt.imshow(wc.recolor(color_func=image_color)) plt.axis("off") plt.show()

技術分享

保存生成圖片

wc.to_file(dream.png)


完整代碼:

#encoding=gbk
import jieba.analyse
from PIL import Image,ImageSequence
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
lyric= ‘‘
f=open(./勵誌歌曲歌詞.txt,r)
for i in f:
    lyric+=f.read()


result=jieba.analyse.textrank(lyric,topK=50,withWeight=True)
keywords = dict()
for i in result:
    keywords[i[0]]=i[1]
print(keywords)


image= Image.open(./tim.jpg)
graph = np.array(image)
wc = WordCloud(font_path=./fonts/simhei.ttf,background_color=White,max_words=50,mask=graph)
wc.generate_from_frequencies(keywords)
image_color = ImageColorGenerator(graph)
plt.imshow(wc)
plt.imshow(wc.recolor(color_func=image_color))
plt.axis("off")
plt.show()
wc.to_file(dream.png)

python生成詞雲