周杰伦难得出新歌 ,最近终于推出了单曲《说好不哭》,然后直接把QQ音乐服务器干崩了,天王的实力可见一斑,QQ音乐还把这个当作 今天过年
看我公众号头像就知道是杰伦粉了 ,高中的时候开始喜欢上了他的歌,一晃都这么多年了,我整理了他所有的歌曲和部分电影/演唱会视频,可以在公众号回复 周杰伦
获取,2个多小时的2004 无与伦比演唱会看了n遍。
还做了个杰伦的个人PPT https://sushengbuhuo.gitee.io/blog/jay/#/start,文末点击原文查看,在pc上使用空格或者方向键来查看PPT。
下面开始用词云来分析杰伦这首歌都写的什么内容。
词云
词云,又称文字云,由词汇组成类似云的彩色图形,用于展示大量文本数据,就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”,从而过滤掉大量的文本信息,使浏览者只要一眼扫过文本就可以领略文本的主旨。
歌词
先看看这首歌的歌词,在QQ 音乐上可以找到https://y.qq.com/n/yqq/song/001qvvgF38HVc4.html1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37没有了联络 后来的生活
我都是听别人说
说你怎么了 说你怎么过
放不下的人是我
人多的时候 就待在角落
就怕别人问起我
你们怎么了 你低着头
护着我连抱怨都没有
电话开始躲 从不对我说
不习惯一个人生活
离开我以后 要我好好过
怕打扰想自由的我
都这个时候 你还在意着
别人是怎么怎么看我的
拼命解释着
不是我的错 是你要走
眼看着你难过
挽留的话却没有说
你会微笑放手
说好不哭让我走
电话开始躲 从不对我说
不习惯一个人生活
离开我以后 要我好好过
怕打扰想自由的我
都这个时候 你还在意着
别人是怎么怎么看我的
拼命解释着
不是我的错 是你要走
眼看着你难过
挽留的话却没有说
你会微笑放手
说好不哭让我走
你什么都没有
却还为我的梦加油
心疼过了多久
过了多久
还在找理由等我
先把歌词保存到文件 no_cry.txt ,然后用Python的wordcloud来分析 。
wordcloud
wordcloud 是Python的一个扩展包,直接使用pip install wordcloud来安装。
https://github.com/amueller/word_cloud
1 | from PIL import Image |
保存到本地的文件 no_cry.jpg图片效果:
改变下尺寸效果
接着看看这首歌的主要关键词
接着用SnowNLP对每个句子分析,先pip install SnowNLP
安装,sentiments 返回值为正面情绪的概率,越接近1表示正面情绪,越接近0表示负面情绪。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23s = SnowNLP(mytext)
# for sentence in s.sentences:
# print(sentence)
# sentc = SnowNLP(sentence)
# print(sentc.sentiments)
>>> s.sentiments
0.9875230187654408
说明这首歌是偏正面的。
sentimentslist = []
s = SnowNLP(data)
for sentence in s.sentences:
s = SnowNLP(sentence)
sentimentslist.append(s.sentiments)
plt.hist(sentimentslist, bins = np.arange(0, 1, 0.01), facecolor = 'g')
plt.xlabel('Sentiments Probability')
plt.ylabel('Quantity')
plt.title('Analysis of Sentiments')
plt.show()
>>> s.summary(limit=10) 摘要
['我都是听别人说', '不习惯一个人生活', '不习惯一个人生活', '说好不哭让我走', '说好不哭让我走', '都这个
时候 你还在意着', '都这个时候 你还在意着', '电话开始躲 从不对我说', '电话开始躲 从不对我说', '挽留的话却没有说']
>>> s.keywords(limit=10)
['说', '不', '还', '人', '都', '别人', '生活', '却', '走', '一个']
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
,生成图片效果
然后加个白色背景1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30def 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)
# print (wordStr)
#怎么 别人 挽留 打扰 放手 说好 在意 没有 从不 拼命 难过 多久 眼看 生活 微笑 好好 时候 习惯 自由 电话 解释 离开 的话 护着 放不下 加油 以后 问起 人多 角落 心疼 低着头 抱怨 开始 不是 联络 这个 理由 一个 后来 你们 什么
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') # 是否显示x轴、y轴下标
ax = plt.imshow(my_cloudword) # 显示词云图
fig = ax.figure
fig.set_size_inches(25,20) # 可调节图片紧密 尺寸程度
plt.show() # 显示
stopwords = set(STOPWORDS)
handle('jay.txt', stopwords)
效果图
一首歌可能还看不出效果,下面以周杰伦于2003年发行的专辑《叶惠美》为例,共收录了11首歌曲
百科地址https://baike.baidu.com/item/%E5%8F%B6%E6%83%A0%E7%BE%8E/893
近600行歌词,保存到文件 jay.txt
效果图:
前50
前100
这张专辑的主要关键词1
2
3
4
5
6['微笑 东风破 乒乓 弹奏 我们 骄傲 睫毛 不想 一曲 好难 得到 走过 琵琶 一天 天空 多强 画面 嘴角 到底 一直
粉嫩 偏偏 二班 回忆 永远 看不见 故事 不到 为什么 不用 沉默 外表 请原谅 从前 可不可以 孤独 水蜜桃 没有
双刀 唇膏 怎么 知道 国度 刻着 一点 多汁 离开 渐渐 坠入 小孩 原地打转 仁慈 还要 清秀 自负 亮丽 受伤 没人
能 我试 过握 大到 训导处 荒烟漫草 先对 我戒 那鲁湾 裁判 唐装 自己 依赖 第一名 答案 示好 石板路 专辑 喊
叫 香味 枫叶 一股 舍不得 那年 温柔 放晴 自信 洋溢 雨淋 距离 俯瞰 看不惯 古道 刮风 篱笆 不要 天台 剥落
琴声 纪录片 幽幽 预兆 还是']
如果你不会代码怎么生成词云呢,有许多对应的网站。
wordart
一个在线生成词云的网站https://wordart.com/create 将文字导入进去
上传中文字体,否则乱码,效果如图:
国内也有对应的 http://cloud.niucodata.com/,将歌词复制进去。
点击下方的导出图片,效果如下
公众号词云
这是新榜针对公众号文章的词云分析工具,可以免费使用https://data.newrank.cn/wordCloud.html ,比如我的公众号文章词云图
资源
$ pdftotext mydocument.pdf - | wordcloud_cli –imagefile wordcloud.png
http://duososo.com/index.php
自然语言处理库之snowNLPhttps://www.jianshu.com/p/4692d1b5364d
超简单:3分钟制作惊艳的词云图
https://worditout.com/
https://www.weiciyun.com/create.html
https://wordart.com/
js版 https://wordcloud2-js.timdream.org/#love https://github.com/timdream/wordcloud
评论爬虫及情感分析https://www.itcodemonkey.com/article/10706.html
基于SnowNLP的豆瓣评论情感分析https://blog.csdn.net/Eastmount/article/details/85118818
https://bosonnlp.com/dev/resource
在线词云http://ictclas.nlpir.org/nlpir/
情感分析库比较https://www.ctolib.com/article/compares/1874
词云https://github.com/mukund109/word-mesh
将公众号所有文章出现最多的关键词并生成词云图 https://mp.weixin.qq.com/s/HF1f2DNd3u49vUM1b13DAw
https://github.com/isnowfy/snownlp
https://www.zhihu.com/question/24658552
https://zhuanlan.zhihu.com/p/21635987
https://minitagcloud.cn/create.html#/
https://www.jianshu.com/p/4fb27471295f
http://yciyun.com/
http://www.pullword.com/
https://minitagcloud.cn/
http://cloud.niucodata.com/
https://web.geekji.cn/web/minitagcloud.html
10行python代码的词云 http://python.jobbole.com/87496/
https://amueller.github.io/word_cloud/
黑科技 https://magnet.chongbuluo.com/forum-47-1.html
词云https://me.bdp.cn/home.html
http://www.picdata.cn
http://www.tocloud.com
WordArt.com
Tagxedo.com
WordItOut.com
Wordle.net
https://www.bilibili.com/video/av53917673
http://codewithzhangyi.com/2018/09/03/NLP%E7%AC%94%E8%AE%B0-Word-Tokenization-wordcloud/
http://codewithzhangyi.com/2019/03/11/sentiment-analysis/
文本分析朱自清写《匆匆》的情感状态 https://mp.weixin.qq.com/s/dOpKU0i65c5KJaxsiFWoCg
Python 词云分析周杰伦《晴天》https://mp.weixin.qq.com/s?__biz=MzIyMjg2ODExMA==&mid=2247483695&idx=1&sn=a04f03641ce7b73f130d2a3f134824c5&scene=19
词云可视化:四行Python代码轻松上手到精通 https://github.com/TommyZihao/zihaowordcloud
https://1315402725.github.io/python%E6%96%97%E7%BD%97%E5%A4%A7%E9%99%86%E8%AF%8D%E4%BA%91.html
周杰伦《说好不哭》新歌MV隐藏彩蛋 你发现了吗 https://www.onefm.com.my/%E5%91%A8%E6%9D%B0%E4%BC%A6%E3%80%8A%E8%AF%B4%E5%A5%BD%E4%B8%8D%E5%93%AD%E3%80%8B%E6%96%B0%E6%AD%8Cmv%E9%9A%90%E8%97%8F%E5%BD%A9%E8%9B%8B-%E4%BD%A0%E5%8F%91%E7%8E%B0%E4%BA%86%E5%90%97%EF%BC%9F/
推荐阅读:
公众号:苏生不惑