实战一:中英文词云
1.简介
词云,又称文字云,由词汇组成类似云的彩色图形。词云是一种数据呈现方式,用于展示大量文本数据。
2.准备
工具:Anaconda+Pycharm
所需安装包:
pip install wordcloud matplotlib jieba pillow
3.WordCloud()可选的参数
- font_path:可用于指定`字体`路径,包括otf和ttf
- width:词云的宽度,``默认``为400
- height:词云的高度,默认为200
- mask:蒙版,可用于定制词云的形状
- min_font_size:最小字号,默认为4
- max_font_size:最大字号,默认为词云的高度
- max_words:词的最大数量,默认为200
- stopwords:将被忽略的停用词,如果不指定则使用默认的停用词词库
- background_color:背景颜色,默认为black
- mode:默认为RGB模式,如果为RGBA模式且background_color设为None,则背景将透明
4.英文词云
# 进行英文词云生成
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D:\\PyCharm\\PycharmProjects\\实战实战\\实战一 词云的使用\\'
# 打开文本
text = open(path + 'source//constitution.txt').read()
# 生成对象
wc = WordCloud().generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear') #负责对图像进行处理,并显示其格式,但是不能显示
plt.axis('off') #不显示坐标尺寸
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud1.png')
'''由于英文单词之间有空格,所以不需要额外的处理。'''

由于英文单词之间有空格,所以不需要额外的处理。
5.中文分词
(1)不分词的效果
以西游记为例
#中文不分词
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D:\\PyCharm\\PycharmProjects\\实战实战\\实战一 词云的使用\\'
# 打开文本
text = open(path + 'source//xyj.txt', encoding='UTF-8').read()
# 生成对象
wc = WordCloud(font_path='source/Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud2.png')

(2)中文分词效果
用jieba进行中文分词
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
path = 'D:\\PyCharm\\PycharmProjects\\实战实战\\实战一 词云的使用\\'
# 打开文本
text = open(path + 'source//xyj.txt', encoding='UTF-8').read()
#中文分词
text=' '.join(jieba.cut(text))
print(text[:100])
# 生成对象
wc = WordCloud(font_path='source/Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud3.png')

(3)使用蒙版
将mask翻译为蒙版,使用蒙版之后,可以根据提供的蒙版图片,生成指定形状的的词云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from PIL import Image
import numpy as np
path = 'D:\\PyCharm\\PycharmProjects\\实战实战\\实战一 词云的使用\\'
# 打开文本
text = open(path + 'source//xyj.txt', encoding='UTF-8').read()
#中文分词
text=' '.join(jieba.cut(text))
print(text[:100])
# 生成对象
meng=np.array(Image.open(path+'source//black_mask.png'))
wc = WordCloud(mask=meng,font_path='source/Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud4.png')

链接:https://pan.baidu.com/s/1fUBi0P8WDyQlN7-pqOMiFg
提取码:c2dk

2230

被折叠的 条评论
为什么被折叠?



