おはようございます、そしてこんにちは。JMP Discovery Summitにて、「感情分析とテキスト分析を用いた21世紀の音楽トレンドの分析」という研究プロジェクトを発表するために来ました。私はスリチャンドリカ・ガッデです。研究パートナーのデラニー・キャロルと一緒にここにいます。私たちはオクラホマ州立大学でビジネスアナリティクスとデータサイエンスのコースを受講している大学院生です。
このプロジェクトの概要を簡単にご説明します。このプロジェクトは、オクラホマ州立大学の大学院課程の一環として実施されました。このプロジェクトの目標は、歌詞の感情とテキスト特徴を分析し、音楽トレンドの経時的な変化を特定するとともに、楽曲の商業的成功に影響を与える特徴を検証することです。このプロジェクトでは、JMP Pro 18 Student's Editionを使用しています。ワークフローについては、分析の準備としてデータを前処理するという標準的なワークフローに従いました。基本的には、いくつかの列をクリーンアップし、いくつかの代入を行いました。これについては後ほど説明します。次に、歌詞分析に移り、感情とテキスト分析を行い、EDAでこれらの特徴を探索して変化とトレンドを特定します。最後に、人気やチャートでの持続性など、商業的成功の特徴を予測するための予測モデルをいくつか構築します。最後に、検証を行います。
このデータの概要を簡単にご説明します。データセットはKaggleから入手し、BillboardのHot 100チャートを調査しています。これは、アメリカにおける楽曲のヒットを示す業界標準チャートです。私たちは主に、Billboard Weekly Chartデータセット、Spotifyのオーディオ機能、そして2020年から2022年のBillboard Hot 100楽曲の歌詞データセットという3つのデータセットを使用しています。これら3つのデータセットを統合し、変化とトレンドを調査して特定しました。これは基本的に、最も人気のある楽曲にどのような音楽トレンドが存在していたかを確認するための基盤となります。
データの前処理では、Pythonを使っていくつかのテキスト列(曲名とアーティスト名)をクリーンアップし、均質化することでデータセットのマージを容易にしました。次に、いくつかのオーディオ特性において欠落している特徴量を特定し、JMPを用いた平均値補完法で補完しました。最後に、チャートに載った合計週数、最高順位、top_tenなどの変数について、特徴量エンジニアリングを行いました。これらについては後ほど詳しく説明します。以上がデータの前処理でした。
では、歌詞の分析を始めましょう。このフェーズでは、基本的に、2000年から2022年までの感情や歌詞の複雑さがどのように変化したかなど、いくつかの質問に答えようとしています。あるいは、ジャンルやジャンルのトレンドが長年にわたってどのように変化したかなどの質問をします。この分析では、JMP内のPythonスクリプトを使用して、感情分析とテキスト分析を実施しました。感情分析では、基本的に…感情スコア(ポジティブとネガティブ)を計算するVaderを使用しました。これは、テキストの全体的な感情を識別するのに役立つ、語彙集であり、ルールベースの感情分析ツールです。これを使用して、歌詞の感情を識別します。Vaderポジティブ、Vaderネガティブ、Vaderニュートラル、Vader複合の4つの特徴量を作成しました。
次はテキスト分析です。この分析では、TTR、Hapax Legomena、語彙密度、歌詞の複雑度の4つの特徴量を作成しました。TTRは基本的に、全単語数に対する固有語の数です。Hapaxは基本的に、テキストコンテンツ内で一度だけ出現する単語の数を数えるものです。語彙密度は基本的に、名詞、動詞、形容詞などのコンテンツの割合です。これにより、歌詞の複雑さに実際には寄与しないキャッチーなフレーズやつなぎフレーズが除外されます。歌詞の複雑さは、基本的に上位3つの要素の合計です。Vader compoundも同様で、全体的な感情(肯定的から否定的、肯定的)を示します。これらが作成した8つの特徴量です。JMPに進み、これらの特徴量が時間の経過とともにどのように変化するかを確認します。
まず、Vaderの特徴について見てみると、Vaderの肯定的な側面が見られます。これは比較的同じままです。2005年から2015年の間には多少の変動がありますが、2022年末には2000年とほぼ同じままでした。Vader Neutralについて見てみましょう。このVader Neutralは、テキストに含まれる中立的なコンテンツの量です。わずかに減少し、その後2021年にわずかに増加していますが、2000年から2020年にかけて歌詞の全体的な中立的な要素がわずかに減少していることがわかります。Vader Negativeについて見てみると、これは確実に増加しています。2000年から2020年にかけて大幅に増加し、その後減少していますが、その後、Vaderの全体的な否定的な要素が増加しています。Vader compoundは基本的に全体的な感情ですが、確かにわずかに減少していることがわかります。
2006年から2015年の間は再び変動しましたが、2022年末までにわずかに減少しました。テキストの特徴についても、長年にわたり、TTRは2020年以降、そして2020年頃に確実に上昇しています。HapaxもTTRとほぼ同様の傾向を示しています。これは主に、同様の語彙の多様性を測定しているためです。HapaxはTTRとほぼ正比例しているため、非常に似た傾向を示しています。語彙密度、つまり内容語は、2000年から2022年にかけて確実に増加しており、これは歌詞で使用される語彙が増え、より多様化したことを意味します。歌詞の複雑性スコア(上位3つを集計したもの)は、2020年末までに確実に増加しています。現在、ジャンル全体のVader複合スコアの平均値を見ています。これは、さまざまなジャンルにわたる全体的な感情です。アダルトスタンダード、コメディ、K-POP、ソウル、ワーシップといったジャンルは、それぞれのジャンルのテーマに沿った感情表現が非常に高いことがわかります。Vader複合語が最も少ないのは、ラップ、パンク、ラテンです。これらはVader複合語が最も少ないジャンルです。このことから、ジャンルが歌詞全体の感情表現に影響を与えていることがわかります。パンクやロックといったジャンルは、性質上ネガティブなため、全体的な感情表現は明らかに低くなります。
次の項目に移りましょう。ここでは、ジャンル全体におけるVaderネガティブとVaderポジティブの平均を視覚化しようとしています。視覚的に、これらのジャンルすべてにおいてVaderポジティブがVaderネガティブよりも高いことがすぐにわかります。これは、ジャンルが非常にネガティブであるにもかかわらず、ポジティブな要素、つまり曲の中にポジティブな言葉が含まれていることを意味します。パンクとラップはネガティブな要素が最も高く、子供向け音楽や大人向けのスタンダードはネガティブな要素が最も低いことがすぐにわかります。これは理にかなっています。パンクとラップは怒りや反抗、葛藤などに関する歌詞が多く、子供向け音楽に比べてネガティブな性質が強いからです。子供向け音楽はポジティブな要素が少ないはずです。これは、音楽のトレンドが年やジャンルによってどのように変化したかを探るために作成したすべての特性の平均を示す要約表です。
これでヒートマップを作成しました。サイズは曲数に基づいています。ポップはビルボードトップ100チャートにランクインしている曲数が多いことから、かなり支配的なジャンルであることが一目でわかります。ポップは一貫してポジティブな傾向にあると言えるでしょう。Vader係数は年間を通して高く、リーチも高いため、ビルボードホット100チャートにランクインしています。ラップには多少の変動があることがわかります。2020年末までにネガティブな傾向が強まりましたが、ヒップホップやカントリーミュージックは、かなり一貫してポジティブな感情を示しています。これらは、このヒートマップを使って得られる洞察の一部です。こちらは、ジャンルと年をまたいでTTRを確認した別のヒートマップです。このTTRを見ると、ポップ、ラップ、R&B、ヒップホップ、カントリーミュージックなどはTTRがかなり高く、2000年から2022年までほぼ一貫していることがわかります。一方、ワーシップや大人向けのスタンダード、子供向けの音楽は、基本的にTTRが最も低く、変動もほとんどありません。これは、これらのジャンルは深い感情を表現しようとしていないため、歌詞の複雑さが非常に少なく、非常にシンプルであることを示しています。これは、このことから得られる洞察です。
私たちが答えようとしているもう一つの質問は、2010年以前と以後で、文化の変化に基づいて、音楽にも大きな変化があったかどうかです。2010年以前と以後です。このために、私たちは2010年以前と以後のすべての年と曲をグループ化する別の列を作成し、これをANOVA分析で使用しています。この一元配置分析では、これを2010年以前と以後の語彙密度と比較し、語彙密度に大きな変化やシフトがあったかどうかを確認していました。これについて、有意値は0.001未満であり、これは有意な変化があったこと、および最初の視覚化から2020年末までに語彙密度が確実に増加したことを意味します。この変化は本質的に有意であり、歌詞の語彙密度は2010年以前の方がそれ以降よりも単純でした。 2010 年の前後で全体的な感情に大きな変化があったかどうかを確認するために、Vader 化合物で同じ分析を試みました。P 値は 0.09 でした。つまり、変動はあったものの、全体的な感情に大きな変化はなかったということです。つまり、前後を比較すると、大きな変化はありません。
TTRについても同様の分析を行い、p値は0.033で大きな変化があったかどうかを確認しました。繰り返しになりますが、TTRも2010年以前とそれ以降で大きな違いは見られませんでした。とはいえ、3つの特徴量全体で有意な変化があったかどうかも確認しました。そのために、MANOVA分析を使用しました。この分析では、2010年以降、Vader複合語は実際に減少しており、全体的な感情が低下し、語彙密度が増加しているのに対し、TTRはほぼ横ばいであることがわかります。視覚的には変化があったことは確認できますが、定義済みセット全体と照らし合わせて、有意な変化があったかどうかを確認したところ、前後でF検定が0.001未満でした。つまり、これら3つは2010年の前後で変化したということです。これで、第一段階である歌詞分析は終了です。全体的な調査結果としては、ジャンルと全体的な感情は連動しており、全体的な感情はジャンルに基づいて増加または減少し、また、2020年末までに歌詞の複雑さが増加していることが観察されます。
それでは、モデルの組み立てというプロジェクトの残りの半分について、Delaney に引き継いでもらいます。
Srichandrikaさん、歌詞分析のデモをありがとうございました。それでは、テキスト分析を予測モデルにどのように活用できるかを見ていきましょう。この分析では、複雑なデータに対応できるブートストラップフォレストモデルを使用しました。感情、歌詞の複雑さ、ジャンル、年代といった音楽的特徴は、線形回帰のような単純なモデルでは捉えられない非線形的な相互作用を示す可能性があります。JMPは変数の重要度ランキングも生成するため、人気度やリターゲティング期間に最も影響を与える要因を把握するのに役立ちます。また、ブートストラップフォレストモデルは、異なるツリーの結果を統合することで、過学習を防ぎます。早速、ライブデモをご覧ください。
週間ビルボードデータと音楽オーディオの特徴に加えて、歌詞データのテキスト感情と分析を表す変数があります。私が作業しているこのデータセットには、週間ビルボードチャートデータが含まれています。レコード数はかなり多く、約13万件を超えています。
まず、データの傾向とパターンを調べるために、探索的データ分析を始めます。まずは変数の分布を表示して、データがどこにあるかを確認します。分析画面を開いて分布を確認するだけです。ここではすでにすべての変数を設定していますが、「OK」をクリックして、はるかに見やすいスタック形式で確認します。そして、変数の分布を確認できます。こちらがジャンルです。約25のジャンルがあり、カウントで並べ替えることもできます。ポップは他のジャンルの中で圧倒的に人気が高く、カントリーとラップがそれに続きます。次に、グラフビルダーを使用して時系列の視覚化を作成します。ジャンルのカウントが時間の経過とともにどのように変化するかを確認したいと思います。これはグラフビルダーで作成できますが、私はすでにすべての設定をそこに入力しています。 X軸にweek_IDを入力し、ジャンル別に色分けして、ジャンルとオーバーレイを設定します。これで全て同時に表示できます。「OK」をクリックしてください。ここにはたくさんのジャンルが表示されていますが、これは年ごとの推移です。こちらはポップ、こちらはラップです。2015年以降、ポップとラップがチャート上で最も人気のある位置を争っているのがわかります。
EDAでは、すべての数値変数を用いて相関行列を作成し、互いに高い相関を示す可能性のある予測変数が存在するかどうかを確認するのが好きです。これは、多変量ツールと多変量法を使って作成できます。分析を再起動して、すべての数値変数を入力して「実行」をクリックします。相関の高い関係が強調表示されます。ここでは、エネルギーと音量の間に高い相関関係があることがわかります。多重共線性を低減するため、モデルにはこれらのうちの1つだけを含めるようにします。異なる変数間の関係を確認するために私がよく実行する統計検定は、一元配置分散分析です。
先ほど、データセットには約25の主要なジャンルがあることを確認しました。異なるジャンルの平均値に有意差があるかどうかを確認したいと思います。まず、ジャンルによって寿命やチャート掲載週数がどのように異なるかを確認しました。「Y×X」のフィットを開き、Xにジャンルを入力して、チャート掲載週数を計算します。「チャート掲載週数」ではなく「OK」をクリックして、平均値分散分析を行い、平均値を比較します。そして、各ペアを比較します。下の図では、P値が有意であることを示しています。
接続文字レポートに戻ると、これは異なるグループまたはジャンルが互いにどのように異なっているかを示しています。ここでは、チャート寿命の平均値が最も高く、他のすべてのジャンルとは統計的に異なることがわかります。次のジャンル、インディーポップ、ポップ、ポストグランジについても同様です。これらのジャンルは、他のどのジャンルとも文字を共有していないため、統計的に優れています。ジャンルごとにピーク位置を確認する場合も同じプロセスを実行できますが、ピーク位置変数をYに使用することを除いて、同じ方法で構築できます。接続文字に関しては、これらのジャンルがチャートでより高いピークを示すことを示す、より小さな平均値を探すことができます。興味深いことに、Kポップは平均値が最も小さく、チャートの上位に表示される可能性が高いことを示しています。これは、寿命のANOVAテストを見ると、Kポップがこのリストでそれほど高くないことも興味深いことです。これは、K-POP は、最初は人気が出てピークを迎える力は強いが、持続力があまり強くなく、すぐにチャートの順位を下げてしまうことを示しているのかもしれない。
Srichandrika がテキストと感情の変数を使って行ったように、ANOVA テストを実行して、ジャンルと他のグループの違いを確認することもできます。EDA が完了したら、予測モデリングに進む準備が整いました。ただし、まずは各応答変数に検証列を作成する必要があります。JMP Pro では簡単にこれを行うことができます。予測モデリングに進み、検証列まで進むと、それぞれに 1 つずつ作成します。寿命に関するモデルと、曲がトップ 10 に入るかどうかを予測する分類モデルの 2 つのモデルを構築します。応答の 1 つであるチャート掲載週数で層別化します。60、20、20 に分割します。複数の列を作成するので、どの列がどの列であるかがわかるように名前を付けます。1、2、3、4、5 のランダムシードを実行します。これで作成されます。
上位10件については既に作成済みなので、ここでは説明しません。検証列ができたので、予測モデルの構築を始めましょう。JMPにはブートストラップフォレストのオプションがあり、簡単に使用できます。分析を再起動します。応答変数をYに、次にすべての予測変数を入力し、最後に作成した検証列を必ず入力します。プログラムの実行時間を短縮するため、多くのグループに分かれたカテゴリ変数をモデルから除外することにします。例えば、パフォーマーがチャート寿命にどのような影響を与えるかを調べたいのですが、効率的なモデルを構築するにはデータセットにパフォーマーが多すぎます。これらの変数を入力として含める際には、多重共線性を避けるために含めない変数も考慮する必要があります。ここでは、多重共線性を避けるため、音量ではなくエネルギーを含めています。検証列が設定されていることを確認し、「OK」をクリックします。
ブートストラップフォレストの指定ボックスがポップアップ表示され、モデル内のツリーの数と、各分岐でランダムに考慮される予測変数の数を尋ねられます。ツリーの数、ツリーの深さ、各ツリーが参照するデータ量、分岐のランダム性を指定できます。これらの設定をいろいろ試すことで、精度、実行時間、過剰適合のバランスを調整できます。まずは、各設定の推奨値のまま「OK」をクリックして結果を確認してみましょう。「OK」をクリックすると、JMP が複数の決定木をバックグラウンドで構築しているため、このステップには通常数秒かかります。少しだけ時間をかけます。これはかなり大きなデータセットなので、実行時間にも影響します。さあ、始めましょう。ここで、r² は 0.89 で、これはすでにかなり良い値です。結果を改善できると思われる場合は、異なる指定でモデルを再実行し、状況を確認できます。ここで赤い三角をクリックして列の寄与度を計算すると、変数がチャートの持続期間にどのように影響しているかがわかります。ここではピーク位置が最も影響力のある変数です。これは理にかなっています。ピーク位置が高い曲は一般的にチャート上で長く残る傾向があるからです。
2つ目のモデルについても同じことをします。どこにありますか?ただし、Y変数には2値変数を使用し、その応答変数の検証を必ず設定します。また、ここでは「ピーク位置」は除外しました。これは、トップ10変数を作成するためにこの変数を使用したためです。これもすべてそのままにして、結果を見てみましょう。分類モデルの出力は、異なる検証日または列に対する相関行列を提供します。また、このモデルのROCとリフト曲線を表示して、モデルのパフォーマンスとクラス間の識別精度を評価することもできます。0.98という値はこの点でかなり良好です。これで、プロジェクトで使用したJMPワークフローのウォークスルーは終了です。実際には、このモデリングは、アーティスト、プロデューサー、またはレコードレーベルが、楽曲のどの特徴が成功に最も影響を与えるかを理解し、業界のトレンドを予測するのに役立ちます。このプロジェクトは、予測モデリングやクリエイティブ分野において、JMPをテキストデータや感情データに適用する方法の一例にすぎません。
バンドプログラムを通してご指導とご鞭撻を賜りましたチャクラボルティ博士とマクゴー博士に、心より感謝申し上げます。お二人の励ましと深い洞察力は、私たちの経験を形作り、技術的にも専門的にも成長させてくれました。お二人が私たちに与えてくださった時間とサポートに感謝し、お二人の指導の下で学ぶ機会を得られたことに深く感謝いたします。ご清聴ありがとうございました。これでプレゼンテーションを終了いたします。