
邦楽に「人生」とは何かを聞いてみた
大学院生の「かずのすけ」です。
バイトで受託開発業務に関わっておりまして主にPythonを扱っています。
とはいえ私がプログラミングを本格的に始めたのは2020年4月からです。
バイトを始めてから勉強し始めました。
今回はバイトで得た技術力を元に、歌詞解釈を行った結果についてご紹介したいと思います!!!!
やったことまとめ
先に何をやったのか簡単に記載しておきます。
・B'z、乃木坂、宇多田ヒカル、ミスチルの歌詞を分析
・Word2vecを用いて歌詞をベクトル化
・cos類似度から「人生」という単語の類似語を算出
・類似語からそれぞれのアーティストにおける「人生」を考察
↑こんな感じのことをやりました。
※ この記事はバイト先のアカウントでも公開しています。
背景
私は大学でB'z同好会なる団体に所属しています。
このサークル内には、歌詞解釈が得意または大好きという人が一定数います。
実際、”歌詞解釈Cafe”などといったイベントもあるくらいです。
飲み会では歌詞について白熱した議論がなされている場面をよく見ます。
そんな中、私はというと…歌詞解釈が苦手です。
もともと国語力が高くないので、歌詞みたいなつかみどころのない文章から特徴量を抽出する能力がありません。
また「個人の経験に基づいて理解した主観性の高い解釈を話し合ってるなぁ。なんかもやもやするなぁ。」と感じてました。
歌詞解釈してる人の議論を聞いてても結局よくわからんところに着地することが多い気がしてます。
多様性が声高に叫ばれる世界においては、他人の意見を聞き入れるという行為は非常に重要なのかもしれませんが、どうも興味が湧きません。
「もっと納得感のある歌詞解釈はないものか……?」
大学4年間、サークルのイベントに参加する度にそう考えていました。
そんな時、バイト先の代表から『自然言語処理』を教えていただきました。
「言葉を数値化して機械で処理できるとは…。これだ!!!!!」
そんな風に思った記憶があります。
「歌詞解釈に自然言語処理を用いればより客観的に歌詞を評価することができるのではないか?」
「みんなが納得しやすい解釈ができるのではないか?」
そんな思いから今回の『自然言語処理を用いた歌詞解釈』に取り組んだ次第です。
歌詞解釈と自然言語処理
歌詞解釈に自然言語処理を用いるメリットは以下の通りです。
・歌詞解釈に客観性を付与できる
・客観的な指標があることで歌詞解釈のハードルが下がる
・専門外のアーティストに関する考察が容易になる
・アーティスト同士を比較することでそれぞれのアーティストの立ち位置をはっきりさせることができる
機械が歌詞という曖昧なものから特徴量を抽出してくれるので、国語が苦手だった人でも歌詞解釈に取り組みやすくなるのではないかと思います。
(歌詞解釈が得意な人は、歌詞というややカオスなものから特徴量を抽出するという作業を自分でできてしまいます。すごい…。)
解析
今回、解析に用いたのは「Word2vec」というモデルです。
Word2vecが何をしているかを一言で表現すると
単語をベクトル化
になります。
「ある単語の意味はその周辺語をみればわかる」という分布仮説に基づき、入力語の周辺語を予測するタクスを行い、単語のベクトルを求めます。
ベクトルは’大きさ’と’向き’を持っています。
Word2vecの解析ではその’向き’に着目してターゲット語の類似語を出力します。
すなわち
同じ方向を向いている単語は似ている
と考えます。
そして同じ方向かどうかは2つのベクトルがなす角をみれば分かります。
二次元空間上で考えると、上の図のようになります。
そして2つのベクトルがなす角θについてベクトルの内積を取れば、cosθの値が求められます。
類似度を評価する際には、このcosの値をみることになります。
Word2vecの詳しい説明については、先人たちがめちゃくちゃ分かりやすい説明をしてくれていますのでそちらをご確認いただければと思います。
B'zの歌詞をPythonと機械学習で分析してみた 〜Word 2 Vec編〜
今回と同じようにB'z歌詞分析をWord2vecを用いて行っている方もいました。とっても参考になるので興味ある方はぜひ参照ください。
解析の大きな流れ
1.スクレイピングにて各アーティストの歌詞データを取得
Pythonによるスクレイピングでネット上から歌詞を取得し、csvファイルに保存します。
2.形態素解析を行い、不要語(助詞など)を削除
Word2vecでは単語単位で学習を行います。そのための準備として形態素解析によって文章を単語に区切ります。
形態素解析とは、言葉が意味を持つ最小の単位(形態素)まで文章を分割することを指します。
実際に"ultra soul"の一節を形態素解析した結果が以下の画面になります。
意味を持たない語である助詞などはあらかじめ削除しておきます。
3.Word2vecにて学習を行い、単語をベクトル化
上で単語に区切ったテキストデータをWord2vecに渡して学習を行います。
Word2vecについてはgensimというオープンソースライブラリーを利用すれば簡単にそのモデルを作成することができます。
4. 「人生」の類似語上位5つを出力
出力の画面は上のような感じになります。
結果
今回はそれぞれのアーティストについて「人生」という単語の類似語トップ5を得ました。
その結果が以下になります。
B'z
B'z
1. ひとり
2. つづける
3. 裏切ら
4. 男
5. 夜明け
人生に裏切りはつきものみたいです。厳しい世の中ですね笑。
「つづける」という言葉が入っている点はB'zの歌詞的にいい感じだなと思いました。
「光芒」という楽曲がありますが、その歌詞は以下のような感じです。(一部抜粋)
光芒
作詞 稲葉浩志
むなしいBlue 僕を包み込んで行く道を閉ざそうとする
自分を救う それは自分なのか?
いまさら答えはいらない
消えないTruth すべてを請け負って
半歩でも進めるなら
景色は少しずつ変わってゆく
光を求めあるき続ける
君の情熱がいつの日か
誰かにとっての光となるでしょう
誰かにとっての兆しとなるでしょう
この歌詞からも分かるようにB'zは困難がありつつも愚直に前を向いて進んでいくといった姿勢をとっていることが多いです。
今回の解析で出てきた「つづける」という言葉はそれを代表しており、なかなかいい感じに評価できているのではないでしょうか!?
(ちなみに光芒の歌詞には「つづける」という言葉は出てきますが、「人生」という言葉はでてきません。)
乃木坂46
乃木坂
1. 自然
2. 決心
3. 辺り
4. 言わ
5. 恋人
「恋人」という言葉が目を引きます。
乃木坂自体にあまり詳しくないので深い考察はできませんが、人生を長いスパンで捉えた曲はあまりない印象です。
どちらかというと歌い手(10代から20代の女性)に合わせて、歌詞に出てくる登場人物も若い人のイメージがあります。
そうであればそういった人たちにとっての人生では「恋人」が大きな部分を占めていても納得がいきます。
〈追記〉
乃木坂好きの友人に聞いたところ、乃木坂の曲は
・恋愛系の曲
・自分の気持に正直に生きろよ系の曲
が多いらしいです。
そうであれば1番目の「自然」という単語も納得のいく結果です。
外野の意見に抑圧された人生ではなく、自分の意見に従った状態、すなわち「自然体」を追求する人生を歩んでいこうぜ。
そんな解釈ができるのではないかと思います。
宇多田ヒカル
宇多田ヒカル
1. 嫉妬
2. 誓い
3. 嘘
4. 私
5. 先
個人的に一番、現実世界に即しているのではないかと思います。
「嫉妬」や「嘘」など人間のダークな部分が顕になっています。
リアリティがあるとはいえ、こんな世界には住みたくないですけどね笑。
ミスチル
ミスチル
1. 救い
2. 慣れ
3. 愛
4. 言い
5. 闇
この5つの言葉から人生を判断するのは難しいですが、他に比べて特徴的だったのが「愛」という単語が含まれていた点です。
他のアーティストで出てくる単語は自分自身に向けたものであったり、他人に向けたものであったりと、一方方向でした。
ミスチルだけが「愛」という自分と他者という双方向性を加味した言葉を使っている点は非常に興味深いです。
ミスチルにとっての「愛」はどういったものなのか…。
その点が気になりますが、ここに関しては他のアーティストも含めて「愛」というテーマでまた執筆できたらと考えています。
〈番外編〉
Word2vecを用いて単語をベクトル化しましたが、それによって単語同士の足し算、引き算が可能になります。
よく使われる例ですが
「王様」-「男」+「女」=「王女」
のような計算ができるのです。
今回は、人生から「愛」という要素を取り除いたらどうなるのかをB'zについて検証してみました。
「人生」-「愛」=??????
B'z
1. おくれよ
2. 裏切ら
3. crazy
4. 描い
5. つらい
愛がない人間は裏切りにあうようです。
また愛のない人生はつらく、"crazy"、すなわち頭がいかれちゃうと読み取れます。
当然かもしれませんが、人間が人間らしく生きるためにも誰かを愛し、誰かに愛されるということが非常に重要なことが分かりました。
まとめ
Word2vecを用いてアーティストにとっての「人生」をみていきました。
これが歌詞解釈の全てだとは思いませんが、その手法の1つとして取り入れてみる価値はあるのかなという印象です。
今後は歌詞をクラスタリングして、自分の好きな歌詞に類似する歌詞の曲をおすすめする機能とかを作っていけたらなと思ってます。
最後まで読んでいただきありがとうございました。