提取小说《开国太后纪事》得到的结果

安装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

更多相关文章

  1. jieba(结巴)Python分词器加载到Eclipse方法
  2. 【Python求助】在eclipse和pycharm中,通过adb install安装中文名
  3. Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器
  4. Python JSON里保存中文为'\uXXX'
  5. python的list要打印中文字符
  6. 【python 编程】网页中文过滤分词及词频统计
  7. linux notepadqq不支持中文输入的原因分析
  8. 《LINUX SHELL脚本攻略》(Sarath Lakshman中文版带书签) 和 英文
  9. Linux安装ElasticSearch-2.2.0-分词器插件(IK)

随机推荐

  1. MySQL Internal - InnoDB存储引擎(行结构
  2. MySql查询脚本,每月统计活动用户。
  3. php怎么读取MYSQL数据到radio选项
  4. 计算他们自动放入全列的两列
  5. mysql安装后不能重新修改目录文件夹的名
  6. mysql 常用字段和占用 字节数
  7. mysql数据库拷贝到另一个服务器上
  8. 是否会添加不必要的比较以获得结果但是减
  9. mysql-5.7.22-winx64 mysql 安装笔记
  10. 如何在产品和类别应用程序树中将1个表连