【python 自然语言处理】画画词云图

主要内容
1、需要一张背景图(hang.jpg)
2、需要文本数据(comments.txt)
3、需要中文字体文件(simsun.ttc)

背景图:hang.jpg
这里写图片描述

效果图:

这里写图片描述

# encoding: utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import jieba.analyse           # 导入结巴分词
import numpy as np             # numpy
from wordcloud import WordCloud, STOPWORDS    # 词云工具和自带的的停用词
from PIL import Image              # 图片处理
import matplotlib.pyplot as plt

def handle(filename, stopword):
    with open(filename, 'r') as f:
        data = f.read()

    wordlist = jieba.analyse.extract_tags(data, topK=100)   # 分词,取前100
    wordStr = " ".join(wordlist)
    print wordStr

    hand = np.array(Image.open('hang1.jpg'))    # 打开一张图片,词语以图片形状为背景分布

    my_cloudword = WordCloud(
        # wordcloud参数配置
        width=1024,
        height=768,
        background_color = 'white',   # 背景颜色设置白色
        mask = hand,                  # 背景图片
        max_words = 300,              # 最大显示的字数
        stopwords = stopword,         # 停用词
        max_font_size = 100,           # 字体最大值
        font_path='simsun.ttc',  # 设置中文字体,若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
        random_state=3,  # 设置有多少种随机生成状态,即有多少种配色方案
    )

    my_cloudword.generate(wordStr)          # 生成图片
    my_cloudword.to_file('wordcloud.png')    # 保存
    plt.imshow(my_cloudword)  # 显示词云图
    plt.axis('off')  # 是否显示x轴、y轴下标
    plt.show()  # 显示

if __name__ == '__main__':


    handle('comments.txt', STOPWORDS)
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页