Tech Blog

Information Technology / Machine Learning / Data Analysis / Big Data / System Integration

Mr.Childrenの歌詞分析(4): 単語の意味を考慮した、シングル曲のクラスタリング

主結果

Mr.Childrenのシングル曲を、歌詞を元にクラスタリングしてみました。 

1.単語ベースのクラスタリング

f:id:tkdmah:20130105213820p:plain

2.概念ベースのクラスタリング

f:id:tkdmah:20130105233845p:plain

 

考察

評価

共通する単語や概念を赤字で書いてみました。単語ベースでは、「時代」「社会」や「幸せ」についてきちんとクラスタが形成されていて、いいかんじです。一方で、概念ベースはパッとしないですね。。正解がないので評価はしにくいですが、どちらかと言えば単語ベースのほうがしっくりくる気がします。本来であれば、好調/不調、前向き/後向き、恋愛/社会といった形で分かれてほしかったのですが。さらに言えば、「君が好き」と「抱きしめたい」、「Sign」と「しるし」がくっついてほしいところでした。(関係ないですが、「Mr.Children「Sign」から「しるし」についての解説」では、「Sign」と「しるし」の関係が記号論を交えて述べられていて、とてもおもしろいです。) 

課題

歌詞のクラスタリングの難しさは、2つあると思います。

1つは、テキストが短いため、1つのドキュメントにおける情報量が少ないことです。テキストが短いと、tf*idf行列が疎になり、テキスト間の距離が均一となってしまいます。

もう1つは、期待するクラスタリング結果が、「水」や「光」といった分類ではなく、「期待」「悲観」「勇気」といった、より心理的な分類であるということです。

改善策

これらの問題を克服するためには、やはり2つの方策をとる必要があると考えています。

1つは、テキスト間の距離を計算するのに、単語同士の距離を考慮して計算することです。今回の手法では、「愛」と「幸福」の距離と、「愛」と「冷蔵庫」の距離は同じです。ところが、本来、これらの心理的距離は異なります。テキストが短く、情報量が少ないことをカバーするために、単語間の距離を考慮する必要があります。具体的には、WordNetのネットワークを利用すればよいと思います。

もう1つは、単語に感情を紐付けて解析することです。心理的な分類を行うためには、前もってどのような単語がどのような感情に関係するのかを知っておく必要があります。そのために、感情辞書と呼ばれるような辞書を別途用いることが考えられます。実際に、英語ではWordNet-Affectという感情を考慮したWordNetがあります。残念ながら日本語版はありませんが、類似の試みはあるようです。

今回はこれで一区切りにしますが、まだまだ改善の余地はあります。ひとまず、機械にすべて解かせるのではなく、軸の設定など人間の手も適度に介在させる必要がありそうです。また時間があれば、チャレンジしてみます。何かアドバイス等あれば、コメントお願いします^^

手法

解析は、以下のように行いました。歌詞のテキストファイルからRMeCabを用いてtf*idf行列を作成し、単語ベースの場合はそのままクラスタリングしました。概念ベースの場合は、WordNetを用いて概念ベースのtf*idf行列に変換してから、クラスタリングしました。クラスタリングでは、局所的重みに対数化索引語頻度、大域的重みにエントロピーを用いました。

f:id:tkdmah:20130105214619p:plain

詳しくは以下の記事をご覧ください。