词云,就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
说实在的就是一张图片,包含各种词汇,而词汇的大小根据出现的出现的频率决定的。这张图就是我根据爬取微信公众号近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')  #保存图片 | 
一番操作后,就能生成上面的词云了,其实在词云生成的样式也可以变化的,可以生成这样的也就需要加个中国地图的背景图片。
有需要,但是不懂的代码的小伙伴,可以私信我,免费帮忙哦,么么哒。