청춘 시절에 미쳐 듣고 있었지만 지금은 듣지 않게 된 그리엔의 가사를 가시화해 보았다.

계기



청춘 시절에 미쳐 듣고 있던 그리엔.
왜 그렇게 듣고 있었는데 지금 듣지 않게 된 것일까... 그렇게 생각한 것이 시작입니다.
GReeeen의 노래가 가진 메시지 경향을 시각화하고 듣지 못한 이유 = 노래에 공감할 수 없게 된 이유를 이해하기 위해 가사 분석을 실시합니다.

참고 기사


  • [Python] 아라시의 가사를 WordCloud에서 시각화하고, 결성 20년에 팬들에게 전하고 싶었던 것을 풀어 봤다 htps : // m / 유우 스케 1997 / ms / 122 또는 7597c909 73 아 d5
  • Uta-Net htps //w w. 우타네 t. 코m/

  • 환경


  • Macbook Catalina10.15.4
  • Python 3.7.6
  • BeautifulSoup
  • janome
  • wordcloud
  • Jupiter Notebook

  • 1. 가사 수집



    노래 그물 씨에서 스크래핑합니다.
    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    import time
    
    #スクレイピングしたデータを入れる表を作成
    list_df = pd.DataFrame(columns=['歌詞'])
    
    for page in range(1, 3):
        #曲ページ先頭アドレス
        base_url = 'https://www.uta-net.com'
    
        #歌詞一覧ページ
        url = 'https://www.uta-net.com/artist/5384/' + str(page) + '/'
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'lxml')
        links = soup.find_all('td', class_='side td1')
        for link in links:
            a = base_url + (link.a.get('href'))
    
            #歌詞詳細ページ
            response = requests.get(a)
            soup = BeautifulSoup(response.text, 'lxml')
            song_lyrics = soup.find('div', itemprop='lyrics')
            song_lyric = song_lyrics.text
            song_lyric = song_lyric.replace('\n','')
            #サーバーに負荷を与えないため1秒待機
            time.sleep(1)
    
            #取得した歌詞を表に追加
            tmp_se = pd.DataFrame([song_lyric], index=list_df.columns).T
            list_df = list_df.append(tmp_se)
    
    print(list_df)
    
    #csv保存
    list_df.to_csv('/Users/ユーザー名/greeeen/list.csv', mode = 'a', encoding='cp932')
    

    2. 가사를 단어로 한다(형태소 해석)


    from janome.tokenizer import Tokenizer
    import pandas as pd
    import re
    
    #list.csvファイルを読み込み
    df_file = pd.read_csv('/Users/ユーザー名/greeeen/list.csv', encoding='cp932')
    
    song_lyrics = df_file['歌詞'].tolist()
    
    t = Tokenizer()
    
    results = []
    
    for s in song_lyrics:
        tokens = t.tokenize(s)
    
        r = []
    
        for tok in tokens:
            if tok.base_form == '*':
                word = tok.surface
            else:
                word = tok.base_form
    
            ps = tok.part_of_speech
    
            hinshi = ps.split(',')[0]
    
            if hinshi in ['名詞', '形容詞', '動詞', '副詞']:
                r.append(word)
    
        rl = (' '.join(r)).strip()
        results.append(rl)
        #余計な文字コードの置き換え
        result = [i.replace('\u3000','') for i in results]
        print(result)
    
    text_file = '/Users/ユーザー名/greeeen/wakati_list.txt'
    with open(text_file, 'w', encoding='utf-8') as fp:
        fp.write("\n".join(result))
    

    3. 시각화(WordCloud)


    from wordcloud import WordCloud
    
    text_file = open('/Users/ユーザー名/greeeen/wakati_list.txt', encoding='utf-8')
    text = text_file.read()
    
    #日本語のフォントパス
    fpath = '/System/Library/Fonts/ヒラギノ明朝 ProN.ttc'
    
    #無意味そうな単語除去
    stop_words = ['そう', 'ない', 'いる', 'する', 'まま', 'よう', 'てる', 'なる', 'こと', 'もう', 'いい', 'ある', 'ゆく', 'れる']
    
    wordcloud = WordCloud(background_color='white',
        font_path=fpath, width=800, height=600, stopwords=set(stop_words)).generate(text)
    
    #画像はwordcloud.pyファイルと同じディレクトリにpng保存
    wordcloud.to_file('./wordcloud.png')
    

    완제품





    「우리들」이나 「오늘」 등 시간·공간적으로 당인이나 지금에 가까운 말이 많네요.
    그 외는 「가는」 「진행한다」 「변한다」등 전진·변화를 연상시키거나 불확실성을 가지는 「반드시」가 빈출하고 있습니다.
    그리고는 「웃는다」 「웃는 얼굴」을 볼 수 있습니다.

    결론


  • GReeeen의 가사가 가지는 메세지 경향을 한마디로 말하면 「미래는 불확실하지만 「지금」에 집중해 동료와 미소로 전진해 나가자」인 경향이 있다.

  • 이번 분석에 의해 어른이 된 자신의 마음이 꽤 거칠고 있는 것이 현재화되었습니다. 사회 적응하기 위해 차가운 ​​마음을 가졌다고 생각합니다만, 그 탓에 청춘 시절에 안은 더운 답답하게 믿는 마음을 잃고 있던 것 같습니다.
    이번 결과를 바탕으로 조금이라도 청춘 시대와 같은 젊음을 가질 수 있도록 노력하겠습니다.
    우선 웃는 횟수를 늘릴 것인가 ...

    좋은 웹페이지 즐겨찾기