python的语言是什么歌_用python对歌词进行语言分析
这是刚刚学python的一个小练手,最近整理整理总结下写成文章,算是个学习的见证吧
通过python爬取了网易云音乐上汪峰最热门的50首歌词,并对它们进行文本分析:
第一种方法是用TF-IDF算法进行关键字提取,第二种方法是词频统计
1、数据获取:request+json+BeautifulSoup
import requests
import json
import re
from bs4 import BeautifulSoup
import time
user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
headers = {'User-Agent': user_agent} # 定义头信息
def download_by_music_id(music_id): #根据歌词id下载
url = 'http://music.163.com/api/song/lyric?'+ 'id=' + str(music_id)+ '&lv=1&kv=1&tv=-1'
r = requests.get(url,headers=headers)
json_obj = r.text
j = json.loads(json_obj)
lrc = j['lrc']['lyric']
pat = re.compile(r'\[.*\]') #这里几行代码是把歌词中的空格和符号之类的去掉
lrc = re.sub(pat,"",lrc)
lrc = lrc.strip()
return lrc
def write_data(content):
file_date = time.strftime('%Y-%m-%d', time.localtime(time.time())) # 当前日期,用于文件命名
fn = open('%s.txt' % file_date, 'a+') # 新建文件对象,以追加模式打开
fn.write(content) # 写入文件
fn.close() # 关闭文件对象
def get_music_ids_by_musican_id(singer_id): #通过一个歌手id下载这个歌手的所有歌词
singer_url = 'http://music.163.com/artist?'+ 'id='+str(singer_id)+ '&lv=1&kv=1&tv=-1'
r = requests.get(singer_url,headers=headers).text
soupObj = BeautifulSoup(r,'lxml')
song_ids = soupObj.find('textarea').text
jobj = json.loads(song_ids)
for item in jobj:
write_data(download_by_music_id(item['id']))
print(jobj.size)
get_music_ids_by_musican_id(5347) #括号内为歌手id
2、用TF-IDF提取关键字分析,并打印出它们所占的比重。
import jieba.analyse # 导入关键字提取库
import pandas as pd # 导入pandas
# 读取文本数据
fn = open(r'data\wflyric.txt') # 以只读方式打开文件
string_data = fn.read() # 使用read方法读取整段文本
fn.close() # 关闭文件对象
# 关键字提取
tags_pairs = jieba.analyse.extract_tags(string_data, withWeight=True, allowPOS=['ns', 'n', 'vn', 'v','a'],
withFlag=True) # 提取关键字标签
tags_list = [] # 空列表用来存储拆分后的三个值
for i in tags_pairs: # 打印标签、分组和TF-IDF权重
tags_list.append((i[0].word, i[0].flag, i[1])) # 拆分三个字段值
tags_pd = pd.DataFrame(tags_list, columns=['word', 'flag', 'weight']) # 创建数据框
print (tags_pd) # 打印数据框
这里只摘取了top10的关键字
3、词频统计,事先准备好停词文本,接着开始读取文本数据,用正则表达式去掉不规范的数据,然后文本分词,接着与停词文本匹配,筛选出有效的文本,最后做词云效果展示
import re # 正则表达式库
import collections # 词频统计库
import numpy as np # numpy库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
# 读取文本文件
fn = open(r'data\wflyric.txt') # 以只读方式打开文件
string_data = fn.read() # 使用read方法读取整段文本
fn.close() # 关闭文件对象
fn2=open(r'data\stopCn.txt',encoding='utf-8') #停词文本
remove_words=fn2.read()
fn2.close()
# 文本预处理
pattern = re.compile(u'\t|\n|\.|-|一|:|;|\)|\(|\?|"|、|\s+') # 建立正则表达式匹配模式
string_data = re.sub(pattern, '', string_data) # 将符合模式的字符串替换掉
# 文本分词
seg_list_exact = jieba.cut(string_data, cut_all=False) # 精确模式分词[默认模式]
object_list = [] # 建立空列表用于存储分词结果
for word in seg_list_exact: # 迭代读出每个分词对象
if word not in remove_words: # 如果不在去除词库中
object_list.append(word) # 分词追加到列表
# 词频统计
word_counts = collections.Counter(object_list) # 对分词做词频统计
word_counts_top10= word_counts.most_common(10) # 获取前10个频率最高的词
for w, c in word_counts_top10: # 分别读出每条词和出现从次数
print(w, c) # 打印输出
# 词频展示
mask = np.array(Image.open(r'data\wf.jpg')) # 定义词频背景
wc = wordcloud.WordCloud(
font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式,不设置将无法显示中文
mask=mask, # 设置背景图
max_words=50, # 设置最大显示的词数
max_font_size=100 # 设置字体最大值
)
wc.generate_from_frequencies(word_counts) # 从字典生成词云
image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
plt.show() # 显示图像
词云效果图展示:
后续会对词语进行进一步的情感分析
python的语言是什么歌_用python对歌词进行语言分析相关推荐
- 88是python语言的整数类型_少儿Python编程_第三讲:常量变量和数据类型
无论使用哪一种编程语言,甚至是学习数学.物理,都需要掌握常量.变量.表达式的概念和用法.本讲将带领读者进入编程世界,学习程序的基本元素. 3.1 基本数据类型 基本数据类型有数值型.布尔型和字符型.它 ...
- python是一种动态语言、这意味着_【python编程的优点是什么?难怪选择python的人越来越多了】- 环球网校...
[摘要]Python是一种动态解释的.强类型定义语言:编写它时不需要定义变量类型.python判断值的类型的方法是什么,那么python编程的优点是什么?难怪选择python的人越来越多了,所以你知道 ...
- python语言设计学习方向_学好Python开发就业方向有哪些?
原标题:学好Python开发就业方向有哪些? 近年来,Python市场火爆,从业人员薪资不断增加,选择学Python的人也在逐年增多.然而,很多人学Python只是盲目的跟随潮流,对于Python却不 ...
- python语言程序的特点_《Python语言程序设计》 —1.1.3 Python的特点及应用领域...
1.1.3 Python的特点及应用领域 学习一门编程语言,应该了解其特点及适用领域.Python语言的特点及应用领域如下. 1. 特点 (1)优点 简单易学:在开发者社群流行着一句玩笑-" ...
- 简述python语言的主要领域_简述Python语言经验总结
Python语言是不被大多数人知道的东西,这里就简单概述下Python语言,顺便闲谈一 下Python 标准库."俗话"说:库即是语言,语言即是库.由此可见拥有一套高质量.具备良好 ...
- python语言是编译执行_加速Python运行的工具
加速Python运行的工具应用 如果你需要让你的Python程序加速运行,在不同的层次有一些不同的解决方案: 重写 你的 Python 代码, 通过 并行化parallelizing 和 优化opti ...
- python语言程序设计实验题_《Python语言程序设计》测验题目
Python语言程序设计测验题目 在MOOC网学习Python语言程序设计 课程,课程会有考试,这里把每次考试的经历记录下来,作为学习Python笔记的一部分,后边的考试会持续更新-- Python语 ...
- python语言程序设计编程题_《python语言程序设计》_第一章编程题
题目1.1 :显示"welcome to python " 答案:print('welcome to python') 题目1.2:显示"welcome to pytho ...
- python设计贪吃蛇游戏论文_用Python写一个贪吃蛇AI,让程序自己玩游戏
前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...
最新文章
- [文摘20090224]天干和地支
- 使用using与typedef来定义别名
- Leetcode 583.两个字符串的删除操作
- dubbo源码解析(四十一)集群——Mock
- php 取数组数量_PHP array_slice():截取数组的一部分
- 深度学习笔记(41) 候选区域
- 零基础学python尹会生_编程零基础应当如何开始学习 Python?
- struts2的动态方法调用(DMI)和通配符映射
- Diablo III 卡Checking for updates的问题解决
- css html5布局方式_创建新HTML5&CSS3单页布局– Rock门户
- Python3爬虫 爬句子迷
- 从linaro下载安装二进制文件安装交叉编译工具
- 服务器证书如果不被网站信任怎么办?
- win10睡眠只是关掉显示器的问题
- 排列组合之生成排列_(:з」∠)_
- 百度AI战疫五十天:三场战役与一次胜利
- 2022年全国职业院校技能大赛(高职组)
- 安卓APP源码和设计报告——仿淘宝水果商城
- 商场百货会员引流 购物中心会员拉新方式
- git 交互式rebase
热门文章
- C#语法:委托与事件
- 串口、COM口、TTL和RS-232的区别详解
- 小明分享|嵌入式LINUX开发日志-错误汇总①
- Arduino--库函数头文件
- 在计算机网络俗称网上邻居上能看到自己,能看到自己计算机,看不到网上邻居的标准答案...
- python生成xml文件工具_Python根据指定文件生成XML的方法
- 一位小小码蚁工作2年多感想
- OA项目15:权限管理实体设计及映射
- 影响一生的职业建议 [转] - 看懂了不一定在高位,在高位的必须看懂了、信息量很大,多学学!...
- 微软EPG老大发给员工的mail