グッバイ、イレーーギュラーーーーー
とか叫びたくなる今日この頃
なんとなく
Official髭男dismの歌詞の特徴を見てみたい
と思ってしまいました。
解説動画はこちら
はい
ひげだんさんの歌詞の特徴を見ていきたいですが
事前準備として
1.歌詞を集める
2.形態素解析する
3.テキストファイルにする
この作業が必要でーーーす。
これができましたら
以下のコードを試すことができます。
先ずは
ワードクラウドで歌詞の特徴を可視化する。
ワードクラウドは歌詞に出てくる単語の出現頻度順で
文字を大きさを決めて、1枚にまとめたものです。
コードは
このコードではfpathでフォントの場所を指定しているので
お使いのマシンのパスにあわせてください。
ワードクラウドの結果は
する、僕、君
が大きいですねーーー
「僕と君がする」んでしょうね!!!!
何をするかは存じませんが
割と一般的な語句が多いようですね。
歌詞の特徴としてはそこまで
突拍子もない単語は連呼していない訳です。
次に単語の数ではなく
TF-IDFで重要そうな言葉を見てみます。
TF とは Term Frequency の略で、単語の出現頻度を表します。
IDF とは Inverse Document Frequency の略で、逆文書頻度を表します。
これを掛け合わせたものがTF-IDFで
ある単語が多くの文書で出現するほど値は下がり
特定の文書にしか出現しない単語の重要度を上げる役割をします。
TF-IDF値は0-1の間の値を取ります。
重要なキーワードは1に近づきます。
0.25より大きなワードを出してみました。
doc id1は最近佐藤健さんが主演したドラマの主題歌です。
loveという単語は
他の歌詞にはあまり使われていないけど
ここの歌詞では連呼されてるんでしょうねーー
tf-idf 閾値0.1にすると
「イレギュラー」も含まれてきます。
doc id43は映画の主題歌になった曲です。
「グッバイ」が特徴的な感じしますね。
最後にn-gramをみてみます。
n-gramとはn個の単語の繋がりを表す言葉で
3つの単語であればtrigramになります。
一番多かったのは英語の歌詞の繋がりでした。
かなり英語の歌詞を多用している感じがあります。
まとめると
・全体的に割と一般的な日本語を多く使用する。
・1つの歌詞でキーワードになるような単語がある
「グッバイ」「イレギュラー」
・割と英語を多用するところもある。
かなーと思います。
歌詞の特徴を見るには
他にもいろんな手法があると思いますが
比較的簡単な方法をご紹介しました。
皆さんもぜひ試してみてください。
それでは。
とか叫びたくなる今日この頃
なんとなく
Official髭男dismの歌詞の特徴を見てみたい
と思ってしまいました。
解説動画はこちら
はい
ひげだんさんの歌詞の特徴を見ていきたいですが
事前準備として
1.歌詞を集める
2.形態素解析する
3.テキストファイルにする
この作業が必要でーーーす。
これができましたら
以下のコードを試すことができます。
先ずは
ワードクラウドで歌詞の特徴を可視化する。
ワードクラウドは歌詞に出てくる単語の出現頻度順で
文字を大きさを決めて、1枚にまとめたものです。
コードは
from wordcloud import WordCloud text_file = open('higedan_list.txt', encoding='utf-8') text = text_file.read() #fpath = 'C:/Windows/Fonts/meiryob.ttc' fpath = '/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc' stop_words = [] #stop_words = ['そう', 'ない', 'いる', 'する', 'まま', 'よう', 'てる','しまう','それ','なる', 'こと', 'もう', 'いい', 'ある', 'ゆく', 'れる'] wordcloud = WordCloud(background_color='white',font_path=fpath,width=800, height=600, stopwords=set(stop_words), regexp=r"[\w']+" ).generate(text) wordcloud.to_file('higedan.png') plt.figure(figsize=(12,9)) plt.imshow(wordcloud) plt.axis("off") plt.show()
このコードではfpathでフォントの場所を指定しているので
お使いのマシンのパスにあわせてください。
ワードクラウドの結果は
する、僕、君
が大きいですねーーー
「僕と君がする」んでしょうね!!!!
何をするかは存じませんが
割と一般的な語句が多いようですね。
歌詞の特徴としてはそこまで
突拍子もない単語は連呼していない訳です。
次に単語の数ではなく
TF-IDFで重要そうな言葉を見てみます。
TF とは Term Frequency の略で、単語の出現頻度を表します。
IDF とは Inverse Document Frequency の略で、逆文書頻度を表します。
これを掛け合わせたものがTF-IDFで
ある単語が多くの文書で出現するほど値は下がり
特定の文書にしか出現しない単語の重要度を上げる役割をします。
TF-IDF値は0-1の間の値を取ります。
重要なキーワードは1に近づきます。
0.25より大きなワードを出してみました。
import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer np.set_printoptions(precision=2) with open('higedan_list.txt','r') as _f: docs = [row.replace('\n','') for row in _f] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(docs) words = vectorizer.get_feature_names() for did, vec in zip(range(len(docs)), X.toarray()): print('doc id : ', did) for w, tfidf in sorted(enumerate(vec), key=lambda x: x[1], reverse=True): if tfidf>0.25: wo = words[w] print('\t{0:s}\t{1:f}'.format(wo, tfidf))
doc id : 1 love 0.721728・・・
doc id : 43 違う 0.329506 グッ 0.327694 バイ 0.296629 もっと 0.265779
doc id1は最近佐藤健さんが主演したドラマの主題歌です。
loveという単語は
他の歌詞にはあまり使われていないけど
ここの歌詞では連呼されてるんでしょうねーー
tf-idf 閾値0.1にすると
「イレギュラー」も含まれてきます。
doc id43は映画の主題歌になった曲です。
「グッバイ」が特徴的な感じしますね。
最後にn-gramをみてみます。
n-gramとはn個の単語の繋がりを表す言葉で
3つの単語であればtrigramになります。
with open('higedan_list.txt','r') as _f: docs = [row.replace('\n','').split(' ') for row in _f] def n_gram(st, n): return [st[i:i+n] for i in range(len(st)-n+1)] counts = {} for doc in docs: trigrams = n_gram(doc,3) for tri in trigrams: key = ''.join(tri) if key in counts: counts[key] +=1 else: counts[key] = 1 for k,v in sorted(counts.items(),reverse=True,key=lambda x:x[1]): print(k,v)
metellme 16 StandByYou 15 tellmetell 14・・・・
一番多かったのは英語の歌詞の繋がりでした。
かなり英語の歌詞を多用している感じがあります。
まとめると
・全体的に割と一般的な日本語を多く使用する。
・1つの歌詞でキーワードになるような単語がある
「グッバイ」「イレギュラー」
・割と英語を多用するところもある。
かなーと思います。
歌詞の特徴を見るには
他にもいろんな手法があると思いますが
比較的簡単な方法をご紹介しました。
皆さんもぜひ試してみてください。
それでは。
コメントする