“词云”这个概念由美国西北大学新闻学副教授里奇·戈登(Rich Gordon)于提出。他一直很关注网络内容发布的最新形式——即那些只有互联网可以采用而报纸、广播、电视等其它媒体都望尘莫及的传播方式。通常,这些最新的、最适合网络的传播方式,也是最好的传播方式。 因此,“词云”就是通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出。
词云图过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
当初的想法是定时将丁香园肺炎疫情实时动态爬下来保存在本地,做成一个网站,将详细的疫情播报做成词云,人们就可以不用看长篇大论,而是通过词云获取关键词。结果发现网上都是一个个xxx肺炎疫情实时动态
。
读取文件
首先,我从丁香园肺炎疫情实时动态复制以下文本将其绘制成词云。
病毒: 新型冠状病毒 2019-nCoV
传染源: 野生动物,可能为中华菊头蝠
传播途径: 经呼吸道飞沫传播,亦可通过接触传播,存在粪-口传播可能性
易感人群:人群普遍易感。老年人及有基础疾病者感染后病情较重,儿童及婴幼儿也有发病
潜伏期:一般为 3~7 天,最长不超过 14 天,潜伏期内存在传染性
效果如下:
第一步当然是将数据保存在本地,然后读取数据。
因为文件对象会占用操作系统的资源,所以文件读取完后必须要关闭。
因为文件读写时都有可能产生IOError
,出错后就不会调用close()
,所以保证程序正常运行,应该使用try……finally
。
代码如下:
try:
fp=open("D:\\githubMe\\flask-tutorial\\doc\\coronavirus_data.txt",'r', encoding='UTF-8')
text=fp.read()
print(text)
finally:
if fp:
fp.close()
当然,python
的with
可以自动调用close()
。
优化的代码如下:
with open("D:\\githubMe\\flask-tutorial\\doc\\coronavirus_data.txt",'r', encoding='UTF-8') as fp:
text=fp.read()
生成词云
想要生成词云,方式有很多,这里调用wordcloud
包。
pip install WordCloud
其官网的案例。
导入PIL
图片处理库,对图片进行保存。
pip install PIL
PIL
已经是弃用了,所以可以安装PIL
fork
版的 Pillow
来替代它。
pip install Pillow
from wordcloud import WordCloud
import PIL .Image