这一阵公司的事情越来越忙,感觉光是应付工作就要耗费很大的精力,工作之外的越来越没有时间做了。再加上最近一直在搞落户的事情,耗费了很多精力,大概工作之后的状态都是这样吧。12月份因为报表的事情连续加了半个月的班,本来想结束之后好好总结下的,但是后面实在太懒就鸽掉了。况且感觉都是些比较个人的经验也没啥好总结的。
前两天把一年前在Kaggle上写的一份代码拿出来改成了data.table
版本,而且解决了之前的一个小bug。基本的思路是对歌词进行一系列的分词、词干提取等操作。然后将每个说唱歌手视为一篇文档,求出每个词的tf-idf值。tf-idf值能够很好地衡量每个词对于一篇文章的重要程度。也就是说,如果某个词在某个说唱歌手的歌曲中出现频率很高,但在所有说唱歌词中出现频率很低,我们会认为这个词很有助于区分这个说唱歌手。tf-idf值越高,那么该词的区分文档的能力就越高。在求出所有词的tf-idf值之后,我们取每个歌手的top 15词汇,做出可视化。
所有的歌词都是我从github一个公开repo上找来的,共36位歌手,当然这个名单中有些已经过世了(R.I.P Biggie/Big L/Mac Miller/Easy-E),而有的名字则是我从未涉猎过的。原始数据存储在txt文件中,我根据\n
换行符将它们分行存储到csv文件中。
library(data.table)
library(ggplot2)
library(tidytext)
library(textstem)
stop_words = as.data.table(stop_words)
rap = fread('../input/data-concat/rap_all.csv')
rap[,text:= lapply(text, iconv, 'UTF-8', 'ASCII', sub='')]
rap_dt = unnest_tokens(rap