Python 词云分析周杰伦新歌《说好不哭》

周杰伦可贵出新歌 ,最近终于推出了单曲《说好不哭》,而后直接把QQ音乐服务器干崩了,天王的实力可见一斑,QQ音乐还把这个看成 今天过年 html

image.png

看我公众号头像就知道是杰伦粉了 ,高中的时候开始喜欢上了他的歌,一晃都这么多年了,我整理了他全部的歌曲和部分电影/演唱会视频,能够在公众号回复 周杰伦 获取,2个多小时的2004 无与伦比演唱会看了n遍。 git

image.png

还作了个杰伦的我的PPT sushengbuhuo.gitee.io/blog/jay/#/…, 在pc上使用空格或者方向键来查看PPT。 github

image.png
image.png

下面开始用词云来分析杰伦这首歌都写的什么内容。windows

词云

词云,又称文字云,由词汇组成相似云的彩色图形,用于展现大量文本数据,就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,造成“关键词云层”,从而过滤掉大量的文本信息,使浏览者只要一眼扫过文本就能够领略文本的主旨。 浏览器

image.png

歌词

先看看这首歌的歌词,在QQ 音乐上能够找到y.qq.com/n/yqq/song/…服务器

先把歌词保存到文件 no_cry.txt ,而后用Python的wordcloud来分析 。微信

wordcloud

wordcloud 是Python的一个扩展包,直接使用pip install wordcloud来安装。 github.com/amueller/wo…网络

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import jieba,wordcloud
from snownlp import SnowNLP
import jieba.analyse
from collections import Counter

with open('no_cry.txt', 'r',encoding='utf-8') as f:
     data = f.read()
mytext = " ".join(jieba.cut(data))
wordlist = jieba.analyse.extract_tags(mytext, topK=10)   # 分词,取前10
['怎么', '别人', '挽留', '打扰', '放手', '说好', '在乎', '没有', '从不', '拼命']
#c = Counter(mytext)
#c = c.most_common(10)
wordcloud = WordCloud(font_path="c:\windows\fonts\simhei.ttf").generate(mytext)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
wordcloud.to_file('no_cry.jpg')
复制代码

保存到本地的文件 no_cry.jpg图片效果:dom

image.png
改变下尺寸效果
image.png

接着看看这首歌的主要关键词jvm

s = SnowNLP(mytext)
# for sentence in s.sentences:
# 	print(sentence)
# 	sentc = SnowNLP(sentence)
# 	print(sentc.sentiments)
>>> s.sentiments
0.9875230187654408

>>> s.summary(limit=10)  
复制代码

关键词以下:

['我都是听别人说', '不习惯一我的生活', '不习惯一我的生活', '说好不哭让我走', '说好不哭让我走', '都这个
时候 你还在乎着', '都这个时候 你还在乎着', '电话开始躲 从不对我说', '电话开始躲 从不对我说', '挽留的话却没有说']
复制代码

而后加个白色背景

def handle(textfile, stopword):
    with open(textfile, 'r',encoding='utf-8') as f:
       data = f.read()
    wordlist = jieba.analyse.extract_tags(data, topK=100)   # 分词取前100
    wordStr = " ".join(wordlist)
     
    hand = np.array(Image.open('img/no_cry.jpeg'))    
    my_cloudword = WordCloud(
        # wordcloud参数配置
        width=1024,
        height=768,
        background_color = 'white',  
        #mask = hand,                   
        max_words = 100,               
        stopwords = stopword,          
        max_font_size = 100,            
        font_path='c:\windows\fonts\simhei.ttf',   
        random_state=3,   
    )
    my_cloudword.generate(wordStr)           
    my_cloudword.to_file('res.jpg')     
    plt.axis('off')   
    ax = plt.imshow(my_cloudword)   
    fig = ax.figure
    fig.set_size_inches(25,20)                  
    plt.show()   
stopwords = set(STOPWORDS)
handle('no_cry.txt', stopwords)
复制代码

效果图

image.png

wordcloud_cli

若是你不想写代码 ,能够直接用命令行工具wordcloud_cli , amueller.github.io/word_cloud/… 能够看看命令行参数

直接执行 wordcloud_cli --text no_cry.txt --imagefile no_cry.jpg --mask ye.jpg --fontfile c:\windos\fonts\simhei.ttf,生成图片效果

image.png

一首歌可能还看不出效果,下面以周杰伦于2003年发行的专辑《叶惠美》为例,共收录了11首歌曲

image.png

百科地址https://baike.baidu.com/item/%E5%8F%B6%E6%83%A0%E7%BE%8E/893 近600行歌词,保存到文件 jay.txt

image.png
效果图:

image.png

这张专辑的主要关键词

['微笑 东风破 乒乓 弹奏 咱们 骄傲 睫毛 不想 一曲 好难 获得 走过 琵琶 一天 天空 多强 画面 嘴角 到底 一直
 粉嫩 恰恰 二班 回忆 永远 看不见 故事 不到 为何 不用 沉默 外表 请原谅 从前 可不能够 孤独 水蜜桃 没有
双刀 唇膏 怎么 知道 国度 刻着 一点 多汁 离开 渐渐 坠入 小孩 原地打转 仁慈 还要 清秀 自负 亮丽 受伤 没人
能 我试 过握 大到 训导处 荒烟漫草 先对 我戒 那鲁湾 裁判 唐装 本身 依赖 第一名 答案 示好 石板路 专辑 喊
叫 香味 枫叶 一股 舍不得 那年 温柔 放晴 自信 洋溢 雨淋 距离 俯瞰 看不惯 古道 刮风 篱笆 不要 天台 剥落
琴声 纪录片 幽幽 预兆 仍是']

复制代码

若是你不会代码怎么生成词云呢,有许多对应的网站。

wordart

一个在线生成词云的网站 wordart.com/create 将文字导入进去

image.png
上传中文字体,不然乱码,效果如图:
image.png

国内也有对应的 cloud.niucodata.com/,将歌词复制进去,点击…

image.png

公众号词云

这是新榜针对公众号文章的词云分析工具,能够无偿使用https://data.newrank.cn/wordCloud.html ,好比个人公众号文章词云图

image.png

推荐阅读:

如何发一条空白的朋友圈

那些在国内还能使用的谷歌产品

那些你可能不知道的微信奇技淫巧

如何在豆瓣租房小组快速找到满意的房子

公众号苏生不惑原创文章整理

Chrome 浏览器扩展神器油猴

免费星球

公众号:苏生不惑

扫描二维码关注
相关文章
相关标签/搜索