用python制作词云

用python制作词云


运行环境: python3.x

需要的模块:wordcloud 、 PIL 、 jieba 、 numpy

注意:PIL安装需要使用 pip install Pillow 命令

过程:

1.首先需要把文本中的词语先分割出来

    使用jieba.cut()方法可以将一段文本中的中文词条切割

2.选择一张图片作为词云的背景(要求轮廓清晰)

    使用numpy.array()方法把图片转化成数组形式,为最终生成词云做铺垫
    此处图片需要使用Image.open()方法打开图片作为上一个函数的对象

3.将统计好的词按照频率放入到指定的图片轮廓中

    使用WordCloud()方法设置背景、字体、最多词数、过滤噪音文字等 实例化
    转化成图片然后保存为图片

 


代码:

from wordcloud import WordCloud  # 词云库
import PIL.Image as Image  # 图片处理库
import jieba  # 中文文字处理库
import numpy  # 图片渲染

stopwords = {"的"}  # 定义过滤字


# 定义一个中文的分词函数
def chinese_word(text):
    worldlist_jieba = jieba.cut(text)  # 将文本中的词条切割开来,生成的是一个迭代器
    wd_space_slipt = " ".join(worldlist_jieba)  # 将分割开来的各个词语用空格连接起来
    return wd_space_slipt  # 返回处理结果


with open("news.txt", encoding="utf-8") as f:  # 打开文本文档
    text = f.read()  # 读取文档内容
    cn_text = chinese_word(text)  # 调用中文分词函数,将中文词条切割
    mask_pic = numpy.array(Image.open("china.jpg"))  # 加载图片
    # 生成词云的核心代码,可以指定背景颜色,字体,背景图片,最多词数,过滤噪音文字
    worldcloud = WordCloud(background_color='white', font_path='simkai.ttf', mask=mask_pic, max_words=3000,
                           stopwords=stopwords).generate(text)
    image = worldcloud.to_image()  # 转化成图片
    image.show()  # 显示生成的图片
    worldcloud.to_file("pic.jpg")  # 存储为文件

运行效果图:

用python制作词云