当前位置:首页 > 资讯 > 正文

用python实现中文词云完整流程(wordcloud、jieba)

我们将用python3的第三方库wordcloud来做中文词云。通过对2月3日-2月5日国家卫健委的三天记者会实录做词云分析,一定程度上,我们可以得到三天内舆情动向及官方侧重点的变化。


 

进入国家卫健委官网,分别将2月3日、2月4日和2月5日记者会内容粘贴保存为 2月3日记者会.txt2月4日记者会.txt2月5日记者会.txt

  • 需要注意的是,这里txt文件最好用utf-8编码保存,不然会报出编码错误。
  • 解决方法如下:用记事本打开txt文件,点击‘另存为’,在最下面有‘编码’选项,默认为’ANSI’,如果默认,运行程序会报错,所以需要在‘编码’选项中选择‘utf-8’编码方式,然后保存。用read()函数读取文件时,需要指明解码方式 encoding=‘UTF-8’。
 

对于中文词云,在wordcloud之前,需要用jieba将中文分词。这是由于wordcloud是针对英语的,如果文本是中文,则可能将一整段句子展示出来,而通常我们仅仅想要知道一个关键词而已。

那么,什么是分词?很简单,比如这样的一句话,‘我现在居住在成都’,通过jieba分词,结果是‘我’ ‘现在’ ‘居住’ ‘在’ ‘成都’。

分别对data1, data2和data3进行分词。

 

这里,我们需要注意两个问题:

  • 问题1:wordcloud本来是用来展示英语词云的,直接用中文,生成图片或者是大小方框,或者是乱码;
  • 问题2:解决问题1,即便能生成正常中文词云,也会发现词云中展示的都是‘是’ ‘第一’ ‘第二’ ‘好的’之类无关紧要的词汇。

为了解决第一个问题,我们需要给wordcloud函数传入合适的中文字体信息。一般计算机字体信息在’C:WindowsFonts’文件夹,如图: 用python实现中文词云完整流程(wordcloud、jieba) 选择任何一个你喜欢的中文字体,右键,在属性里面找到字体名及后缀.ttf。这里,我选择 隶书,文件名为 SIMLI.ttf。

 

为解决第二个问题,我们引入 停止词 的概念。停止词(stopwords)是wordcloud函数的一个选项,通过指定停止词,wordcloud可以忽略这些停止词,对其他词语进行展示。中文停止词有许多不同的,各位可以自行在网上下载使用。

 

接下来,我们可以直接用wordcloud函数生成词云。具体代码为

 

比如这样的 用python实现中文词云完整流程(wordcloud、jieba) 到这里,其实词云已经生成了。但是为了更进一步作出更漂亮的词云,我们可以将词云填充到一个图像里面进行展示。 1、我们在百度图片里面,挑选一个简单的图片,保存,如下 用python实现中文词云完整流程(wordcloud、jieba) 2、以data1为例,运行如下代码

 

这样,生成的图片如下: 用python实现中文词云完整流程(wordcloud、jieba) 类似的,我们可以生成2月4日和2月5日国家卫健委记者会实录词云图片,如下: 用python实现中文词云完整流程(wordcloud、jieba)用python实现中文词云完整流程(wordcloud、jieba)

实际上,通过对上述三天内容的词云展示,我们可以显然看出来,2月3日的重心在于公布疫情现状和稳定舆论情绪,2月4日的重心在于对现有病人的救治,2月5日的重心在于物资问题。


以上仅仅是非常粗浅的应用,分析和结论也仅仅是浅尝辄止,希望后面有更好的应用。

最新文章