一起学习Python办公自动化,教你快速学习Python的方法,可以站内私信我。 在海量数据中提取有效的信息,词云不愧是一种有效解决此类问题的方法,它可以突出显示关键词,快速提取有价值的信息。Python制作词云很简单,一般几行代码就可以搞定,主要使用的库有jieba(结巴,一种分割汉语的分词库)和wordcloud库。 1.jieba库jieba 是目前最好的Python中文分词组件,它支持3种分词模式:精确模式、全模式、搜索引擎模式。 jieba.cut()方法接受两个输入参数,第一个参数为需要分词的字符串,第二个参数cut_all用来控制是否采用全模式。返回一个列表。 jieba.lcut()方法接受两个输入参数,第一个参数为需要分词的字符串,第二个参数cut_all用来控制是否采用全模式。返回一个生成器。该方法与jieba.cut()方法返回切割的词是一致的。 jieba.cut_for_search()方法接受一个参数,参数为需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。 从结果上看全模式是将所有词语分割出来,但会分割出我们不需要的词语。如果我们做词云,常使用精确模式。搜索引擎常使用搜索引擎模式,将句子切割成关键词。 通过下段代码演示这3种模式的区别。
代码执行结果如下所示。
2.wordcloud库wordcloud库是优秀的词云展示第三方库,主要功能是用文本词汇和词频以图片展示。直观形象反映词汇在所有文章中的比重,如:人物标签的特性、评论区情绪等等。通过图形可视化的方式,更加直观和艺术的展示文本。 词云生成主要使用了wordcloud 库中的WordCloud类,可以根据文本中词语出现的频率等参数绘制词云,绘制词云的形状、尺寸和颜色均可设定。 以WordCloud类为基础,配置参数、加载文本、输出文件,其语法格式如下。
其中常用参数font_path指字体路径或者字体名称。 width指输出的画布宽度,默认400像素。height指输出的画布高度,默认200像素。 mask参数如果为空,以默认宽和高绘制。如果mask非空,设置的宽高值将被忽略,遮罩形状被具体的mask取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。比如用Pillow读取某张图片,转换成Numpy的array格式,并将其设置为mask(遮罩)。除图片全白的部分将不会被绘制,其余部分会用于绘制词云。 scale指按照比例进行放大画布,默认为1。如设置为1.5,则长和宽都是原来画布的1.5倍。 min_font_size指显示的最小的字体大小,默认为4。max_font_size指显示的最大的字体大小。 max_words指要显示的词的最大个数,默认为200。 stopwords指需要停用的词,如果为空,则使用内置的STOPWORDS停用库。 background_color指背景颜色,默认为黑色(black)。如background_color='white',背景颜色为白色。 mode参数默认为RGB,当参数为RGBA并且background_color不为空时,背景为透明。 color_func指生成新颜色的函数,如果为空,则使用 self.color_func wordcloud库如何将文本转化为词云呢? (1)分隔,以空格分隔单词,如果是中文,使用jieba分词库切割。 (2)统计,单词出现次数并过滤 (3)字体,根据统计配置字号 (4)布局,颜色环境尺寸 接下来我们一起进行代码编写,通过3步来演示词云效果。 (1)准备分词文件和背景图片。 我们在网上找一些关于爱情美好的语句,黏贴到文本文件,命名为7xi.txt。然后找一个好的背景,比如心型图案,要求背景白色或者透明,格式为png。 (2)词云效果。 通过下段代码实现一个词云效果。
代码执行后生成wordcloud.png,文件内容如图所示。 (3)美化效果。 默认词云的颜色以蓝绿冷色调偏多,看起来不是很舒服。我们换个颜色来显示,如下列代码。
代码执行后,文件内容如图所示。 除此之外,还可以显示在Matplotlib的窗口中,只需要增加如下代码即可。 plt.imshow(wcd) plt.axis('off') #关闭坐标轴 plt.show() 请读者自行测试验证。 需要相关文件代码,请站内私信。 |
|