我分析了赵雷的所有歌词,确定自己是个伪雷粉

看着标题有些眼熟?是的,这是一篇模仿。

前段时间有篇文章分析了国内民谣歌手们的歌词,传得很火。昨天刷qq空间又看到一篇分析周杰伦歌词的文章,比第一篇粗糙了很多,但是阅读量和转载量都非常惊人。我觉得非常有意思,在知乎大致搜了下,技术实现貌似也不难。于是说干就干,鼓捣了一个下午+半个晚上,也算是做出了一些东西。

 

一、歌词文件准备

我分析的歌手是赵雷,他的歌我从2016听到了2017。赵雷上了《歌手》之后,名气可以说是家喻户晓,关于他我就不再介绍什么了。

本想写个爬虫去把他的歌词抓下来,于是我就去找网站,找呀找呀结果……我竟然找到了一个网站,有赵雷歌词的汇总:

幸福来得有点突然,我点进去一看……这里收录了雷子2015年4月之前发表的所有歌曲,之后的《再也不会去丽江》和专辑《无法长大》还没更新进去。不过还好,后面的也就11首歌,百度一下,手动添加也就三五分钟的事情。

大概11000+的字数,跟杰伦6.5w+的歌词确实没法比。不过我雷半路出家,首首都是原创,一路走来确实不容易。况且他真正出名其实也就两个月前的事儿,作品数目少也算正常。反正,好听就够了,有1w我就分析1w……

二、分词与词频统计

这是本文唯一的技术难点。难,是因为之前从没接触过自然语言处理,挺神秘的,觉得有点厉害(而印象中厉害的东西往往都不简单,都没那么好学)。好在这里我们只需要了解一个叫做jieba的中文分词库,百度一下就能发现好几篇博客都在讲它。而且这些作者还贡献了他们的源码,我们只需要稍微修改几个参数就可以用了。我在文末贴出的分词代码和生成词云的代码都是这么来的。

废话不多说,通过python的分词和词频统计后,我得到了如下的excel文件:

总共2035个词。同时,利用python生成一个词云:

从生成的词云我们大概可以知道,雷子写歌比较喜欢用什么样的词语。

三、过滤单词

从excel表中可以看到,很多高频词都是单个的字,比如‘的’、‘我’、‘了’等。这些词在日常交流或写作中都很常用,我估计很难从中看出什么,所以我再用python过滤掉了这些词。

最终得到如下的excel文件:

截图显示的是词频大于15的28个词,不难看出,与生成的词云是差不多的。

喜欢雷子的朋友应该知道,这么多年来雷子一个人生活在他北京的小屋,没有车没有房也没有姑娘,只有理想和月亮,还有音乐相伴。雷子曾趁着青春的时光,离开北京去了南方。那几年,他遇见了南方的姑娘,认识了西藏的姐姐,还有阿刁。只是现在他们很少见面,可他还是会偶尔给姐姐写信,报告自己如不如意。他不会和那些人争论和比较,他安静地做着自己的音乐,他觉得这里的一切都好。雷子如今三十了,青春不再却无法长大,他还是会唱理想,还是喜欢白色的衬衫,还是痞痞的那副模样。挺帅的,雷子。

#以上纯属瞎扯,如有雷同,算你抄我#

四、简单的分析

有多简单,看看就知道了。

(1)赵雷最喜欢写的几个“意象”

古诗词里的意象,高中赏析了不少。我记得那时候我们语文老师老说:“先抓意象词,抓住了这个画面就出来了”。民谣听多了,差不多也能举出几个民谣歌手常用的“意象”名词。赵雷有一套自己的“意象”词语,比较常用的如:北京、小屋、衣裳、姑娘、南方、月亮、时间等。

(2)赵雷喜欢哪座城市

北京当然不用多说,毕竟这是他的家乡。雷子在南方待了这么多年,歌词中出现最多的是丽江和成都。雷子对这两座城市应该是有些特别的感情的,他给丽江写过《再也不会去丽江》,给成都写过《成都》。

(3)赵雷喜欢哪个季节

至少从歌词来看,有关冬天的词语出现的最多。这是我没猜到的,雷子给我一种很阳光的感觉,我以为他会写春天或者夏天多一些。又或许,在冬天发生了不少令他不开心的事,所以他写的冬天比较多一点?

(4)赵雷喜欢什么颜色

黄色这个词频基本来源于“黄昏”,可以说雷子可能喜欢看黄昏。白色,这个最好理解了,雷子喜欢忧郁的白衬衫嘛,我们都知道的。

(5)赵雷的家

雷子在不同的歌中都写到了家(家乡11、回家6、家庭1、家人1、我家1、奶奶家1、一家1、家中1),虽然他20出头就离开家乡去了西藏,但从他的歌里我们还是可以感觉到他对家的思念,对妈妈的思念。雷子写到的亲人里,妈妈是最多的(妈妈,母亲,吉姆)。《吉姆餐厅》就是他在母亲去世后写的,这是我非常喜欢的一首歌。赵雷的爸爸还健在,他喜欢赵雷上电视,所以雷子上了《歌手》,现在雷子演出几乎都带着他。赵雷写的姐姐并非亲姐姐,却跟亲姐姐一般,这是我从大冰的书里知道的。

玛丽是姐姐的女儿,赵雷开始喜欢小孩了,用他自己的话说,毕竟三十也是当父亲的年纪了。

 

听了雷子一年半,我以为他的歌我都听的差不多了,这次找歌词,又发现了《咬春》、《Over》等几首歌,还不错。期待他的下一张专辑~

完。。。。。

 

最后,说下技术实现,其实真的很简单。

首先,工具和原料:

1)python,能看懂简单的代码,知道文件怎么读写,就够了。我用的python3.6(spyder)。

2)Excel,会查找会筛选,会做条形图(不会?百度总会吧)。

3)一点点的耐心,这是最重要的。毕竟把人家的代码变成我们的,这需要点时间去折腾。

然后,就是分词处理和词云生成的代码了,我直接贴出我的源码:

[cce]
#分词
from collections import Counter
import jieba.analyse
import xlwt #要写入excel文件

fpath = r'C:\Users\Administrator\Desktop\leizi.txt'

with open(fpath,'r') as fr:
        data = jieba.cut(fr.read())
data = dict(Counter(data))

w = xlwt.Workbook(encoding = 'utf-8')
sheet = w.add_sheet('baba', cell_overwrite_ok = False)#这个参数表示不可以覆盖单元格
i = 0
for k,v in data.items():
    if k in '《|》|,|:|,|:|。|~| ':
        continue
    else:
        sheet.write(i,0,k) 
        sheet.write(i,1,v)
        i = i+1
        
w.save('C:\\Users\\Administrator\\Desktop\\LZ_lyrics.xls')    
[/cce]

 

词云我另外写了,其实没必要。

[cce]
#生成词云
import matplotlib.pyplot as plt
from scipy.misc import imread
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
#from collections import Counter
import jieba.analyse
bill_path = r'C:\Users\Administrator\Desktop\leizi.txt'
#import time
with open(bill_path,'r') as fr:
        data = jieba.cut(fr.read())
        segs = ",".join(data)#分词内容

backgroud_Image = imread(r'C:\Users\Administrator\Desktop\bird2.jpg')
wc = WordCloud( background_color = 'white',    # 设置背景颜色
                mask = backgroud_Image,        # 设置背景图片
                max_words = 200,            # 设置最大现实的字数
                stopwords = STOPWORDS,        # 设置停用词
                font_path = 'C:/Users/Windows/fonts/msyh.ttf',# 设置字体格式,如不设置显示不了中文
                max_font_size = 50,            # 设置字体最大值
                random_state = 30,            # 设置有多少种随机生成状态,即有多少种配色方案
                )
wc.generate(segs)
image_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.savefig('C:\\Users\\Administrator\\Desktop\\bird_result.jpg', dpi = 600)#存成文件
plt.show()
[/cce]

 

4 Replies to “我分析了赵雷的所有歌词,确定自己是个伪雷粉”

    • 拉戈

      谢谢留言~
      回头一看,也算是一路跌跌撞撞走到现在了,如果有感兴趣的文章/观点,欢迎跟我微信交流~

Comments are closed.