python词云分析之jieba,wordcloud模块

一.英文

导入wordcloud模块

from wordcloud import wordcloud
import re
# 处理背景图片所需要的模块
from PIL import Image
import numpy as np

1.切割和处理英文字符

data = []  #用来保存切割后的字符
with open('/tmp/passwd') as f:
	for line in f: 
		result1 = re.split(r'\s|:|/',line) # 使用正则表达式过滤掉无用字符
		#  如果item存在数据并且不是空格或者数字, 则保留;
		result2 = [item for item in result1 if not re.findall(r'\s+'|\d+,item) and item]
		data.extend(result2)

2.打开图片,获取图片的数据信息
doc/tree.png

imgObj = Image.open('doc/tree.png')
img_mask = np.array(imgObj)

3.创建词云对象,设置属性

wcObj = wordcloud.WordCloud(
	mask = img_mask, #指定词云图片
	backgroung_color = "snow"),
	min_font_size = 5, # 词云最小字体
	max_font_size = 50, # 词云最大字体
	# 词云背景长和宽,如果指定了词云图片,则无效
	width  =1000,
	height = 1000,

4.生成图片

#  词云绘制时, 默认之处理字符串类型, 怎么分隔每个单词? 必须以逗号分隔符分割
wcObj.generate(",".join(data))
wcObj.to_file('doc/wcObj.png)

结果:
doc/wcObj.png

二.中文

处理文字:马云曾公开表态称对钱没兴趣称其从来没碰过钱上了微博热搜
导入模块:

import jieba #处理中文字符的模块
from wordcloud import wordcloud
# 处理背景图片所需要的模块
from PIL import Image
import numpy as np

doc/wordcloud.jpg
def gen_wordcloud(text, filename):

# 1). 强调分割中有问题的词;
jieba.suggest_freq(('微博'), True)
jieba.suggest_freq(('热搜'), True)

#  2). 难点: 如何切割中文, jieba, lcut
result = jieba.lcut(text)
print(result)

# 绘制词云
# 3). 打开图片, 获取图片的数据信息;
imgObj = Image.open('doc/wordcloud.jpg')
img_mask = np.array(imgObj)
# print(img_mask)
# 4). 创建词云对象, 设置属性
wcObj = wordcloud.WordCloud(
    mask = img_mask,   # 数据如何填充到图片
    background_color="snow",  # 北京颜色
    font_path="/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc",  # 如果是中文, 指定字体库(fc-list :lang=zh)
    min_font_size=5,  # 图片中最小的字体大小
    max_font_size=50,   # 图片中最小的字体大小
    )
# 5). 生成图片;
# 词云绘制时, 默认之处理字符串类型, 怎么分隔每个单词? 必须以逗号分隔符分割
wcObj.generate(",".join(result))
wcObj.to_file(filename)

主函数:

if __name__ == '__main__':
    text = "马云曾公开表态称对钱没兴趣称其从来没碰过钱上了微博热搜"
    filename = 'doc/wcobj.png'
    gen_wordcloud(text, filename)

结果:
wcobj.png

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值