中文流行歌曲歌词文本挖掘

刘思喆大佬一篇文章《爱情永远寂寞》的启发,对其中的文本挖掘技术非常感兴趣,遂产生了复制这个分析的想法。最近我一直在阅读各种各样的有趣分析,或者是Kaggle Notebooks,其中若有我比较感兴趣的主题、数据、算法,我都会尝试复现一下。

比如《爱情永远寂寞》这篇文章中提到的:

拿到22996 首中文歌曲(844 个流行歌手)之后,总觉得在这些非结构化数据背后肯定隐藏了什么,但到底会有什么模式呢?当经历了分词、构建矩阵、去除停止词、矩阵约减,最终通过模式识别,统计数字之后爱情居然是这样的一个真相

看上去还挺复杂的有没有?我之前只接触过Text Mining with R 这本书提供的方法,也就是构建N-gram。也不知道上边说的“构建矩阵”、“矩阵约减”、“模式识别”之类的方法怎么实现。但目前确定的是构建N-gram能够给出类似的文本词语关联关系。

这篇文章并没有给出分析用的原始代码及数据。那么复现类似的分析需要自己找一份歌词数据。在github上搜了一下,找到的是这个repo中所用的数据:

https://github.com/liuhuanyong/MusicLyricChatbot

数据是json格式的。首先我使用了Python读入json数据,使用jieba工具进行汉语分词。Python程序如下:

import jieba
import json
import time
import gc
import pandas as pd
import matplotlib.pyplot as plt

stopword_list = [k.strip() for k in open('../input/english-and-chinese-stopwords/stopwords.txt', encoding='utf8').readlines() if k.strip() != '']

music = []
for line in open('../input/chinese-pop-song-lyrics/music.json','r'):
    music.append(json.loads(line))
    
print('json文件总长度 {} '.format(len(music)))
# json文件总长度 140068 

lyrics = []
for i in music:
    lyrics.append(i['geci'])

def generate_ngrams(text, n_gram=2):
    '''得到N元组
    '''
    token = [k for<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值