日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python的语言是什么歌_用python对歌词进行语言分析

發(fā)布時(shí)間:2024/10/8 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的语言是什么歌_用python对歌词进行语言分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是剛剛學(xué)python的一個(gè)小練手,最近整理整理總結(jié)下寫成文章,算是個(gè)學(xué)習(xí)的見證吧

通過python爬取了網(wǎng)易云音樂上汪峰最熱門的50首歌詞,并對它們進(jìn)行文本分析:

第一種方法是用TF-IDF算法進(jìn)行關(guān)鍵字提取,第二種方法是詞頻統(tǒng)計(jì)

1、數(shù)據(jù)獲取: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): #根據(jù)歌詞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())) # 當(dāng)前日期,用于文件命名

fn = open('%s.txt' % file_date, 'a+') # 新建文件對象,以追加模式打開

fn.write(content) # 寫入文件

fn.close() # 關(guān)閉文件對象

def get_music_ids_by_musican_id(singer_id): #通過一個(gè)歌手id下載這個(gè)歌手的所有歌詞

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) #括號內(nèi)為歌手id

2、用TF-IDF提取關(guān)鍵字分析,并打印出它們所占的比重。

import jieba.analyse # 導(dǎo)入關(guān)鍵字提取庫

import pandas as pd # 導(dǎo)入pandas

# 讀取文本數(shù)據(jù)

fn = open(r'data\wflyric.txt') # 以只讀方式打開文件

string_data = fn.read() # 使用read方法讀取整段文本

fn.close() # 關(guān)閉文件對象

# 關(guān)鍵字提取

tags_pairs = jieba.analyse.extract_tags(string_data, withWeight=True, allowPOS=['ns', 'n', 'vn', 'v','a'],

withFlag=True) # 提取關(guān)鍵字標(biāo)簽

tags_list = [] # 空列表用來存儲(chǔ)拆分后的三個(gè)值

for i in tags_pairs: # 打印標(biāo)簽、分組和TF-IDF權(quán)重

tags_list.append((i[0].word, i[0].flag, i[1])) # 拆分三個(gè)字段值

tags_pd = pd.DataFrame(tags_list, columns=['word', 'flag', 'weight']) # 創(chuàng)建數(shù)據(jù)框

print (tags_pd) # 打印數(shù)據(jù)框

這里只摘取了top10的關(guān)鍵字

3、詞頻統(tǒng)計(jì),事先準(zhǔn)備好停詞文本,接著開始讀取文本數(shù)據(jù),用正則表達(dá)式去掉不規(guī)范的數(shù)據(jù),然后文本分詞,接著與停詞文本匹配,篩選出有效的文本,最后做詞云效果展示

import re # 正則表達(dá)式庫

import collections # 詞頻統(tǒng)計(jì)庫

import numpy as np # numpy庫

import jieba # 結(jié)巴分詞

import wordcloud # 詞云展示庫

from PIL import Image # 圖像處理庫

import matplotlib.pyplot as plt # 圖像展示庫

# 讀取文本文件

fn = open(r'data\wflyric.txt') # 以只讀方式打開文件

string_data = fn.read() # 使用read方法讀取整段文本

fn.close() # 關(guān)閉文件對象

fn2=open(r'data\stopCn.txt',encoding='utf-8') #停詞文本

remove_words=fn2.read()

fn2.close()

# 文本預(yù)處理

pattern = re.compile(u'\t|\n|\.|-|一|:|;|\)|\(|\?|"|、|\s+') # 建立正則表達(dá)式匹配模式

string_data = re.sub(pattern, '', string_data) # 將符合模式的字符串替換掉

# 文本分詞

seg_list_exact = jieba.cut(string_data, cut_all=False) # 精確模式分詞[默認(rèn)模式]

object_list = [] # 建立空列表用于存儲(chǔ)分詞結(jié)果

for word in seg_list_exact: # 迭代讀出每個(gè)分詞對象

if word not in remove_words: # 如果不在去除詞庫中

object_list.append(word) # 分詞追加到列表

# 詞頻統(tǒng)計(jì)

word_counts = collections.Counter(object_list) # 對分詞做詞頻統(tǒng)計(jì)

word_counts_top10= word_counts.most_common(10) # 獲取前10個(gè)頻率最高的詞

for w, c in word_counts_top10: # 分別讀出每條詞和出現(xiàn)從次數(shù)

print(w, c) # 打印輸出

# 詞頻展示

mask = np.array(Image.open(r'data\wf.jpg')) # 定義詞頻背景

wc = wordcloud.WordCloud(

font_path='C:/Windows/Fonts/simhei.ttf', # 設(shè)置字體格式,不設(shè)置將無法顯示中文

mask=mask, # 設(shè)置背景圖

max_words=50, # 設(shè)置最大顯示的詞數(shù)

max_font_size=100 # 設(shè)置字體最大值

)

wc.generate_from_frequencies(word_counts) # 從字典生成詞云

image_colors = wordcloud.ImageColorGenerator(mask) # 從背景圖建立顏色方案

wc.recolor(color_func=image_colors) # 將詞云顏色設(shè)置為背景圖方案

plt.imshow(wc) # 顯示詞云

plt.axis('off') # 關(guān)閉坐標(biāo)軸

plt.show() # 顯示圖像

詞云效果圖展示:

后續(xù)會(huì)對詞語進(jìn)行進(jìn)一步的情感分析

總結(jié)

以上是生活随笔為你收集整理的python的语言是什么歌_用python对歌词进行语言分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。