Python生成词云

词云,就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

说实在的就是一张图片,包含各种词汇,而词汇的大小根据出现的出现的频率决定的。这张图就是我根据爬取微信公众号近3w篇文章的标题,进行分词后,生成的一张词云。
网络安全
如果自己制作这张图感觉不从下手,但是有了Python在,简直分分钟的事。首先我们安装wordcloud这个生成词云的库,以及中文分词的库jieba,然后导入绘图的库matplotlib

pip install wordcloud
pip install jieba
pip install matplotlib

然后代码说话:

1
import matplotlib.pyplot as plt
2
import jieba.analyse
3
from wordcloud import WordCloud
4
5
def image(top):   #词云中词汇个数
6
    articles = WechatArticle.query.with_entities(WechatArticle.title).all()   #获取title数据
7
    text = ','.join([i.title for i in articles])    #进行数据拼接
8
    result = jieba.analyse.textrank(text,topK=int(top),withWeight=True)   #进行中文分词,并根据传入的词汇个数,产生多少个词汇,并返回各个词汇的比重。
9
    keywords = dict()
10
    for i in result:
11
        keywords[i[0]] = i[1]  #生成字典,{'keyword':weight}
12
    wc = WordCloud(font_path='./utils/captcha/simhei.ttf',max_words=int(top), width=805, height=304)  #实例词云,传入字体路径,最大的词汇数,以及词云的宽高,这里的话如果不传入字体的话,找不到字体,就会出现框框的情况。
13
    wc.generate_from_frequencies(keywords) #传入关键字
14
    plt.imshow(wc) #进行绘图
15
    plt.axis("off") #去除X轴
16
    wc.to_file('./static/front/img/dream.png')  #保存图片

一番操作后,就能生成上面的词云了,其实在词云生成的样式也可以变化的,可以生成这样的也就需要加个中国地图的背景图片。
有形状的词云

有需要,但是不懂的代码的小伙伴,可以私信我,免费帮忙哦,么么哒。