词云

时间:2019-02-20
本文章向大家介绍词云,主要包括词云使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

需要下载:
jieba(结巴):切割中文的模块;
wordcloud;
pillow:python3中专门用来处理图像的模块;
numpy;
matplotlib;

import re
import jieba
from PIL import Image
from wordcloud import wordcloud
import numpy as np

# 中文词云
def gen_wordcloud(text, filename):
    # 1). 强调分割中有问题的词;
    jieba.suggest_freq(('微博'), True)
    jieba.suggest_freq(('热搜'), True)
    #  2). 难点:如何切割中文---jieba, lcut
    result = jieba.lcut(text)
    print(result)
    # 绘制词云;
    # 3). 打开图片,获取图片的数据信息;
    imgObj = Image.open('./doc/wordcloud.jpg')
    img_mask = np.array(imgObj)
    # print(img_mask)    
    # 4). 创建词云对象,设置属性;
    wcObj = wordcloud.WordCloud(
        mask = img_mask,   												# 数据如何填充到图片
        background_color="snow",  										# 北京颜色
        font_path="/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc",  		# 如果是中文, 指定字体库(fc-list :lang=zh)
        min_font_size=5,  												# 图片中最小的字体大小
        max_font_size=50,   											# 图片中最小的字体大小
        width=1000,  													# 图片宽度
        height=1000, 													# 高
        )
    # 5). 生成图片;
    # 词云绘制时,默认之处理字符串类型,怎么分隔每个单词? 必须以逗号分隔符分割;
    wcObj.generate(",".join(result))
    wcObj.to_file(filename)
    
if __name__ == '__main__':
    text = "马云曾公开表态称对钱没兴趣称其从来没碰过钱上了微博热搜"
    filename = 'doc/wcObj.png'
    gen_wordcloud(text, filename)
    
#  英文词云
# 1). 切割和处理英文字符
data = []
with open('/tmp/passwd') as f:
    for line in f:
        result1 = re.split(r'\s|:|/', line)
        # 如果item存在数据并且不是空格或者数字,则继续进行处理;
        result2 = [item for item in result1 if not re.findall(r'\s+|\d+', item) and item]
        # print(result2)
        data.extend(result2)
# 2). 打开图片, 获取图片的数据信息;
imgObj = Image.open('./doc/wordcloud.jpg')
img_mask = np.array(imgObj)
# print(img_mask)
# 3). 创建词云对象, 设置属性
wcObj = wordcloud.WordCloud(
    mask = img_mask,
    background_color="snow",
    min_font_size=5,
    max_font_size=50,
    width=1000,
    height=1000,
    )
# 4). 生成图片;
# 词云绘制时, 默认之处理字符串类型, 怎么分隔每个单词? 必须以逗号分隔符分割
wcObj.generate(",".join(data))
wcObj.to_file('doc/wcObj.png')