歌词词云可视化

以网易云音乐为例,动态抓取指定明星的歌曲列表,保存歌词文件,去除歌词中的常用词,并对歌词进行词云展示,分析歌曲的作词风格:

# -*- coding:utf-8 -*-
# 网易云音乐 通过歌手ID,生成该歌手的词云
import requests
import sys
import re
import os
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from PIL import Image
import numpy as np
from lxml import etree

#头部信息
headers = {
   
   
		'Referer'	:'http://music.163.com',
		'Host'	 	:'music.163.com',
		'Accept' 	:'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
		'User-Agent':'Chrome/10'
	}

# 获取歌词
def get_song_lyric(headers, lyric_url):
	res = requests.request('GET', lyric_url, headers=headers)
	if 'lrc' in res.json()
好的,以下是用Python实现周杰伦歌词可视化的代码: 首先,需要安装 `jieba`、`wordcloud` 和 `matplotlib` 这三个库: ```python !pip install jieba wordcloud matplotlib ``` 然后,下载周杰伦的歌词文件(例如 `lyrics.txt`),并读入歌词: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt # 读入歌词文件 with open('lyrics.txt', 'r', encoding='utf-8') as f: lyrics = f.read() ``` 接着,使用 `jieba` 对歌词进行分,并统计每个语的出现次数: ```python # 对歌词进行分 words = jieba.cut(lyrics) # 统计频 word_counts = {} for word in words: if len(word) > 1: # 只统计长度大于1的语 word_counts[word] = word_counts.get(word, 0) + 1 ``` 最后,使用 `wordcloud` 生成,并使用 `matplotlib` 绘制图表: ```python # 生成 wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', width=800, height=600).generate_from_frequencies(word_counts) # 绘制图表 plt.imshow(wordcloud) plt.axis('off') plt.show() ``` 其中,`font_path` 参数指定了字体文件的路径,`background_color` 参数指定了背景色为白色,`width` 和 `height` 参数指定了图表的大小。 完整的代码如下: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt # 读入歌词文件 with open('lyrics.txt', 'r', encoding='utf-8') as f: lyrics = f.read() # 对歌词进行分 words = jieba.cut(lyrics) # 统计频 word_counts = {} for word in words: if len(word) > 1: # 只统计长度大于1的语 word_counts[word] = word_counts.get(word, 0) + 1 # 生成 wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', width=800, height=600).generate_from_frequencies(word_counts) # 绘制图表 plt.imshow(wordcloud) plt.axis('off') plt.show() ``` 执行上述代码,即可生成周杰伦歌词可视化图表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值