本
文
摘
要
点击上方关注,All in AI中国
作者——Brandon Punturo
每隔几年,就会有一位音乐家用他的魅力席卷整个世界。可能是甲壳虫乐队,可能是迈克尔杰克逊等。这些音乐家凭借着自身的魅力,用他们的作品影响千百万人的成长。如今在我们进入21世纪的第二个十年里,越来越多的音乐家都渴望自己成为引领这个时代潮流的第一名。然而,出人意料的是,一个名叫奥布里·格雷厄姆的多伦多人以"Drake"的艺名登上了榜首。
人们最早熟知Drake是在2000年左右他在青少年情景喜剧"Degrassi: The Next Generation"中扮演的角色。然而,Drake最终离开了节目,因为他想成为一名说唱歌手。Lil Wayne,当时最有影响力的说唱歌手之一,众多多伦多原住民都是他的追随者。在与Lil Wayne的唱片公司"Young Money Entertainment"签约后,Drake发行了他的第一张录音室专辑。它被认证为白金专辑并成功的让Drake快速上升到嘻哈世界的顶端。在接下来的八年里,他又出品了四张录音室专辑,一张录音带和一张播放列表,"Scorpion"是他的最新发行单曲(
https://en. *** .org/wiki/Drake_%28musician%29)。我们知道Drake的作品很受欢迎,但如此受大众欢迎的原因是什么?是音乐本身吗?是市场营销吗?当然也可能是多种因素的结合。然而,在本文中,我将重点关注他的歌词。Drake的业务范围很广,而且有很好的歌词文本记录,因此获取文本数据并不是一项困难的任务。但如何去分析这些数据并不简单。好在由于NLP(自然语言处理)的改进,分析文本数据比以往任何时候都容易的多。
根据 *** 的说法,自然语言处理(NLP)是计算机科学和人工智能的一个领域,涉及计算机与人类(自然)语言之间的相互作用,特别是如何对计算机进行编程,以处理和分析大量的自然语言数据。在我看来,NLP是机器学习中最有趣的领域。以许多不同的形式产生的文本给了我们众多的研究数据。
在过去的5-10年里,NLP得到了迅速的发展,这与深度学习的兴起不谋而合。神经网络已经成为众多NLP算法的通用框架。今天,有各种各样的工具可供使用,以便从业者能够解决过多的NLP问题。而在本文中,这些工具将成为我分析Drake歌词的"利器"。
歌词来源:
在进入实际分析之前,我必须先了解Drake的歌词。虽然有好几个在线歌词资源网站,但我决定使用Genius.com(https://docs.genius.com/)。因为Genius是一个注释歌词的网站,且具有非常好的API,非常容易使用。
第一部分
哪首歌最有特色?
Drake经常被批评的一个原因是他缺乏创造力。在过去,他曾被指控抄袭其他说唱歌手的歌曲,并让他人代写歌词。我打算去看看这些批评者的抱怨是否有根据(
https://uproxx.com/hiphop/drake-biting-style-more-life/)。歌与歌之间避免"撞词"(歌词雷同)的想法来自于这篇文章(
https://pudding.cool/2017/02/vocabulary/),这篇文章对RAP中常用的词汇进行了可视化处理。在我看来,用歌词总数衡量创造力是一种较低的标准,因为你得考虑到重复的歌词。所以我决定从歌词中的罕见词入手。(
https://pudding.cool/2017/05/song-repetition/)。清理完文本数据后,我开始分析每首歌中罕见的歌词数量。下面是Drake所有歌曲中罕见歌词分布的直方图。他的大多数歌曲似乎都有100到200个罕见的词。由于没有参考其他音乐人的歌曲分布图,所以这个直方图没有告诉我多少关于Drake创造力的内容。
一个更好的方法是通过了解专辑来弄清楚他的创造力。为了有更直观的了解,我用Tableau创建下图。x轴表示作品的名称,y轴表示罕见词的数量。每个气泡代表一首歌。我们发现,没有一张专辑看起来是独具创意(就独特的歌词而言)。然而,每一部作品都应用了一些罕见词(不考虑Scorpion)。他最近发行的专辑《Scorpion》中的歌曲虽然曲数众多(共25首),但几乎也没有什么太大的新意。
现在,回答这个问题,哪首歌的歌词最独特(罕见)?答案似乎是下午6点在纽约(6PM in New York)。前10名的其余部分在下面。
第二部分
命名实体识别
命名实体识别是(NER)"信息提取的子任务,旨在将文本中命名实体进行定位并分为预定义的类别,如人名、组织、地点、时间、数量、货币价值、百分比等"(
https://en. *** .org/wiki/Named-entity_recognition)。创建NER是一项特别棘手的任务。英语语言的复杂性使得创建一个对所有文本源都准确的NER算法非常困难。算法可能在一个文本语料库(在我们的例子中是Drake歌曲集)上表现得很好,然后在另一个语料库上表现得很差。这种不一致使得有必要尝试几种NER算法。我实现的第一个是NLTK(
https://www.nltk.org/api/nltk.chunk.html)提供的命名实体算法。"Ne_chunk"使用带有标记词性的单词列表来推断哪些单词被命名为实体(
https://towardsdatascience.com/drake-using-natural-language-processing-to-understand-his-lyrics-49e54ace3662)。正如你从我发现的结果中可以看到的,NLTK算法本身并不能很好地完成工作。我尝试的第二种命名实体算法是斯坦福制作的。斯坦福的计算语言学系在这个领域称的上是独占鳌头。其中他们的"代表作"就有NER工具。
与NLTK的算法相比,该工具的运行时间要长得多,产生的结果也更准确。虽然它还称不上完美,但的确是一个巨大的进步。
第三部分
主题建模:
NLP中最有趣的学科之一是主题建模。主题模型是一种统计模型,用于从众多文档中抽离出文本的"主题"。主题建模是一种常用的文本挖掘工具,用于发现文本体中隐藏的语义结构。其中最突出的是显式语义分析和非负矩阵分解。然而,我选择在本文中使用的是Latent Dirichlet Allocation (LDA)。LDA是由吴恩达、Michael I. Jordan和David Blei开发的生成统计模型(
https://en. *** .org/wiki/Topic_model)。基本上,它的工作原理是采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。对所有Drake的歌词进行主题建模
我想使用LDA的第一件事就是学习Drake所有歌曲中最突出的主题。为了做到这一点,我把所有的歌都列在了一个列表里。然后,利用SciKitLearn的CountVectorizer(
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html),我创建了一个词袋表示这些歌曲。词袋是通过矩阵表示()来阐述单词的一种简单方法。然后,使用SciKit学习LDA版本,我建立了一个模型,目标是在给定的文本中找到8个主题(
https://machinelearningmastery.com/gentle-introduction-bag-words-model/)。可视化主题
我发现有两条可行的途径来可视化LDA模型。第一个是通过我写的函数。基本上,它输出了每个主题中最突出的单词。
即便我的信息有限。但结果依然有趣。从图中可以看出,主题7与主题2不同,但是没有足够的信息来告诉我它们有多不同。
辅助主题(auxiliary topics)提供的信息很难区分出不同的主题。出于这个原因,我用另一种方式在文本中显示主题。
在Python中,有一个很棒的库叫做pyLDAvis(
http://pyldavis.readthedocs.io/en/latest/)。它更加"专业"是因为它使用D3(https://d3js.org/)来帮助LDA模型对主题进行可视化处理。D3可以说是最好的可视化工具,它是针对Javascript用户开发的。但即便不太了解JavaScript,拥有这个插件也非常有用。为了可视化数据,库使用降维方法。维数约简将包含多个变量的数据压缩为较小的特征量。维数约简技术对于可视化数据是非常有用的,因为它可以将数据压缩成两个特征。对于我特定的可视化,我决定最好使用T-SNE(t-分布领域嵌入算法)降维(
https://lvdmaaten.github.io/tsne/)。从我的模型拟合来看,Drake的大部分歌词可以归类为一个占图表大多数的巨大主题。与之相比,其余的话题称的上是"小题大做"。
Drake所有主要专辑的主题是什么?
为了弄清楚,我按前面的步骤进行了处理(除了运行LDA算法来为每个专辑找主题)。然后,我使用我在前面定义的函数来显示他所有主要作品中最突出的单词。
结语
Drake可以说是世界上最受欢迎的音乐家之一。当他决定退休时,他将成为有史以来最有成就的说唱歌手之一。因此,每当他发行一首新歌或专辑时,人们的议论声肯定会"蜂拥而至"。他的作品也几乎总是在受欢迎程度排行榜的顶端结束。不仅如此,他的歌词也会在数周内瞬间成为Instagram和Facebook上的主要内容。他的歌曲之所以令人难忘,歌词称得上居功至伟。
就我的第一个NLP项目而言,我认为这是一个成功的项目。我觉得通过在这里做的工作,我对Drake的歌词有了更具体的理解。虽然当然还有很多其他的NLP任务,但是主题建模和命名实体识别是一个很好的起点。