【2018数据新闻训练营】我分析了82首关于南京的歌,告诉你歌手唱的南京是什么样的

-回复 -浏览
楼主 2018-12-05 15:47:59
举报 只看此人 收藏本贴 楼主



前两天看到一个有意思的论调,说赵雷唱的《成都》是近年来城市营销中最出色的一步,其带来的价值超过几百万只青岛大虾。抛开这个论调,赵雷的《成都》确实火到可以作为城市名片。这时候我突然意识到并不是每一个城市都有一首这样朗朗上口,能当做宣传片广告的歌曲,近年来另一个优秀案例是黄渤电影里带火的《去大理》。在我的老家纵然有《西北偏北》,《白银饭店》这样的优秀歌曲,但大部分人第一反应还是宋冬野的一句:“陌生的人请给我一支兰州” 。在南京虽然时时在朋友圈能看到有歌唱南京的歌曲,但并没有这么大火的。那么那些关于南京的歌曲都在唱什么呢?我从网易云音乐上抓取了82首跟南京有关的歌,进行了一系列数据分析。



分析过程大致为:从网易云搜索关于南京的歌单——抓取歌名以及对应ID——爬评论数——爬歌词(共65416字符)——歌词文本分析。(以上具体技术实现放在文章后半部分)


这82首歌列表如下:




01

Q:哪首关于南京的歌最火?


因为网易云音乐并没有开放“歌曲播放量”这个数据,所以根据页面上的评论数作为人气的判断标准。


评论数最多的前十首歌如下:



排名第一的《北京东路的日子》评论数84955,没想到这首歌有这么火,比第二名和第三名的评论加起来还多,这个人气在网易云算很能打的了,百度了以后发现是南外的学生自己创作的一首毕业歌。


第二第三第六都是李志,本来想统计一下哪个歌手唱的南京的歌最多,扫了一眼歌单后我觉得不用专门统计了。不过与其说李志唱的南京的歌最多,不如说“网易云音乐”上关于南京的歌李志唱的最多,需要综合考虑平台的性质。



作为对比参考,《成都》的评论数是369844,比所有南京歌曲加起来多,可见其影响力。



02

Q:歌手在歌唱南京的时候,

表达了什么样的感情?


 

将歌词中的情绪部分抓取出来,分为正面情绪和负面情绪,前三名分别为:心慌,孤独和幸福。


心慌高居首位让我很意外,但仔细想想也是合理的,我每天都要心慌两次,一次是早上从地铁出来心慌地狂奔到荔枝广场极限打卡,一次是晚上躺在床上一边玩手机一边心慌的担心:“天哪只能睡6个小时了熬夜到底会不会导致猝死”。


比较有意思的是快乐和悲伤出现的次数是一样的。可能不同的歌手有的人快乐有的人悲伤,但一起统计时总量达到了完美的守恒。


总体看下来虽然负面情绪数量更多,但我觉得这个锅南京不背,取得的82首歌中民谣占比最多,所以这锅应该甩给民谣。



03

Q:当歌手在歌唱南京的时候,

他们在唱什么东西?



将歌词中的物象提取出来,得到的是歌手歌词里唱到最多的东西。前两名鸭血和馄饨都是南京著名小吃,直截了当的展示了南京吃货属性。另外尽管馄饨有两首专门的主打歌,还是不敌鸭血粉丝惜居第二。


南京的梅雨也是深入人心,我记得上大学第一年,放完暑假回宿舍,我的皮靴上长了蘑菇。。。当时震惊了我的世界观。现在是衣柜常备去湿袋。


“姑娘”一直是歌曲里恒定不变的主题,事实上这里的“姑娘”并不完整,南京话里管姑娘叫“潘西”,分析了一下歌词中“潘西”一共出现过10次,姑娘+潘西结合起来39,可以脚踢鸭血粉丝汤稳居宝座了。


另外有一组有意思的数据比较; 房>爱情>钱。南京现在二手房都开始限购了,想买房子也是买不到房子的,有钱也不可以的。某种角度上来说暗戳戳的反应了现实。(此处为过度解读)


04

Q:哪个地方是歌曲里的

南京地标?


 


秦淮是古已有之的南京地标代名词,新街口是现代南京地标的代名词。前者因为历史加成更受作词人偏爱。


热河路,一条平平无奇的路,因为拥有自己的一首主打歌,地位陡然飙升。“没有人在热河路谈恋爱,总有人在天亮时伤感”,我现在还是不懂为什么说热河路上没有谈恋爱的,明明旁边就是二十九中。


另外还有同人(歌?)不同命的两首歌:《山阴路的夏天》 和《在每一条伤心的应天大街上》,前者是全歌只提到了一遍“山阴路”,后者干脆没有歌词。。。,只能单从标题上给地名带热度了。



其余地点基本就是南京热门旅游景区清单了,让我惊讶的是没有珍珠泉,珍珠泉明明辣么好玩,春天开好多好多花,我每年都去玩。你们这么多歌手竟然一个都没有去的。



05

Q:南京,节奏快还是节奏慢?

离开还是离不开?



我找了两组有趣的反义词。第一组是:快还是慢。


南京的生活是快节奏还是慢节奏?我一直觉得南京身为一个二线城市,肯定是节奏快的,但跟北上广相比又没那么夸张。我来北京第一天正好赶上下班高峰,我是被别人活生生推上地铁的。。。至少在南京我坐地铁没这么夸张,每天上下班还有座位。


在歌手的歌词里,南京也是慢的,我提取了几个原文歌词,大致如下:【我的步履有些慢了】【慢慢地 梧桐树变绿了】【人们慢慢来到城市的另一端】


另一组反义词是 离开&离不开


 


离不开占了六成,离开占了四成。


提取了一些离开的歌词,大致是这样的:【没离开之前你不知道你有多爱它】【我也试过离开但我现在还在这】【我早晚要离开的城市】。

      

离不开的歌词大致是这样的:【这是我的hometown 我离不开】【我的一堆hommies 我离不开】。


对大部分人来说,南京还是一个离不开的城市吧。




【以上是我的不负责任分析,纯为技术练习,请勿当真】




Tech

以下是技术实现部分


前几天的培训谈老师带我们做了中国嘻哈歌词的分析,结束后找了一个选题练手。本来想做个私人歌单分析的,通过解析个人歌单里的歌曲分析我喜欢的歌曲特征,爬过数据后发现个人歌单里一半多歌曲没有歌词,遂作罢,最终定了“南京歌曲”这个主题。




1. 爬歌曲数据


因为网易云上关于南京的有效歌单就3,4个,所以没有专门写一个爬虫,而是直接在页面上查看框架源代码,提取了有歌曲标题和songid的部分,放在本地数据库里做了一个简单的正则解析,获取了119首歌曲信息。



不同歌单之间歌曲会有重复的,所以对119首歌曲进行了ID去重,剩下97首歌曲。



剩下的97首歌里面我大概扫了一眼,发现几首很明显的跟南京主题无关的歌曲。。。比如说最后一列的几首歌,什么《我的女朋友(2016现场哽咽版)》(完全没有哽咽),《南京路上的心碎少女》(全中国每个城市都可能有南京路就南京没有),因为歌单是用户行为,不能算硬性标准,我找的最后一个歌单里面歌曲基本都“很不南京”,就做了手动删除,最后保留了82首歌作为样本。




2. 获取歌曲评论数



解析评论数的时候发现评论数是用API动态传入的,没办法通过解析页面直接获取。我试图直接获取接口地址,结果接口地址是带了PARAM的。



去github上搜了一下,有很多python的解析包,但是并没有能直接获取云音乐上评论数的R包,去知乎搜了一下,发现竟然有人解析出了API里的参数。



我取了一个歌曲ID传入API,返回值得到一个JSON串,里面包括热门评论啊,评论的赞数啊一堆东西,最后有一个叫total的字段,跟页面上的评论数是一致的,就是它了。



之后就是写了个简单的轮询,对每首歌完成了读接口-解析JSON-获取评论数的过程。




3. 获取每首歌歌词 


直接用的谈老师推荐的 json_song 的R包,这个是之前有前辈写好的现成的,写进循环过程即可。


获取歌词的时候发现有两首歌是没有歌词的,《在每一条伤心的应天大街上》《Nanjing 2014》,就从数据框里面去掉了,不参与后续歌词分析。



4. 分词与统计词频


使用segment对歌词进行分词,分词的时候打印结果,发现鸭血粉丝汤被分开了。老实说,把“鸭血”和“粉丝汤”分开我能接受,但把“鸭”和“血”分开就不能忍受了。



之前李老师分享了一个他自己写的segmenCN包,就用这个包试了一下,结果鸭和血还是被分开了。



于是只能向分词器添加关键词了。


 


注意这边有一个很深的坑!!通过之前的培训我以为只要按词性区分“n”(名词),“v”,“a”就可以了,结果分好词开始写文,写到地点的时候发现一个奇怪的事情,就是“新街口”竟然不在我的n词列表里面!这时候又加载原始数据重复上述步骤,在分词这边打印结果,发现“新街口”的词性竟然是ns!


ns是什么鬼啊!不应该只有动词名词形容词吗!百度以后我懵B了,从词性上看,名词就单分了5种。。。



这说明我之前的分析都是有问题的啊啊!之前做的我以为的词性分析都是假的词性分析,是不完整的啊啊啊!当时我前面都已经写好,用echarts画好图了,而且echarts代码没有保存!


瞬间心态崩了。。。

第二天我抚平心态,重新来了一遍。。。。。

这次分词的时候,自己用NS属性向分词器里加了一批地名


 


分词器这边坑还挺多的,下面是我随便截取的分词器的一部分,可以看到很多词性标的莫名其妙的,比如将“夕阳西下”标成了地名,将“乌衣巷”标为了人名。



我觉得现在分词器的主要问题是:没有一个共同维护的公用环境,而是每次使用的时候靠用户个人进行维护,这样就造成单人的工作量很大。如果是一篇专用文章的话分词就要分很久。如果有一个联网的,公用的分词器,大家共同维护,这种情况应该会好很多。


分完词就是根据分词结果进行统计词频-排序-得到自己想要的结果了。




5. 作图


用了R自带的PLOT函数作图,因为非常不熟练,做出来贼丑,不清楚改细节的函数(字体颜色啊,间距啊,标签之类的),最后还是用echarts直接做了。


通过这两天学习,感觉R结合分析函数做一些专业的图是很方便的,但是对于简单数据展示的话还是echarts更好用。


(利用R做的散点图) 


以上分析就结束啦,培训已过半,个人感觉R在数据抓取,数学分析方面很有优势,涉及到文本处理这边就太繁杂了,老觉得“辛辛苦苦写这么多循环,明明一个sql语句就搞定啦”,而且数据结构也很复杂,感觉像回到了大学学线性代数的时候。当然根本原因也是我现在用的不熟练,找函数的时候经常为各种参数配置参头疼。


还有一重限制是爬数据的时候带来的,比如这次应该做一个针对歌曲类型的分析的,但是网易云没开放这样的数据。另外还有一些没办法解析的接口。




本文已获“MQ有你”授权转载,可点击下方“阅读原文”查看原始文章。


来源|MQ有你

作者|张梦倩

编辑|柯皓翔

审核|小可



我要推荐
转发到

友情链接