本文转载自公众号《核心阅读》(ID:AI_Discovery)。2019年5月,TonesandI推出第二支单曲《Dance Monkey》,这首歌风靡全球,你一定也随着这首歌的节奏摇摆过!第一次知道这首歌这首歌是在某个班级,朋友一直唱的。起初,我觉得他好像在一遍又一遍地重复着同样的歌词:“为我跳舞,为我跳舞,为我跳舞”。听完原曲后,我发现它确实有一些重复的歌词。然后我听了她的另一首热门歌曲《Never Seen The Rain》,发现了类似的模式。作者决定以这个小项目为基础,在选择歌词的措辞时探索艺术家自己的风格。我将使用基本的python技能来分析Tones和I的两首热门歌曲:《Dance Monkey》和《Never Seen The Rain》,看看它们之间是否有任何相似之处,以及她如何通过重复歌词来创造自己的音乐风格,例如使用拼音词(如“哦”和“啊”)等。1.收集和清理数据我从MetroLyrics获取了这两首歌的歌词并进行了编辑,确保歌词之间没有逗号或多余的空格,并将“You've”更改为“Youhave”以保持一致性。之后,我将它作为字符串上传到JupyterNotebook并为其分配了一个变量(dm&nstr)。#DanceMonkeyLyricsdm="TheysayohmygodIseethewayyoushineTakeyourhandmy...makeyoudoitallagainAllagain"dmdm=dm.lower()#NeverSeenTheRainLyricsnstr="AllyourlifenoYoucould...neverfelttherainrainrain"nstrnstr=nstr.lower()dm.lower()函数更改单词以确保它们都是小写。如果你不这样做,程序会将“你”和“你”区分为不同的词。打印时,结果将如下所示:由于目的之一是找出歌词中总共有多少个单词,因此当所有单词都在一个字符串中时,无法做到这一点。为了将它们分开,我使用了以下代码:split_dm=dm.split('')print(split_dm)我对NeverSeenTheRain的歌词也做了同样的处理。2.分类数据下一步是统计总词数和唯一词数。为了计算单词总数,我在初始变量上使用了LEN()函数:len(split_dm)总共453个单词。然后,为了计算用于创作歌曲的单个单词的数量,我对split_dm变量使用了SET()函数。unique_dm=set(split_dm)print(unique_dm)此函数确保列出至少使用一次的词,因此结果如下所示:为了计算新列表中的词数,我使用了LEN()函数:len(unique_dm)72个独特的词,意味着只有这些词被用于创作这首歌。3.Mostfrequencywords在要使用的词中,我想找出前10个词(重复次数最多的词)和只用过一次的词。下面使用的代码显示了每个单词及其使用次数:word_dm={}forwordinunique_dm:word_dm[word]=0forwordinsplit_dm:word_dm[word]=word_dm[word]+1print(word_dm)为了更容易阅读,我使用以下代码代码将单词和值绑定在一起:dm_count=sorted(word_dm.items(),key=lambdat:t[1],reverse=True)print(dm_count)然后,使用此代码检索前10个最常见的单词:dm_top_10=dm_count[0:10]dm_top_10合并后的数据是这样的:我可以肯定地说,《TonesandI》的独特风格(绝对可以在她的所有歌曲中听到)是“oh”的使用和“ay”,在她的两首歌中都进入了前10名。4.wordsusedonlyonce的图片来源:unsplash使用了类似上面的代码,作者也找到了wordsusedonlyonce:dm_least_used=dm_count[49:72]len(dm_least_used)只有23个wordsusedonlyonce。另一首歌曲使用相同的功能。5.重复单词的数量下一个目标是找到重复超过一次的单词数量:len(unique_dm)-len(dm_least_used)这首歌中重复了49个单词。为了找出重复次数,作者使用了如下代码:len(split_dm)-len(dm_least_used)这49个词被重复了430次!同样,同样的代码在另一首歌中执行。6.可视化作者将两首歌曲的数据合并成一个excel表格,然后在笔记本上阅读。table=pd.read_csv('song_values.csv')比较数据最有效的方法是使用条形图:=go.Figure(data=[go.Bar(name='Totalnumberofwordsinsong',xx=x,y=y1),go.Bar(name='TotalNumberofRepeatedWords',xx=x,y=y5),go.Bar(name='NumberofwordsusedinLyric',xx=x,y=y2),go.Bar(name='Wordsusedonce',xx=x,y=y3),go.Bar(name='Wordsusedmorethanonce',xx=x,y=y4)])#Changethebarmodefig.update_layout(barmode='group',title="ComparisonBetweenTheTwoSongs")fig.show()查看图表,我们可以得出以下结论:不止一次字数比较一致,虽然《舞猴》字数略多。尽管如此,《舞猴》中重复单词的数量还是比《没见过雨》高得多。在构成歌词的词中,只有不到一半的词只用过一次。七、结语在进一步处理数据的过程中,作者发现了一个很有趣的现象,标题中两个词的使用频率很高:“舞”用了19次,而“猴子”在整首歌中只用了19次。用过一次。令人惊讶的是,用于创作歌词的单个词的数量非常少(约15%-20%),约85%的单个词被重新用于创作歌曲。图片来源:unsplash做完这个项目后,差点被DanceMonkey这首歌洗脑了。同理,试着去发掘你喜欢的歌手,说不定能挖掘出他不为人知的创作习惯。
