Python实现中文词云(wordcloud),根据背景图片生成词云
2017-09-29 21:31
751 查看
Python实现词云的库有很多,较为常见的就是
这个库基于
本文使用解释器为python2.7.13 32位
库的使用方法很简单,但是中文使用的话会有几个问题,一个是字符编码问题,二是字体问题,默认的字体不支持中文,因此需要加入

后续的工作还可以将引入分词工具直接进行分词。
结合我前面的做的例子
先抽取网页的文本,然后再进行分词,将分词结果根据频率作为字典传给
更简单,比如直接抽取文章的关键词,比如博客每篇文章就有关键词,用


对上面的代码做了一点简单的改动
wordcloud
这个库基于
PIL,
PIL是必不可少的,需要用的还有
matplotlib和
numpy
本文使用解释器为python2.7.13 32位
安装
pip install wordcloud
使用
针对库示例做了一个简单修改,直接使用generate_from_frequencies方法,而没有使用
generate()方法。有这样几个原因,
generate_from_frequencies是基础的方法,
generate()仍然还是要调用
generate_from_frequencies方法;实验比较直接。
库的使用方法很简单,但是中文使用的话会有几个问题,一个是字符编码问题,二是字体问题,默认的字体不支持中文,因此需要加入
font_path = "simfang.ttf"指定字体,这是把字体指定为同一个文件夹下的
simfang.ttf。
#encoding=utf-8 from os import path from wordcloud import WordCloud import sys reload(sys) sys.setdefaultencoding('utf-8') fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6} wordcloud = WordCloud(font_path = "simfang.ttf").generate_from_frequencies(fre) import matplotlib.pyplot as plt plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
后续的工作还可以将引入分词工具直接进行分词。
结合我前面的做的例子
先抽取网页的文本,然后再进行分词,将分词结果根据频率作为字典传给
generate_from_frequencies,生成词云。
更简单,比如直接抽取文章的关键词,比如博客每篇文章就有关键词,用
Counter库,直接生成频率调用。
使用背景图片生成词云
对上面的代码做了一点简单的改动
#encoding=utf-8 from os import path from wordcloud import WordCloud import sys reload(sys) sys.setdefaultencoding('utf-8') d = path.dirname(__file__) text = open(path.join(d, 'constitution.txt')).read().decode('utf-8') import numpy as np from PIL import Image football = np.array(Image.open(path.join(d, "timg.jpg"))) fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6, "呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6, "啦啦".decode('utf-8'):1,"哦哦".decode('utf-8'):6, "恩恩".decode('utf-8'):3,"呃呃".decode('utf-8'):6, "饿饿".decode('utf-8'):3,"嗯嗯".decode('utf-8'):6, "哼哼".decode('utf-8'):5,"丽丽".decode('utf-8'):6, "咔咔".decode('utf-8'):7,"咳咳".decode('utf-8'):6, "乐乐".decode('utf-8'):6,"呐呐".decode('utf-8'):6, "嘎嘎".decode('utf-8'):6,"嘻嘻".decode('utf-8'):6} #wordcloud = WordCloud(font_path = "simfang.ttf").generate(text) wordcloud = WordCloud(font_path = "simfang.ttf",mask=football).generate_from_frequencies(fre) import matplotlib.pyplot as plt plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
相关文章推荐
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)D
- 从零学python系列之教你如何根据图片生成字符画
- python实现word图片文字分离
- Python图片中的缩放实现,以及多种尺寸icon的生成
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)E
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)A
- ios实现视频录制功能 三 获取视频、保存到相册、根据视频生成占位图片
- Python matplotlib生成图片背景透明
- 根据html生成Word文件,包含图片
- Python matplotlib生成图片背景透明
- python模块win32com 实现数据库表结构自动生成word表格
- delphi根据不同图片生成不规则窗口的实现(仅限于BMP格式)
- Python matplotlib生成图片背景透明
- python实现基于两张图片生成圆角图标效果的方法
- java中Itext.jar中根据html生成Word文件(包含图片)
- Editplus借助python实现根据方法参数自动生成php注释
- Python matplotlib生成图片背景透明
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)B
- java实现:根据图片生成配色方案
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)C