[关闭]
@sambodhi 2018-08-07T22:05:38.000000Z 字数 4077 阅读 2066

追星的新姿势:使用NLP来分析巨星专辑的特别之处

作者 | Brandon Punturo
译者 | Sambodhi
编辑 | Vincert

AI前线导读: 这个世界上,追星的人万万千。有的粉丝,热衷扒明星的各种八卦;有的粉丝,不为别的,对某位明星就是没理由的喜欢(比如小编很久以前就无来由地喜欢酒井法子,没有原因(#^.^#))……但你有没有想过有国外这么一个很牛掰的粉丝,居然用上了人工智能的NLP技术,去分析他崇拜的巨星呢?让我们快来看看这位粉丝到底干了什么样的举动,真是惊为天人啊!

前言

每隔几年,就会有一位巨星风靡全世界。纵观历史,披头士乐队、Michael Jackson等巨星就曾经这样风靡了全世界。这些巨星用他们的作品,影响了上百万人。当时光车轮驶入21世纪第二个十年之后,许多艺人做梦都想成为世界第一的巨星。然而出乎意料的是,一位名叫Aubrey Graham的多伦多人,以“Drake”为艺名,站在了世界舞台的巅峰。

Drake最初成名的原因,是21世纪初他在青少年情景喜剧《Degrassi: the Next Generation》中扮演的角色。但Drake想成为一名说唱歌手,于是离开了剧组。Lil Wayne,当时最有影响力的说唱歌手之一,在多伦多有很多粉丝。在与Lil Wayne的唱片公司Young Money Entertainment签约后,Drake发行了他的第一张专辑《So Far Gone》。这张专辑被认证为白金专辑,Drake得以迅速上升到嘻哈世界的巅峰。在随后的八年里,他又发行了四张专辑、一盘录音带和一张播放列表。他最新的专辑叫《Scorpion》。

我们知道Drake的作品很受欢迎,但是,他为什么会如此广受欢迎呢?是音乐本身,还是因为市场营销让他如此受欢迎?我觉得也有可能是因为多种因素同时起了作用。因此,我要看看他的歌词,试图分析究竟是什么原因让Drake如此广受欢迎。Drake涉猎的范围很广泛,而且都留下了很好的歌词文本,因此,获取文本数据并不是一件很困难的任务。但是如何去分析这些数据呢?得益于NLP技术的发展,分析文本数据比以往要容易多了。

根据维基百科说法,自然语言处理(Natural Language Processing,NLP)“是计算机科学和人工智能的一个领域,涉及计算基金和人类(自然)语言之间的相互作用,特别是如何对计算机进行编程,以处理和分析大量的自然语言数据。”在我看来,NLP是机器学习中最有趣的领域。以许多不同形式产生的文本,为我们提供了大量的数据用于研究。

在过去的5~10年历,NLP得到了快速的发展,直接与深度学习的兴起相吻合。神经网络已经成为无数NLP算法的通用框架。今天,有各种各样的工具可供使用,因此,从业者得以解决大量的NLP问题。有了这些工具,我就可以检查Drake的歌词了!

收集歌词:

在开始真正的分析之前,我必须了解Drake的歌词。虽然网上有一些在线歌词资源,但我最终还是决定使用Genius.com,因为Genius是一家注释歌词的网站,做得非常棒!而且Genius还有一个出色的API,非常容易使用。

Drake哪首歌最有特色?

Drake经常被批评的原因之一是缺乏创造力。以前,他就曾被指控抄袭了其他说唱歌手的作品,还让他人代为作词。因此,我打算去看看这些批评者的指控是否有根据。

这篇文章《THE LARGEST VOCABULARY》(https://pudding.cool/2017/02/vocabulary/)揭示了避免歌词雷同的想法,对说唱音乐中常用的词汇进行了可视化处理。依我看,用歌词出现频率来衡量创造力是一种较低的标准,因为你要考虑到重复的歌词。

完成文本数据的清理之后,我开始分析每首歌曲中独特词的数量。如下图所示,是Drake所有歌曲中独特歌词分布的直方图。他的大部分歌曲似乎都有100~200个独特的词。由于我没有分析其他歌手歌词的情况,无从参考,因此这张直方图并没告诉我多少关于Drake创造力的内容。

要发现Drake的创造力的更好方法是,通过专辑来搞清楚他的创造力。下图是我用Tableau中创建的。x轴是作品的名称,y轴是独特词的数量。每个泡泡代表一首歌。我发现,就独特的歌词而言,没有一张专辑看起来更有创意。然而,似乎每一部作品都至少有一些独特词(不包括《Scorpion》)。他最近发行的专辑《Scorpion》上的歌曲数量很多(总共25首),但独特词上几乎没有什么变化。

现在,回答这个问题,哪首歌的歌词最独特?答案似乎是《6PM in New York》。前10名的其余部分在下面,如下图所示。

命名实体识别

命名实体识别(Named Entity Recognition ,NER)是“一项信息提取的子任务,它试图将文本中命名的实体定位和分类为预定义的类别,如人名、组织、地点、时间、数量、货币价值、百分比等”。NER是一项特别棘手的任务。英语的复杂性使得很难创建一个对所有文本源都准确的NER算法。算法可能在一个文本语料库(在我们的例子中是Drake歌曲集)上表现得很好,然后在另一个语料库上表现得很差。这种不一致使得有必要尝试几种NER算法。正如你将看到的,算法也不是非常不准确。

我实现的第一个是NLTK提供的命名实体算法。“Ne_chunk”使用带有词性标记(Part Of Speech tags,POS tagging)的单词列表来推断那些单词是实名实体。从我发现的结果中,你可以看出,NLTK算法本身并不能很好地完成工作。

我尝试的第二种命名实体算法是Stanford发明的。可以说,Stanford的计算语言学系在世界上是最负盛名的。该系开发出来的众多令人印象深刻的工具之一,就是NER工具。

与NLTK的算法相比,该工具的运行时间要长得多,但它也能产生更准确的结果。虽然它并不算完美,但却是一个巨大的进步。

主题建模:

NLP中最有趣的学科之一是主题建模。主题模型是一种统计模型,用于在文档集中抽取“主题”。主题建模是一种常用的文本挖掘工具,用于在文本主题中发现隐藏的语义结构。主题建模有几种算法,其中最突出的是显式语义分析(Explicit Semantic Analysis)和非负矩阵分解(Non-Negative Matrix Factorization)。然而我选择在本文用的是隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)。LDA是由Andrew Ng、Michael I·Jordan和David Blei开发的生成统计模型。LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。

对所有Drake歌词进行主题建模

我想使用LDA做的的第一件事就是学习Drake所有歌曲中最突出的主题。为了做到这一点,我把所有的歌都列在了一个列表里。然后,利用SciKitLearn的CountVectorizer,我创建了一个词袋(Bag Of Words)表示所有这些歌曲。词袋是通过矩阵表示(matrix representation)来表示单词的一种简单方法。然后使用SciKit学习LDA版本,我建立了一个模型,在给定的文本中,找到8个主题。

可视化的话题

我发现有两条可行的路径来可视化LDA模型。第一个是通过我写的一个函数。基本上,它输出的是每个主题中最突出的词。

这里的结果很有趣,尽管得到的信息很有限。从下图中可知,主题7与主题2不同,到底怎么个不同法,结果没有提供足够的信息。

LDA主题

辅助主题(auxiliary topics)没有提供足够的信息来区分不同的主题。出于这个原因,我用另一种方式在文本中显示主题。

在Python中,有一个很棒的库叫做pyLDAvis。它是一个专门的库,使用D3来帮助可视化LDA模型创建的主题。D3可以说是最好的可视化工具。但是,它是针对Javascript用户的。对JavaScript不是特别熟练的人来说,这个插件也非常有用。为了使数据可视化,库使用降维方法。维数减缩(Dimensionality Reduction)将一个包含许多变量的数据集压缩成更小的特征量。维数减缩技术对于可视化数据非常有用,因为它可以将数据压缩为两个特征。对于我的特定的可视化,我认为,最好使用T-SNE(t分布的随机邻居嵌入)来进行维数减缩。

可视化主题

从我的模型的拟合来看,Drake的大部分歌词,都可以归类为一个占据图表大部分的主题。相比之下,其他的主题都不足挂齿。

Drake所有主要作品的主题是什么?

为了搞清楚这一问题,我按照与以前相同的步骤进行(除了为找到每个专辑的主题而运行LDA算法外)。然后我使用了之前定义的函数,显示他所有主要作品中最突出的词,如下图所示:

Drake所有主要作品中最突出的词

结论:

Drake可以说是世界上最受欢迎的艺术家。当他决定引退时,将会成为有史以来成就最高的说唱歌手之一。因此,每当他发布新歌或专辑时,肯定会引起轰动效应。由于这些原因,他的歌词在短短几周内就迅速成为Instagram和Facebook字母的主要内容。他的歌之所以令人难以忘怀,主要因素是因为歌词。

就我的第一个NLP项目而言,我认为这是一个成功的项目。我觉得通过这些工作,我对Drake的歌词有了更具体的理解。虽然在未来的工作中,我可以使用其他一些NLP任务,但主题建模和命名实体识别是一个很好的起点。

原文链接: Drake — Using Natural Language Processing to understand his lyrics
https://towardsdatascience.com/drake-using-natural-language-processing-to-understand-his-lyrics-49e54ace3662

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注