今天跟大家唠唠我最近折腾的:用代码扒周杰伦的《Now You See Me》。
事情是这么开始的,前几天不是 Jay 的演唱会延期了吗,害,抢票跟打仗似的,还是没抢到。心里那个不得劲!晚上躺床上翻来覆去睡不着,突然脑子里就蹦出《Now You See Me》这首歌,干脆,咱不会抢票,还不会自己动手丰衣足食吗?
说干就干!
第一步:找歌词!
这年头找资源还是挺方便的,直接上网搜 "Now You See Me 歌词",嚯,一大堆。随便找了个网站,复制下来,保存到 txt 文件里,歌词这不就有了吗?简单!
第二步:分析歌词!
光有歌词还不行,得知道唱了些啥!我打开文件,一行一行地看,杰伦的歌词,就是不一样,天马行空,还得琢磨琢磨才能明白啥意思。顺便把歌词里的重复部分、副歌部分都标记出来,方便后面搞事情。
第三步:开始撸代码!
重头戏来了!我打开我的 VS Code,新建一个 Python 文件。这回我的目标是:把歌词里的高频词汇给统计出来,看看杰伦到底在 now see 什么 me。
-
把歌词文件读进来。
-
然后,用 jieba 分词把歌词切成一个个词语。
-
把那些没啥用的词,比如“的”、“了”、“是”啥的,全部过滤掉,建立一个停用词表。
-
统计每个词语出现的次数,按照次数从高到低排序,取前 20 个高频词。
代码写起来还是挺顺手的,毕竟也算是老码农了。跑了一下,结果出来了,出现频率最高的词居然是“什么”、“世界”、“魔术”这些,还有一些杰伦特色的词语,比如“节奏”、“灯光”啥的。
第四步:可视化展示!
光看数据多没意思,得让它更直观一点!我用 matplotlib 搞了个简单的柱状图,把前 20 个高频词的出现次数用柱子表示出来。一下子就清楚多了,哪个词出现的多,哪个词出现的少,一目了然。
第五步:搞点花样!
柱状图搞完了,感觉还是有点单调。突然想到,要不试试词云?就是把词语的大小按照出现频率排列,出现频率越高的词,字体越大。这玩意儿看起来更有艺术感!
赶紧上网找了找 Python 词云的库,wordcloud,安装好之后,把高频词汇的数据扔进去,调整了一下字体、颜色、背景啥的,生成了一张词云图。别说,还挺好看的!
一步:
这回折腾虽然没抢到演唱会门票,但是也算是用另一种方式致敬了杰伦。通过代码分析歌词,感觉对这首歌的理解更深了一层。下次有机会,我准备把杰伦所有歌的歌词都扒下来分析分析,看看能不能发现点啥秘密!
这回实践还是挺有意思的。以后没事了,可以多折腾折腾,用代码玩点不一样的东西。