本项目使用 Python 和 jieba 分词,收集用户的听歌排行中的所有歌词信息,使用 WordCloud 词云展示
效果展示:
- anaconda 环境
- 浏览器调试工具的使用
- 网易云 nodeJs 版 API
-
首先在浏览器中获取到用户的听歌排行界面 (你需要将 id 替换成你需要的)
使用 https://music.163.com/#/user/home?id=1469645xxx
进入用户的听歌排行主页: https://music.163.com/#/user/songs/rank?id=1469645xxx
-
请求头中的 Referer 也可以替换成自己的
-
运行 music_rank.ipynb 中的内容,将会保存歌单到 csv 或者 xlsx 文件
-
歌词处理
需要运行 https://github.com/Binaryify/NeteaseCloudMusicApi,你需要按照文档部署好该服务
运行 music_lyrics.ipynb 中的内容
运行完成好之后,在 lyrics.txt 中包含的就是歌单的所有歌词,你可能需要根据自己的需要自定义 stop_words 列表,排除不需要的例如作曲、作词这样的歌词内容
请注意本处可能存在的问题:
-
停止词列表:由于网易云歌词数据非规格化,需要手动的生成停止词列表文件
-
多语种识别:本项目主要针对与中文语种的音乐分词,没有考虑日韩英等多语种
-
重复度:某些歌曲中的歌词完全重复了几遍,高度影响统计结果
-
-
生成歌词
运行 word_cloud.ipynb 生成词云图片,请注意,同样需要忽略歌词中的无意义词汇例如:啊,的,吗,了等词汇
另外 针对中文需要指定中文字体的路径
听歌排行分为周排行和总排行,周排行不是实时更新,最长延迟一天更新。需要用户听完完整的一首歌或者 60s 才会被统计。
每天更新的时间不一样,与当天的网易云数据量和网络有关
- 使用云函数或 github actions 自动化程序流程
- 分语言与权重
- 词汇情感分析
- 列表展示
- 用户相似度