Iruca Log

Iruca Log

東京に住むWeb系エンジニアによるデータ分析ブログ

SNSでフォローする!

西野カナの歌詞を分析して頻出単語を見てみた

あけましておめでとうございます。irucaです。
今日は西野カナの曲の歌詞を分析して頻出単語を調べてみました。

 最近いろんなJPOPを聴いていて、日本語の豊かさに関心していたのです。
宇多田ヒカルを聞いて、俺は果たして自分が15歳のころに
「最後のキスはタバコのflavorがした」なんていう歌詞を思いつけただろうか?宇多田はすげーな。マセガキだったんだな。
なんてことをずっと考えていました。

 そんなときに年末の紅白歌合戦で西野カナさんのトリセツという曲の歌詞を見て、その中身にびっくりしたのです。
なんだこのスカスカの日本語は。俺が15歳の頃に流行っていた携帯小説ってヤツでももうちょっとマシな日本語だったぞ。
本当にこのかわいい女の子は人に会いたくて震えているのか?
というかワガママすぎないか、男側のトリセツも読んであげるべきじゃないか?

 そんなことを考え始めるとイライラしてきて、このイライラをなにかにぶつけたくて西野カナさんの歌詞を分析してみることにしました。意味不明ですね。

 何はともあれ、対象とした曲は、下記のシングル曲26曲を含む91曲!
たくさんシングル出してるんですねえ。

"I", "glowly days", "Style.", "MAKE UP", "遠くても feat.WISE", "君に会いたくなるから", "もっと…", "Dear…/MAYBE", "Best Friend", "会いたくて 会いたくて", "if", "君って", "Distance", "Esperanza", "たとえ どんなに…", "SAKURA, I love you?", "私たち", "GO FOR IT!!", "Always", "Believe", "涙色", "さよなら", "We Don't Stop", "Darling", "好き", "もしも運命の人がいるのなら", "トリセツ" etc...


歌詞の日本語解析のために、さっそく形態素解析エンジンMecabをインストールします。

$ sudo apt-get install libmecab-dev mecab mecab-ipadic mecab-ipadic-utf8 mecab-utils

pythonで使いたいからpython-mecabもインストールします。

$ sudo apt-get install python-mecab

91曲分の歌詞を1行に連結したUTF-8のテキストファイル(lyrics.txt)を用意しておいて、
テキストファイルから名詞・形容詞・動詞だけを抜き出す下記のプログラムを回します。

#!/usr/bin/python
#-*- coding:utf-8 -*-


"""
テキストを形態素解析して名詞・動詞・形容詞だけを抜き出したリストを返す
"""
def extract_word(text):
        import MeCab
        tagger = MeCab.Tagger('-Ochasen')
        node = tagger.parseToNode(text)
        word_list = []
        while node:
                if node.feature.split(",")[0] in ("名詞", "動詞", "形容詞"):
                        word_list.append(node.surface)
                node = node.next
        return word_list

"""
単語のリストを受け取って頻度分布のマップ(ヒストグラム)
を作成する。
list=["a", "b", "c", "a", "b", "a"]
だとすると、作成されるヒストグラムは
histogram = {"a":3, "b":2, "c":1}
という感じ。
"""
def make_histogram(word_list):
        from collections import Counter
        histogram = Counter(word_list)
        return histogram

"""
マップをコンマ区切りのデータで出力する。
"""
def print_map_to_csv(m):
        for key, value in m.iteritems():
                print str(key) + "," + str(value)

if __name__ == "__main__":
        with open("lyrics.txt", "r") as f:
                text = f.readline()
        word_list = extract_word(text)
        histogram = make_histogram(word_list)
        print print_map_to_csv(histogram)


そしてその出力の後順位の部分をまとめた結果がコチラ!
f:id:iruca21:20160103215206j:plain

う、うーん、1位は「I」かあ…、なんかもっと特徴のある単語が出てほしかった気もしますが、しょうがないですね。
91曲で253回の「Oh」っていうのもすごいなしかし。

f:id:iruca21:20160103215811j:plain

ちなみに、順位の高いものから上グラフのように並べてみたんですが、
一部の単語の登場回数が非常に多いんですね。(実はみんなそうだったりするんでしょーか?)

もしかして上の表に登場する単語を使えば西野カナさんぽい歌詞が僕にも書けるのでは?

Oh I love you 君は今何してる?
いつ会えるのどこにいるの Yeah baby
love LOVE Love 好き...

イケる…!Oh I love youだけで Oh(253回) I(407回) love(138回) you(352回) ですからね。
みなさんもぜひ試してみてください!

あ、全解析データが欲しい方は是非コメントでお知らせくださいね!ただしご利用は自己責任で!
そして他の歌手でもコレやってほしい!などのご意見もお待ちしています。
次はさだまさしあたりでやって西野カナと対比してみようかなあ。

というかこの記事書きながら西野カナさんの曲を聞いて歌詞を見すぎてファンになりかけてしまっています。かわいい。
ではではみなさん明日から正月明けの労働頑張りましょう。。。