前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 词云分析周杰伦新歌《说好不哭》

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

作者头像
苏生不惑
发布2019-10-30 15:03:38
7220
发布2019-10-30 15:03:38
举报
文章被收录于专栏:苏生不惑

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

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

还做了个杰伦的个人PPT https://sushengbuhuo.gitee.io/blog/jay/#/start,文末点击阅读原文查看,在pc上使用空格或者方向键来查看PPT。

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

词云

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

歌词

先看看这首歌的歌词,在QQ 音乐上可以找到https://y.qq.com/n/yqq/song/001qvvgF38HVc4.html

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

wordcloud

wordcloud 是Python的一个扩展包,直接使用pip install wordcloud来安装。https://github.com/amueller/word_cloud

代码语言:javascript
复制
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图片效果:

改变下尺寸效果

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

代码语言:javascript
复制
s = SnowNLP(mytext)
# for sentence in s.sentences:
# 	print(sentence)
# 	sentc = SnowNLP(sentence)
# 	print(sentc.sentiments)
>>> s.sentiments
0.9875230187654408

>>> s.summary(limit=10)

关键词如下:

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

然后加个白色背景

代码语言:javascript
复制
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)

效果图

wordcloud_cli

如果你不想写代码 ,可以直接用命令行工具wordcloud_cli , https://amueller.github.io/word_cloud/cli.html 可以看看命令行参数

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

下面再以周杰伦于2003年发行的专辑《叶惠美》为例,共收录了11首歌曲

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

效果图:

这张专辑的主要关键词

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

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

wordart

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

然后上传中文字体,否则乱码,效果如图:

国内也有对应的 http://cloud.niucodata.com/,将歌词复制进去,点击下方的导出图片,效果如下

公众号词云

这是新榜针对公众号文章的词云分析工具,可以免费使用https://data.newrank.cn/wordCloud.html ,比如我的公众号文章词云图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 苏生不惑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 词云
  • 歌词
  • wordcloud
  • wordcloud_cli
  • wordart
  • 公众号词云
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档