首頁  >  文章  >  後端開發  >  python生成詞雲方法教程

python生成詞雲方法教程

巴扎黑
巴扎黑原創
2017-06-23 15:33:122986瀏覽

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

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

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

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

現在來讀取他

#encoding=gbklyric= ''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,ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom 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=gbkimport jieba.analysefrom PIL import Image,ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom 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生成詞雲方法教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn