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

来源:互联网 发布:阿里云网站备案查询 编辑:程序博客网 时间:2024/05/18 03:51

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

安装WordCloud

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

pip install -r requirements.txtpython 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-8import jiebaimport mathfrom os import pathfrom scipy.misc import imreadimport matplotlib.pyplot as pltfrom collections import Counterimport jieba.analyseimport timeimport 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_colorsplt.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
0 0
原创粉丝点击