python学习(13)————jieba进阶生成词云

提取小说《开国太后纪事》得到的结果
这里写图片描述

安装WordCloud

构建词云的方法很多,这里我们介绍一下WordCloud的使用方法,WordCloud是可以自定义图片背景,然后通过给的文档自动生成词云,它会根据词出现频率的大小来确定词的大小。安装方法有两种:
一种是自己下包,并用pip安装依赖然后再安装,一种是直接安装:
它的官网是:
官网: https://amueller.github.io/word_cloud/
github: https://github.com/amueller/word_cloud
1、到github上下载包,解压后进入文件夹:
执行

pip install -r requirements.txt
python setup.py install

2、直接执行:

pip install wordcloud

wordcloud生成代码

我们根据https://github.com/amueller/word_cloud/blob/master/examples/colored.py的代码,修改后来处理中文词条数据。当然,一个小说首先得先通过jieba自动分词,否则无法获得词条。然后再通过wordcloud处理得到图片。主要流程如下

Created with Raphaël 2.1.0开始用jieba分词数据用wordcloud生成词云用matplotlib画图结束

代码如下:

#encoding=utf-8
import jieba
import math
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
from collections import Counter
import jieba.analyse
import time
import sys 
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

#让文件以utf-8的形式读取
reload(sys) 
sys.setdefaultencoding('utf8')

# 获取当前文件路径
# __file__ 为当前文件, 在ide中运行此行会报错,可改为
# d = path.dirname('.')
d = path.dirname(__file__)

# 读取文本 source.txt 在包文件的example目录下
source = 'source.txt'

# 设置背景图片
alice_coloring = imread(path.join(d, "1.jpg"))
wc = WordCloud(
font_path="C:\Windows\Fonts\FZSTK.TTF",#设置字体
background_color="white", #背景颜色
max_words=2000,# 词云显示的最大词数
mask=alice_coloring,#设置背景图片
stopwords=STOPWORDS.add("said"),#设置不用的词
max_font_size=100, #字体最大值
relative_scaling=.4,#设置相对大小
random_state=42)

#使用jieba对source.txt进行分词,并将得到的数据转换格式以便于中文输出
with open(source,'r') as fr:
    d1=jieba.analyse.extract_tags(fr.read(),topK=100,withWeight=True)
data = []   
for tag in d1:
    data.append((tag[0].encode('gbk').decode('gbk'),tag[1]))


# 生成词云, 可以用generate输入全部文本(中文不好分词),也可以我们计算好词频后使用generate_from_frequencies函数
wc.generate_from_frequencies(data)

#设置背景图片
image_colors = ImageColorGenerator(alice_coloring)

# 以下代码显示图片
plt.imshow(wc)
plt.axis("off")
# 绘制词云
plt.figure()
# 重新绘制词云并展示
# 我们也可以直接在构造函数中设置参数 color_func=image_colors
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
# 绘制背景图片为颜色的图片
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
# 保存图片
wc.to_file(path.join(d, "1.png"))

使用WordCloud出现的问题

  • wordcloud中文显示不出怎么办:
    中文显示不出可以设置wc的参数,font_path到你想要的字体下。例如,在Windows环境下,我将参数设置到C:\Windows\Fonts\FZSTK.TTF这个字体下。windows一些自带的字体都在C:\Windows\Fonts\下,你也可以自己下载一些字体展示:
  • wordcloud无法调用jieba产生数据:
    目前我想到的就是通过jieba获取数据,然后挨个将中文的编码用unicode解析和gbk读取一遍。
  • wordcloud说缺少模块 imread:
    用pip或者easy_install安装scipy
发布了21 篇原创文章 · 获赞 10 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章