最近の歌詞を解析してみる

創作

最近の曲って応援歌とラブソング多すぎじゃね?

って思ったので調べてみる。これをすることで、今、大衆が音楽に求めているものが分かるんじゃないかなと思った。

方法は、BeautifulSoupでUta-Netから歌詞を拾ってきて、mecabで分かち書きして、それをwordcloudで表示させる。登場頻度が多い単語ほど大きく表示されるよ。

解析の対象は、7/19時点でのUta-Netのデイリーランキングに名を連ねるアーティストの曲から、新着順で5曲づつ。約150曲。

コードはほぼコピペなので、参考にさせてもらったサイトのリンクを貼らせてもらいます。丸一日かかったけど、マジ助かりました。

アクセスランキング(デイリー) - 歌ネット
アクセスランキング(デイリー):最新のアクセスランキングを提供しています。
【GoogleColaboratory】歌ネット(Uta-Net)から歌詞をスクレイピングする
Word Cloudでアーティストの歌詞の頻出語を可視化してみた。|ドドテクノ
私が作ったWEBアプリ(Synchro Song)ではアーティスト毎のページに歌詞の頻出語を可視化したWord Clou

コードはこちら

"""
Uta-Netのデイリーランキングに載っている歌手の歌をリストにし、csvファイルに出力するプログラム
参考 : https://zenn.dev/robes/articles/00e86185677fb5
"""





import requests
from bs4 import BeautifulSoup
import pandas as pd
import time


#曲名と歌詞を格納するデータフレーム
list_df = pd.DataFrame(columns=['歌詞'])

#歌ネットのurlをbase_urlに入力します
base_url = 'https://www.uta-net.com'

#新着順で上から5曲取得
url_list = ['https://www.uta-net.com/artist/12795/6/',#米津玄師
            'https://www.uta-net.com/artist/28370/6/',#YOASOBI
            'https://www.uta-net.com/artist/25948/6/',#キタニタツヤ
            'https://www.uta-net.com/artist/27886/6/',#SixTONES
            'https://www.uta-net.com/artist/1395/6/',#サザンオールスターズ
            'https://www.uta-net.com/artist/1472/6/',#ストロベリ・ーフラワー
            'https://www.uta-net.com/artist/18370/6/',#HoneyWorks
            'https://www.uta-net.com/artist/18526/6/',#Mrs. GREEN APPLE
            'https://www.uta-net.com/artist/24943/6/',#崎山蒼志
            'https://www.uta-net.com/artist/31072/6/',#INI
            'https://www.uta-net.com/artist/1475/6/',#スピッツ
            'https://www.uta-net.com/artist/28773/6/',#優里
            'https://www.uta-net.com/artist/7338/6/',#Hey! Say! JUMP
            'https://www.uta-net.com/artist/31352/6/',#なにわ男子
            'https://www.uta-net.com/artist/34868/6/',#B小町 アイ(高橋李依)
            'https://www.uta-net.com/artist/17598/6/',#あいみょん
            'https://www.uta-net.com/artist/24640/6/',#King & Prince
            'https://www.uta-net.com/artist/34946/6/',#六科なじむ(日高里菜) & Neko Hacker
            'https://www.uta-net.com/artist/34890/6/',#Ayase×R-指定
            'https://www.uta-net.com/artist/134/6/',#B'z
            'https://www.uta-net.com/artist/29298/6/',#Ado
            'https://www.uta-net.com/artist/34485/6/',#MAN WITH A MISSION & milet
            'https://www.uta-net.com/artist/32789/6/',#Conton Candy
            'https://www.uta-net.com/artist/22091/6/',#菅田将暉
            'https://www.uta-net.com/artist/5301/6/',#馬場俊英
            'https://www.uta-net.com/artist/27915/6/',#Snow Man
            'https://www.uta-net.com/artist/20609/6/',#新しい学校のリーダーズ
            'https://www.uta-net.com/artist/28720/6/',#NizU
            'https://www.uta-net.com/artist/18093/6/',#Official髭男dism
            'https://www.uta-net.com/artist/29093/6/',#ano
            'https://www.uta-net.com/artist/27857/6/',#Vaundy
            'https://www.uta-net.com/artist/31445/6/',#imase
            ]

for url in url_list:
    i = 0
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    
    #引数として、class_='sp-w-100'を与えます
    links = soup.find_all('td', class_='sp-w-100')
    
    #歌詞情報を取得します
    for link in links:
        a = base_url + (link.a.get('href'))
        response = requests.get(a)
        soup = BeautifulSoup(response.text, 'lxml')
        song_name = soup.find('h2').text
            
        song_kashi = soup.find('div', id="kashi_area")
        song_kashi = song_kashi.text
            
        time.sleep(0.5)
            
        tmp_se = pd.DataFrame([[song_kashi]],
        index=list_df.columns).T
        
        list_df = list_df.append(tmp_se)
        i+=1
        if i == 1:
            break
    

list_df.to_csv("song_list_2.csv",index=None)

結果がこちら↓

マ?パラパラ?色々おかしいワードがあるな。

secretがデカすぎる。

これ、プログラムちゃんと動いてない気もするけど、結果が分かるだけで良しとしよう。

第一印象は、当たり障りのない言葉が並んでんなーって感じ。この調べ方だと当たり前なんだけども。

曲数を倍にしてみる&’マ’と’メ’をNGワード指定した結果↓

英語が多すぎる。FEELINGデカいなおい。

うーん、結局、よく分からん。調べ方が悪かったか?プログラミングの知識不足もあるな。

でも、どのワードも応援歌やラブソングに入っていてもおかしくないものばかりだよね。

以上、wordcloudで最近の歌詞の頻出単語を調べてみました。

なんか、歌詞書いてみようかな。

コメント