用NLP技术分析了一位出名却也具有争议的嘻哈歌手——Drake创作的歌词

电子说

1.2w人已加入

描述

【导读】如何评定一首歌的歌词的创造性?有些歌词是否真的套词或假借他人之手?本文作者就尝试用 NLP 技术分析了一位出名却也具有争议的嘻哈歌手 —— Drake 创作的歌词,来看看他的歌词中到底蕴藏着什么秘密。

背景

每隔几年就会有一位艺术家风靡世界。甲壳虫乐队和迈克尔杰克逊的盛名不必多说。 这些艺术家用他们天才般的创造力感染着数百万人。现在,许多艺人争相想成为  Top 1。有些出乎意料的是,一位多伦多本地,艺名叫“Drake”的艺人,近年来声势颇盛。

Drake最初声名鹊起的原因他参演了一部在21世纪初流行的青少年情景喜剧《德格拉西:下一代》中的角色。然而,当 Drake 想成为一名说唱歌手时,他便退出了演出。在与唱片公司签约后,Drake 发行了他的第一张专辑《So Far Gone》。这张专辑获得了 Platinum 认证,并让Drake迅速登顶了嘻哈世界的顶峰。在接下来的八年里,他又连续出了多张专辑,其中专辑Scorpion 是他最近发行的新专辑。

为什么 Drake 的作品很受欢迎?这里面可能包含很多原因。然而,我选择从他歌曲的歌词方分析入手。获取 Drake 歌曲的歌词文本数据并不困难,难的是,如何分析它们?这就要感谢如今日益提升的 NLP(自然语言处理)技术,使分析文本数据比以往容易很多。

今天,神经网络已经成为无数 NLP 算法的通用框架,有各种各样的工具可供使用,因此开发者可以使用它们解决大量的 NLP 问题。这些工具让我可以分析 Drake 的歌词。

在进入实际分析之前,我需要先处理一下 Drake 的歌词。虽然有几个在线的歌词资源可用,但我决定使用 Genius.com。Genius 是一个注释歌词的网站,并且有一个很棒并易于使用的API。

Drake 的哪一首歌有最独特的歌词?

大家似乎对 Drake 的创造力并不买账,经常批评他缺乏创造力。过去,他常被指控窃取其他说唱歌手的 flow 并且拥有幕后的作词者。我打算去看看这些评论是否合理。

我从其他文章中提到的处理方法获得灵感。不分析歌词的总字数,在我看来一首歌的歌词总字数并不能作为衡量创造性的主参考,我改为分析歌词中的独特词。

在完成清理文本数据后,我开始分析每首歌曲中独特歌词的数量。下面是 Drake 所有歌曲中独特歌词分布的直方图。似乎他的大多数歌曲都有 100 到 200 个独特词。但是没有其他艺术家歌曲的分布作参考,这个直方图目前并不能说明 Drake 的创造力。

一个更好的方法是根据专辑的独特词来看他的创造力。下图是在 Tableau 中完成的可视化结果。x 轴表示专辑的名称,y轴表示独特词的数量。每个Bubble(气泡)代表一首歌。就独特的歌词而言,似乎没有任何一张专辑显得更具创意。但是,每件作品在独特歌词数量方面至少有一个异常值。令人吃惊的是,尽管有如此庞大的作品数量(25首歌曲),他最近发行的专辑 Scorpion 上的歌曲在独特歌词的数量上几乎没有变化。

现在,再回答上面的问题,哪首歌具有最独特的歌词?答案似乎是 6PM in New York。 下表列出了排名前十的歌曲。

命名实体识别(NER)

命名实体识别属于“信息提取”的子任务,旨在将文本中的命名实体定位和分类为预定义的类别,例如人员,组织,地点,时间表,数量,货币价值,百分比等等。”(维基百科)。 NER是一项特别棘手的任务。由于语言的复杂性,使得创建一个对所有文本都准确的 NER 算法非常困难。某个算法或许可以在一个语料库(在我们的例子中就是 Drake 歌词的集合)上效果很好,但是在另一个语料库上表现就不好。这种不一致性使得有必要多尝试几种 NER 算法。我也尝试了集中不同的算法,发现有些算法并不是非常不准确。下面简要介绍一下我使用的两个 NER 算法:NLTK 和 CRF-NER。

第一个是 NLTK 提供的命名实体算法。“Ne_chunk”使用了部分语音标签(POS标签)的单词列表来推断哪些单词是命名实体。从下面的结果中可以看出,NLTK的算法本身并没有做得很好。

我尝试的第二个命名实体算法是由斯坦福提出的令人印象深刻的 NER 工具 —— CRF-NER。

与NLTK算法相比,它需要更长的运行时间,但会产生更准确的结果。虽然它并不完美,但有明显的进步。

主题建模

NLP中最有趣的方向之一就是主题建模了。主题模型是一种统计模型,用于发现在文档集合中的抽象主题。它是一种常用的文本挖掘工具,用于在文本中发现隐藏的语义结构”。主题建模有几种突出的算法。其中最突出的是显式语义分析和非负矩阵分解。在这次的分析中我选择用线性判别分析(LDA)。LDA是由 Andrew Ng,Michael I. Jordan和David Blei 开发的一种生成统计模型。首先通过学习给定语料库中固定数量的主题表示,然后在给定的主题数量的情况下,LDA将学习语料库中每个文档的主题分布。

▌1.给所有Drake的歌词进行主题建模

想要使用 LDA 的第一件事就是学习 Drake 所有歌曲中最突出的主题。为了实现这一点,我先将所有歌曲放入列表中。然后,使用 SciKitLearn 的 CountVectorizer 工具,创建了所有这些歌曲的词袋表示。词袋模型是一种通过矩阵表示单词的简单方法。 然后,使用SciKitLearn 版本的LDA,我训练了一个可以在给定文本中找到8个主题的模型。

▌2.可视化主题

有两种将 LDA 模型进行可视化的方法。第一个是通过写一个函数,输出为每个主题中最突出的单词。这个结果似乎很有意思,但它只能提供了少量的信息。例如下图中的结果,能知道主题7与主题2不同,但无法得知更多它们之间不同程度的信息。

出于这个原因,我用了另一种可以在文本中显示主题的方法。

在Python中,有一个很棒的库叫做 pyLDAvis。它是一个专门使用 D3 来实现 LDA 模型可视化的库。D3可以说是目前最好的可视化工具。(但是,它主要为 Javascript 用户准备的。因此拥有此插件但对JavaScript 不太了解的人非常有用。)这个库通过降维来实现可视化。 降维将有许多变量的数据集压缩为较少量的特征。降维技术对于数据可视化非常有用。基于我要解决的问题,我认为最好使用T-SNE(T分布的随机邻域嵌入)来降低维数。

从我训练好的模型来看,Drake的大部分歌词都可以分类到了 Topic 2,一个占据图表大部分的大型主题。

▌Drake 所有主要专辑的主题又是什么样的呢?

我按照与之前相同的步骤来尝试处理这个问题,这次我没有用 LDA 算法去找每个专辑间的主题。 而是使用了定义函数的方法来显示他所有主要作品中最突出的单词。

总结

每当 Drake 发布新歌或专辑时,肯定会有不满的声音。但他的作品几乎总是在人气榜上排名靠前的位置。他的歌词瞬间也成为 Instagram 和 Facebook 话题的主要内容,还会霸占数星期。他的歌让人很容易记住,大部分原因要归功于他的歌词。

通过主题建模和命名实体识别完成了一个简单的 NLP 项目,也对文本内容(Drake的歌词)有了不同且更具体的理解。这只是一个起点,也建议大家在工作和生活中进行一些实践,不断尝试,积累技能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分