Python小程序——利用wordcloud库生成词云(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010815486/article/details/83013825

最近自学Python的中文处理,其中用到了wordcloud库生成一篇文章的词云,能更直观的表现出文章的主题,是一个不错的工具。虽然现在网上有很多词云在线生成的应用,不过为了更个性化一点,还是写一个自己的词云生成工具吧。

import jieba
import wordcloud
from imageio import imread
from collections import Counter
fire = open('新时代中国特色社会主义.txt', 'r', encoding='UTF-8-sig')
text = fire.read()
fire.close()

读取文本保存在text变量中,第一步进行词频统计。

def get_words(text):  # 词频统计
    seg_list = jieba.cut(text)
    c = Counter()
    # Counter 作为字典(dict)的一个子类用来进行hashtable计数,
    # 将元素进行数量统计、计数后返回一个字典,键值为元素:值为元素个数
    for i in seg_list:
        if len(i) > 1 and i != '\r\n':
            c[i] += 1
    ls = []
    # 选出词频前100的词
    for (i, j) in c.most_common(120):
        ls.append(i)
    return ls

统计出来的词可能有些并不是我们想要的,要经过多次筛选排除:

word_ls = get_words(text)

# 筛选排除
stop_words = ['我们', '一个', '一切', '中国']
for i in word_ls:
    if i in stop_words:
        word_ls.remove(i)

筛选后的词可以打印输出查看:

由于wordcloud是给英文制作词云的库,所以默认是按照空格来分词,我们之前已经用jieba库给中文分好了词并且经过词频统计和筛选,记得用空格连接分好的词:

text_list = ' '.join(word_ls)

新建一个wordcloud对象,调用generate()方法就能生成词云了:

w_cloud = wordcloud.WordCloud(
    font_path=font,
    background_color=None, mode="RGBA",  # 背景透明
    width=1000,
    height=600,
    mask=mask)

w_cloud.generate(text_list)
w_cloud.to_file('wordcloud.png')

最终效果:

wordcloud对象可以配置很多属性,生成个性词云,这个另一篇文章再详细说明。

猜你喜欢

转载自blog.csdn.net/u010815486/article/details/83013825