python生成词云

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python生成词云相关的知识,希望对你有一定的参考价值。

期末复习比较忙过段时间来专门写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生成词云的主要内容,如果未能解决你的问题,请参考以下文章

python 爬取腾讯微博并生成词云

python生成词云

python为啥wordcloud 生成的词云,单词排列不够紧凑?

Python生成词云

python3.7生成的词云,显示成功,却没有图片?

预定热榜!!!用python分析taptap游戏评价,生成词云,源码赠送,评论送书包邮