使用Python造一片词云
一、简介
背景
“词云”又称文字云,是文本数据的视觉表示,由词汇组成类似云的彩色图形,用于展示大量文本数据。通常用于描述网站上的关键字元数据(标签),或可视化自由格式文本。
词云中每个词的重要性以字体大小或颜色显示,由词汇组成类似云的彩色图形。
“词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)提出,他做过编辑、记者,曾担任迈阿密先驱报(MiamiHerald)新媒体版的主任。他一直很关注网络内容发布的最新形式——即那些只有互联网可以采用而报纸、广播、电视等其它媒体都望尘莫及的传播方式。通常,这些最新的、最适合网络的传播方式,也是最好的传播方式。
作用
因此,“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
- 快速感知最突出的文字
- 快速定位按字母顺序排列的文字中相对突出的部分
词云的本质是点图,是在相应坐标点绘制具有特定样式的文字的结果。
二、Python-词云
针对如下图所示的TXT文本,利用Python构造词云:
代码如下:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text = open(r'\\Mac\Home\Desktop\vlookup.txt',encoding='utf-8')
mylist = list(text)
word_list = [" ".join(jieba.cut(sentence)) for sentence in mylist]
new_text = ' '.join(word_list)
wordcloud = WordCloud(font_path='simhei.ttf',
background_color='black').generate(new_text)
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig(r'\\Mac\Home\Desktop\test\ciyun.png')
plt.show()
三、扩展-抠图
同样的测试文本,还可使用指定图像进行抠图,例如使用白色为背景,则以指定图像中非白色为轮廓填入词汇生成词云。
代码如下:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
# from scipy.misc import imread
from matplotlib.pyplot import imread
text = open(r'\\Mac\Home\Desktop\test.txt',encoding='utf-8')
mylist = list(text)
word_list = [" ".join(jieba.cut(sentence)) for sentence in mylist]
new_text = ' '.join(word_list)
pac_mask = imread(r'\\Mac\Home\Desktop\test.jpg')
wc = WordCloud(font_path='simhei.ttf',
background_color='white',max_words=2000,mask=pac_mask).generate(new_text)
plt.imshow(wc)
plt.axis('off')
plt.show()
wc.to_file(r'\\Mac\Home\Desktop\test\ciyun1.png')
得到的词云图如下: