python 词云 教程

笔者菜鸡,今天学了一下,写个总结,若有错误欢迎指出。

首先,遇到了几个问题,如下(环境是mac):

1.安装wordcloud、jieba包失败

解决:一开始笔者是在终端 输入命令 conda install jieba,安装失败,最后用了pip install jieba (试了两次,第二次安装成功)

2.字符编码utf-8问题

UnicodeDecodeError: 'utf-8' codec can't decode byte 报错

在公司一直用的windows,在pycharm下编写,这次在家用自己电脑就出现了问题,查了好多资料,解决方法写在其他博客里了。如下:

https://blog.csdn.net/qingfudian5382/article/details/89787934

3.显示效果不好

有两个原因:emmm图选的不好和字太少

可以优先找图片清晰和紧贴边框的图

4.字体路径

如果词云需要展示的有中文字体,就需要添加字体路径。

mac默认字体路径在:/System/Library/Fonts   下

 

准备工作:

1.安装好wordcloud、jieba包

2.准备一个txt文件,里面写的是生成词云的内容

3.准备生成词云的背景图片

先贴效果图:

 

 

然后是处理过文字颜色的词云图(选取的背景图片的颜色),和用photoshop随手做了个好丑的原背景图片素材:)

好了,接下来贴代码(代码里面都写了注释):

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri May  3 15:08:46 2019

@author: afra
"""
# 导包
from os import path
import jieba
import numpy as np
import PIL .Image as image
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt

# func1 分词方法
def func1(text):
    word_list = jieba.cut(text)
    result = " ".join(word_list)
    return result


# 读取文件
__file__ = "/Users/afra/Desktop/"
d = path.dirname(__file__)
text = open(path.join(d, 'test3.txt')).read()
#print(text)
text = func1(text)
mask = np.array(image.open("/Users/afra/Desktop/22222.jpg"))

# 绘制词云图
wc = WordCloud(
        font_path = "/System/Library/Fonts/STHeiti Medium.ttc",
        mask = mask,
        background_color='white',
        max_words = 100,
        width = 500,
        height = 500,
        max_font_size=50,
        random_state=8,
        scale = 4
        )
wc.generate(text)
# 保存图片
wc.to_file('result.png')

# 展示
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.figure()
# 取背景颜色得到的文字词云
image_colors = ImageColorGenerator(mask)
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off")
plt.figure()
# 原图
plt.imshow(mask, cmap=plt.cm.gray, interpolation="bilinear")
plt.axis("off")
plt.show()


最后

1.分词的处理简单用了库里的方法,没有更细致的处理,以后有时间还是要学习一下,处理一下。

2.可以在一个很大的有很多内容的文件,根据出现词的频率来生成词云,这个以后有时间也要研究学习一下。

谢谢观看!有错误或者有更好的思路,欢迎交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值