当python词云遇到网易云民谣

前言

词云,就是用文字词语来生成各种有趣的可视化图片。在python中使用wordcloud模块来实现词云。

采集数据

构建词云首先需要文本数据,很多时候我们都是将分好的词语,或者大段落的文本存放到本地文件中,然后在程序中完成分词,最后用来构建词云。

作为一个资深网抑云患者,数据这一块,我打算用网易云民谣的评论作为文本输入。其中就有我比较喜欢的这首《玫瑰》。

这首歌一共接近8W条评论,我们就用爬虫技术来对部分评论做数据爬取。爬虫这一块代码我知道大家不爱看,所以直接将爬取结果放出来。

上面是一条条原始未处理的评论,后面我们会完成分词、无效词语剔除等操作。

分词

分词使用的是jieba模块,对每条评论内容进行分词。在将评论内容分割为一个个词语的同时,像一些人称代词、数字以及“的、地”词语,需要去掉。最后一些名词、动词、形容词才是我们需要的目标单词。

jieba提供了很多分词的方法,这里我使用的是jieba.posseg完成分词和词性标注,核心代码如下:

  1. getCommnets():爬取网易云评论
  2. forComments():解析爬取的评论json
  3. dest定义了目标词性,例如n表示名词,v表示动词
  4. pesg是jieba.posseg的别名,cut完成分词和词性标注

生成图云

将分词好的数据筛选之后,存放到list中,然后使用空格分割每个单词。

1. 基本图云

然后通过WordCloud构建基本的图云。

WordCloud的参数有很多,我们这里只设置字体、图云背景颜色、图云宽和高。

wordcloud = WordCloud(font_path="simsun.ttc",
                      background_color="white",
                      height=1000,
                      width=800,
                      random_state=42)
wordcloud.generate(txt)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

其中,random_state用来控制每次运行程序,生成的图云都是一样的。这里使用的字体是宋体,txt是处理后的网易云评论的文本。使用matplotlib模块来展示图云。

这样,一张简单的词云就构建完成了,单词的大小根据词语出现的频次进行展示。

2. 以图片为背景

还有一种就是以图片为背景,图云的形状、颜色会根据背景图片生成。

im = Image.open('123.jpeg')
pic = np.array(im)
w, h = im.size
wordcloud = WordCloud(mask=pic, background_color='white', random_state=42, max_words=20000, max_font_size=60, scale=10, height=h, font_path='xknlt.ttf').generate(txt)
image_colors = ImageColorGenerator(pic)
plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation='bilinear')
plt.axis("off")
plt.show()

这个是用作图云背景的图片,字体使用的是小可奶酪体,字体颜色设置为image_colors。

下面是运行程序后生成的图云:

图片使用PS抠图之后再用作背景。在运行程序时,在Image.py中报MemoryError的错误,后来用PS将图像尺寸缩小了一半之后,程序就能正常运行了。

相关推荐

  1. Python爬取平台

    2023-12-15 20:26:01       14 阅读

最近更新

  1. 写一个字符设备的驱动步骤

    2023-12-15 20:26:01       0 阅读
  2. Transformer和Bert的原理是什么

    2023-12-15 20:26:01       0 阅读
  3. 使用tkinter 制作工作流ui

    2023-12-15 20:26:01       1 阅读
  4. postman工具介绍

    2023-12-15 20:26:01       1 阅读
  5. vue-路由自动化

    2023-12-15 20:26:01       1 阅读
  6. el-date-picker 扩展

    2023-12-15 20:26:01       1 阅读
  7. Go语言入门之变量、常量、指针以及数据类型

    2023-12-15 20:26:01       1 阅读
  8. Kotlin 处理livedata数据倒灌

    2023-12-15 20:26:01       1 阅读

热门阅读

  1. 一门研究如何使计算机模拟人类智能的学科

    2023-12-15 20:26:01       39 阅读
  2. 简单计算器

    2023-12-15 20:26:01       39 阅读
  3. Python: 列表元素的增加

    2023-12-15 20:26:01       42 阅读
  4. 整数划分———二分+前缀和

    2023-12-15 20:26:01       37 阅读
  5. JVM调优

    JVM调优

    2023-12-15 20:26:01      36 阅读
  6. 贪心总结(一)贪心问题到底应该怎么做?

    2023-12-15 20:26:01       39 阅读
  7. js流程控制语句

    2023-12-15 20:26:01       35 阅读
  8. 【前端设计模式】之调停者模式(中介者模式)

    2023-12-15 20:26:01       39 阅读