词云分析 您所在的位置:网站首页 天猫标题品牌 词云分析

词云分析

2024-07-04 22:45| 来源: 网络整理| 查看: 265

文章目录 0 引言1 准备工作2 主程序3 分析与改进4 可能出现的报错及解决方案

0 引言

什么是词云分析? 词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。

1 准备工作

前段时间学习了爬虫技术,并自己尝试着对一些信息进行爬取。完成了一个对天猫商品评论的爬虫项目,并将爬取到的评论存到了Excel表格中,如下图所示。 在这里插入图片描述 爬取的是天猫商城元气森林气泡水的评论,将评论内容、评论时间以及购买商品的类型全部存下来了,共计800条。现在想要对这800条评论的内容进行词云分析。 将A列全选,复制粘贴到新建的txt文件中。 在这里插入图片描述

词云分析需要一个背景图,文字分布在该图片在图层上存在的部分,不存在的部分则不分布文字。所以这时候需要用到PS。 在这里插入图片描述 使用PS中的快速选择工具,选中不需要的部分(或者选中我们需要的部分,然后点反向选择)点击删除,储存为PNG格式,缩略图如下所示,可以看到背景色已经被P掉了。 在这里插入图片描述

2 主程序

这个程序主要用到了wordcloud库中的WordCloud包和ImageColorGenerator包。 经过查阅资料,WordCloud中所有参数与意义如下:

font_path : string //字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (default=400) //输出的画布宽度,默认为400像素 height : int (default=200) //输出的画布高度,默认为200像素 prefer_horizontal : float (default=0.90) //词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 ) mask : nd-array or None (default=None) //如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。 scale : float (default=1) //按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。 min_font_size : int (default=4) //显示的最小的字体大小 font_step : int (default=1) //字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差。 max_words : number (default=200) //要显示的词的最大个数 stopwords : set of strings or None //设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS background_color : color value (default=”black”) //背景颜色,如background_color='white',背景颜色为白色。 max_font_size : int or None (default=None) //显示的最大的字体大小 mode : string (default=”RGB”) //当参数为“RGBA”并且background_color不为空时,背景为透明。 relative_scaling : float (default=.5) //词频和字体大小的关联性 color_func : callable, default=None //生成新颜色的函数,如果为空,则使用 self.color_func regexp : string or None (optional) //使用正则表达式分隔输入的文本 collocations : bool, default=True //是否包括两个词的搭配 colormap : string or matplotlib colormap, default=”viridis” //给每个单词随机分配颜色,若指定color_func,则忽略该方法。 fit_words(frequencies) //根据词频生成词云 generate(text) //根据文本生成词云 generate_from_frequencies(frequencies[, ...]) //根据词频生成词云 generate_from_text(text) //根据文本生成词云 process_text(text) //将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies) ) recolor([random_state, color_func, colormap]) //对现有输出重新着色。重新上色会比重新生成整个词云快很多。 to_array() //转化为 numpy array to_file(filename) //输出到文件

我的程序片段如下:

txt = open("元气森林.txt",'r',encoding="UTF-8").read() image = numpy.array(Image.open('饮料瓶.png'))

元气森林.txt和饮料瓶.png就是在准备部分中说的文档和图片。 然后我的wordcloud和生成图片的代码如下

wc = WordCloud( background_color="white", font_path="C:/Windows/Fonts/STKAITI.TTF", max_font_size=60, max_words=3000, mask = image ).generate(txt) plt.figure(figsize=(10,10)) image_color = ImageColorGenerator(image) plt.imshow(wc.recolor(color_func=image_color)) plt.axis('off') plt.show() wc.to_file("元气森林.jpg")

最终得到的结果如下,词云制作成功。 在这里插入图片描述

3 分析与改进

改进1:stopwords的加入 这是非常重要的一步。 如果仔细观看上面的词云图不难发现,其中有很多奇怪的词,比如天猫商城引导客户评价的关键词“口感味道”,“包装品质”等词,因为几乎每个评价都有,所以它的占比很重,字很大,但这是我们不需要的。除此以外,还有空评价“此用户没有填写评论”,hellip省略号等,我们需要将他们去除,就需要用到Stopwords。 经过分析,我的stopwords代码段如下:

stopwords = ['此用户没有填写评论','hellip','包装品质','配件问题','外观品相','口感味道','溶解难易']

此步改进后结果如下,比改进前有效得多: 在这里插入图片描述

改进2:重定向颜色

这一步有需要的话可以加上,可以将字体的颜色改为和我们选择的背景图片一样,代码如下

plt.imshow(wc.recolor(color_func=image_color))

修改后生成的图片如下,颜色和我们选择的背景图片颜色一致 在这里插入图片描述

4 可能出现的报错及解决方案

在import包时,可能会报错 在这里插入图片描述 此时首先新建找到安装路径,代码如下

import sys print(sys.executable)

这是我的输出 在这里插入图片描述 复制粘贴到cmd中,删去“.exe”,在后面加上-m pip install wordcloud运行即可

参考资料: 【1】https://blog.csdn.net/u010309756/article/details/67637930 【2】https://www.cnblogs.com/0422hao/p/11703700.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有