python 之 词云图

121 阅读3分钟

这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

Python -- wordCloud构造词云图


最近在看python,发现python是在是太好玩了,今天来介绍一下 wordClud.

什么是词云图

词云又叫文字云,是对网络文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或"关键词渲染",从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。看了这段是不是觉得"哎呦,不错呦"

具体是什么样式的如下图:

image.png

wordCloud 安装


pip install wordcloud

如果还没有安装 pip的读者,可以去安装一下.[安装pip][1]

词云小试

新建一个 名字.py的文件,内容如下


import os

from os import path

import matplotlib.pyplot as plt

from  wordcloud import WordCloud

import jieba

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

text_from_file_with_apath = open('文本路径').read().decode('utf-8')

wordlist_after_jieba = jieba.cut(text_fro
![timg.jpeg](http://upload-images.jianshu.io/upload_images/1043684-248928cde540bb25.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
m_file_with_apath, cut_all = True)

wl_space_split = " ".join(wordlist_after_jieba)

font=os.path.join(os.path.dirname(__file__), "DroidSansFallbackFull.ttf")

my_wordcloud = WordCloud(font_path=font,max_font_size=40).generate(text_from_file_with_apath)

assert isinstance(my_wordcloud, object)

plt.imshow(my_wordcloud)

plt.axis("off")

plt.show()

当然上面是我改进之后的,在学习的过程中遇到了很多问题,如果读者把代码假如之后还是运行不成功,继续向下看,一定会有收获.

如果成功之后就是这个样子的..

温馨提示:示例文本是我在文本的路径.这里面放读者自己的就可以了.还有DroidSansFallbackFull.ttf字体也是,大家可以去下载,如果想要可以留言给我哦.

###遇到的坑

  • PIL 安装失败
  • 中文编码

PIL安装失败

如果有 pip工具其实就是一句命令行

sudo pip install PIL

如果安装失败我报的错误是

could not find a version that satisfies the requirement PIL.(form versions:)
No matching distribution found for PIL.

上网查资料,说按照终端提示添加即可,可是我的终端没有提示,后来终于找到原因了,大概是因为 Mac下的 python 是2.7版本的,安装的 pip 也是也是较高版本,用 pip 安装PIL的时候就会报这个错误,这个错误的大概意思就是找不到 PIL,最后发现其实是现在已经用Pillow代替了PIL,在使用方面没有不同,API都是相同的。 既然如此,咱们就直接安装Pillow模块吧,执行

sudo pip install Pillow

安装这个模块时,发现它会依赖另外一个模块:multiprocessing 只能先把multiprocessing模块安装好再执行上面的命令了,

sudo pip install

multiprocessing即可正常安装,非常小的一个模块

中文编码问题

上段代码中的展示英文字体是没有任何错误的,但是展示中文字体会出现

解决办法就是引入了 sys库。 ###修改代码

 import osfrom os import path
    import matplotlib.pyplot as plt
    import numpy as np
    
    from scipy.misc import imread
    
    from  wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
    import jieba
    import sys
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    text_from_file_with_apath = open('保存的文本路径/stopwords.txt').read().decode('utf-8')
    wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
    wl_space_split = " ".join(wordlist_after_jieba)
    
    font=os.path.join(os.path.dirname(__file__), "DroidSansFallbackFull.ttf")
    
    alice_coloring = plt.imread('保存的图片路径/love.jpg')
    
    my_wordcloud = WordCloud(font_path=font,max_font_size=40,background_color="white",mask=alice_coloring,stopwords=STOPWORDS.add("said")).generate(text_from_file_with_apath)
    
    assert isinstance(my_wordcloud, object)
    image_colors = ImageColorGenerator(alice_coloring)
    
    plt.figure()
    plt.imshow(alice_coloring, cmap=plt.cm.gray)
    plt.axis("off")
    plt.show()
    my_wordcloud.to_file('保存的图片路径')

一切都已经搞定了.如果有问题欢迎来讨论.

###遇到的坑

目前遇到的坑都是类似什么什么库没找到.可以利用 pip 去安装 命令类似 pip install 库名