教程:用Python生成词云图

一. 词云图

“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
教程:用Python生成词云图_第1张图片

二. 前期准备

Python+jieba库+wordcloud库
如果需要自定义图像,还需要scipy库

jieba库

jieba库是用于中文分词的,可以将中文长文本切分成词组列表。jieba库提供三种分词模式:精确模式、全模式和搜索引擎模式。在生成词云图中,我们一般采用精确模式。其一般用法为:

lst=jieba.lcut(txt)

txt代表要分词的文本。有别于更常用的jieba.cut函数返回的是迭代器,jieba.lcut函数返回分词结果的列表
需要特别注意的是,待分词的文本建议为UTF-8编码格式,GBK编码格式文本可能产生无法预料的错误
如需了解更多,可参考jieba库官方文档

安装方法

可以在cmd中使用pip指令进行安装。安装语句为:

pip isntall jieba

wordcloud库

wordcloud库是Python中用于生成词云图的第三方库。其本身支持对英文的分词,但对中文分词效果较差,故需结合jieba库使用。

一般用法

我们使用wordcloud库中的WordCloud对象

w=wordcloud.WordCloud()

来实例化一个词云
之后使用generate方法将分词后的文本导入词云中

w.genetare(txt)

最后通过to_file方法将词云图导出为图片

w.to_file(path+pic_name)

如需了解更多,可参考官方文档

安装方法

第一种方法

可以采用pip指令安装

pip install wordcloud

但考虑到国内的网络因素,可能会安装失败。

第二种方法

可以下载编译好的.whl文件进行本地安装
这里推荐一个由UCI的lfd实验室汇总的网页,里面整理了众多经过编译的python第三方库包可供下载。
在其中下载适合python版本的wordcloud包后,进入cmd窗口。首先cd 至包所在的路径,然后使用pip指令安装该文件。例:

cd c://users//admin//downloads
pip install wordcloud-1.5.0-cp37-cp37m-win_amd64.whl

三. 生成词云图

这里直接给出源码,再逐一解释其用法。

import os
import jieba 
from wordcloud import WordCloud
from scipy.misc import imread
  
file_dir=r"C:\Users\xmy\Documents\Code\Data\wordcloud"
file_name="党校资料.txt"
pic_dir=r"C:\Users\xmy\Pictures\Python"
pic_name="chinamap.jpg"
path=os.path.join(file_dir,file_name)
to_path=os.path.join(pic_dir,os.path.basename(file_name).split(".")[0]+".png")
  
with open(path,"r",encoding="utf-8") as f:
    t=f.read()
ls=jieba.lcut(t)
txt=" ".join(ls)
mask=imread(os.path.join(pic_dir,pic_name))
w=WordCloud(font_path="msyh.ttc",mask=mask)
w.generate(txt)
w.to_file(to_path)

初看可能会觉得代码很长,但很多与os相关的代码都是不必要的,或者说仅为了修饰代码整洁性和修改文件名称而使用的。

核心代码从open部分开始:

  • 使用with open语句打开.txt文件,再利用read()读取全部文本。
    需要提醒的是,请特别注意编码格式
  • 调用jieba.lcut函数对文本进行分词并返回列表
  • " ".join(ls)将分词得到的列表用空格分隔开生成一段新文本
  • *imread用于读取图片(如不需要自定义图形,可忽略该语句)
  • w.WordCloud实例化词云(如需自定义图形,将mask参数选为imread读取的图片)
    需要注意,如果是生成中文词云,需指定中文字体格式,否则无法显示中文。我们使用的是系统自带的微软雅黑字体,即“msyh.ttc”。
  • w.generate(txt)将分词后的文本导入词云中
    w.to_file()将词云图导出为本地图片

这样,就完成了代码部分。
运行后,稍等片刻,即会在本地生成词云图片。
教程:用Python生成词云图_第2张图片

使用的底图是:

四. 尾巴

先讲讲踩过的坑:

  1. 最初确认wordcloud库安装完成后,运行代码总报
ImportError:cannot import name ‘WordCloud’

解决方案很简单,代码文件名不能是wordcloud,和库名一致导致代码无法正确运行。

  1. 读取的文档必须是txt格式的,最好是utf-8编码的,否则容易出错。

Ending

这篇教程只是生成简单的词云图,实现更多丰富功能可以参考wordcloud库的参考文档。祝大家Happy Coding!

你可能感兴趣的:(教程:用Python生成词云图)