词云图的绘制

一、过程

 目的:将25000条评论当中的热词提取出来,并制作词云图

 1)数据下载

  链接:https://pan.baidu.com/s/1qJPazyFBSzYqjv8k7eb-VA  提取码:rufi 

  在某路径下(如桌面)新建wordCloud文件夹,将上面下载的数据转移到该文件夹内,在该文件夹内按下shift+鼠标右键,然后选择:在此处打开命令窗口,即开启dos窗口,然后输入jupyter notebook,开始编程

  如果读者并未安装jupyter notebook,安装过程请参考:jupyter notebook的安装与使用

 2)文件读取

import pandas as pd
df = pd.read_csv('labeledTrainData.csv', sep='	')
df.head()

  我们看到下面的运行结果中存在一些斜杠,这些并不是我们想看到的词,因此我们修改上面的代码,加上escapechar参数:

import pandas as pd
df = pd.read_csv('labeledTrainData.csv', sep='	', escapechar='\')
df.head()

  

 3)获取评论列表

  df['review']Series对象,Series对象有tolist方法,返回值的数据类型为列表listdf['review'].tolist()的返回值是每一条评论组成的列表list

  导入BeautifulSoup库,去除评论当中的标签

review_list = df['review'].tolist()
from bs4 import BeautifulSoup as bs
comment_list = [ bs(k, 'lxml').text for k in review_list ]

  第三行代码如果出如下错误:

  需要安装lxml包:

pip install lxml

  从上可以看出经过BeautifulSoup处理,内容部分的<br />已经被去除

 4)去除标点并让所有字母小写

all_comment = ' '.join(comment_list)
import re
pattern = r'[^ws]'
replace = ''
all_comment = re.sub(pattern, replace, all_comment)
all_comment = all_comment.lower()

  关于正则匹配:https://blog.csdn.net/wl_ss/article/details/78241782

 5)词频统计

  首先引入collection中的Counter方法,Counter方法需要填入1个参数,参数的数据类型为列表。Counter方法的返回值数据类型是一个collections.Counter对象,集成了字典dict的一些特性

from collections import Counter
word_list = all_comment.split(' ')
wordCount_dict = Counter(word_list)
wordCount_dict

  

 6)停顿词删除

  下载停词文件,链接:https://pan.baidu.com/s/1zNp4m83uipKF8zVieZF0sw 提取码:3o0a

with open('stopwords.txt') as file:
    stopword_list = [k.strip() for k in file]
for stopword in stopword_list:
    if stopword in wordCount_dict:
        wordCount_dict.pop(stopword)
wordCount_dict.pop('')

 7)取出出现次数排名前200的单词

sorted(wordCount_dict.items(), key=lambda k:k[1], reverse=True)[0:200]

choices_number = 200
count_list = sorted(wordCount_dict.items(), key=lambda k:k[1],reverse=True)
count_list = count_list[:choices_number]
keyword_list = [ k[0] for k in count_list ]
value_list = [ k[1] for k in count_list ]

 8)利用pyecharts库绘图

  安装包:pip install pyecharts

  wordcloud.add需要填入4个参数,第1个参数是标签,可以为空,第2个参数是出现的单词,第3个参数是单词对应的词频,第4个参数是词云上字体大小

from pyecharts import WordCloud
wordcloud = WordCloud(width=800, height=500)
wordcloud.add('', keyword_list, value_list, word_size_range=[20, 100])
wordcloud

 9)绘图结果

 10)致谢

  本文参考简书:https://www.jianshu.com/p/96b983784dae

  感谢作者的详细过程,让自己学会了词云图制作,再次感谢!

原文地址:https://www.cnblogs.com/always-fight/p/10186084.html