作者 | Brandon Punturo
译者 | 刘畅
编辑 | Jane
出品 | AI科技大本营
【导读】如何评定一首歌的歌词的创造性?有些歌词是否真的套词或假借他人之手?本文作者就尝试用 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的歌词)有了不同且更具体的理解。这只是一个起点,也建议大家在工作和生活中进行一些实践,不断尝试,积累技能。
原文链接:https://towardsdatascience.com/drake-using-natural-language-processing-to-understand-his-lyrics-49e54ace3662
--【完】--
2018 AI开发者大会(AI NEXTCon)将于11月8日盛大开幕!
商汤科技副总裁、工程院院长沈徽已确定参加本次大会,并作为计算机视觉技术专题出品人发表演讲,对商汤科技和AI开发感兴趣的伙伴可以扫码添加小助手微信,回复:大会,入群详细了解。