初めまして、Aidemy研修生の照屋と申します。 突然ですが、皆さんは好きなアーティストのディグり方(探し方)ってどんな方法を使っていますか?
最近ではYouTubeや音楽発見サービス(Spotify、Apple Music…)、人によってはレコード店で物色という人もいると思います。私も色々な所にアンテナを立てて日々好きなジャンルのアーティスト達を探しています。
その中でも音楽発見サービスのSpotifyをよく利用するのですが、Spotifyが選んでくれるおすすめアーティストでたまに「えっこの人?」っていう人が入ってきたりします。実際に聞いてみても「うーん、好きなあのアーティストとテイストは似てるんだけど、違うんだよなあ」ってことがザラにあります。(笑)
そこで自分の好きなアーティストと繋がりのあるアーティストを可視化出来れば面白いディグりが出来るんじゃないかと思い、今回はSpotify APIというものを使って好きなアーティストの可視化したネットワークグラフを作っていきたいと思います。
目次
開発環境
・Jupyter Notebook 1.0.0
・Spotipy 2.4.4
・pandas as pd 0.23.4
・matplotlib.pyplot as plt 2.2.3
・networkx as nx 2.1
・python_louvain 0.11
import部分ははこのようになっています。
準備
まずはSpotify APIのspotipyを使用する準備をしていきます。 下記のサイトに飛んで、Spotifyのアカウントを登録して、 client_idとclient_secretを取得します。 https://developer.spotify.com/dashboard/login
これでspotipyを使える状態になりました。 アーティストの情報をpandasのデータフレームにいれて処理していくので、まずデータフレームを定義します。
これで準備はできました、早速ディグっていきましょう。
最初のアーティストを検索する
アーティストをディグる方法として、自分の知っているアーティストに関連した(曲のテイストやルーツなど)アーティストを調べていくという方法があります。今回は、この方法に沿って、最初に知っているアーティストを一つ挙げて、そこから関連を調べていくことにします。
今回は、ここ数年巷を騒がせているSuchmosを入れてみました。Suchmosは茅ヶ崎生まれの横浜シティボーイな感じで、幅広い層におすすめできるアーティストなので、聞いたことない人はぜひ聞いてみて下さい。(笑) open.spotify.com
知っているアーティストの名前をspotify上で検索すると、そのアーティストの固有IDを取得することができます。IDには、そのアーティストの名前のほかに、配信しているアルバムのタイトルや音楽ジャンル、認知度、関連するアーティストのIDなどが紐づけられています。 ここでは、その紐づいたデータを読み込んで、最初のアーティストのレコードとしてDataFrameに格納します。
これで最初のアーティストとそのアーティストに関連するアーティストの情報を取得できました。
関連アーティストの関連アーティストを探していく
次に、先ほど取得した最初のアーティストに関連するアーティストのIDを使って、さらに関連の関連…といったように調べていきます。家系図をたどるような作業で、とてもワクワクしますね。 このように、2章での処理と同様、DataFrameにアーティストの情報を格納していきます。
ただし、関連の関連の…と続けていくとアーティストの数は指数的に増大していくので、繰り返し数を決定するrelation_sizeはあまり大きい値にしないほうがいいです。最初のアーティストの認知度にもよりますが、5以上では処理が全然終わらなくなることが多い印象でした。
アーティスト同士の関連情報を辞書に格納
ここでは、取得した大量のアーティスト情報をネットワークグラフに表すためにアーティスト同士の関係を作らないといけないので、その準備をしていきます。 まず、どのアーティストが誰と関連しているかを表す辞書を作ります。 アーティスト関連辞書={アーティストの名前:[関連アーティストの名前1,関連アーティストの名前2,…..] }となるようにデータを格納していきます。
アーティスト間ネットワークを可視化する
最後に取得したアーティスト同士の関連情報を、ネットワークとして可視化します。可視化にはnetworkxというライブラリを使います。各アーティストを、その媒介中心性に比例した大きさを持つノードとし、エッジをつないでネットワークを描きます。
では、可視化したネットワークの全体をご覧ください!
みっ、見えない(笑)。 数が多すぎて、細かいところはわかりませんが、アーティスト同士がクラスタとしてグルーピングされていることがわかりますね。 では最初のアーティストにしたSuchmosの周囲のネットワークを見てみます。
ターゲットのSuchmosの周りには今のシティポップ界隈を賑やかすNulbarichやYogee New Wavesなどがいます。 その中でもHouse Popに寄ったIriやChelmicoといったアーティストを介することでtofuBeatsやPUNPEEといったPopsの面々に繋がります。
Suchmosからくるりを介することでエレファントカシマシやチャットモンチー、ELLEGARDEN、アジカンといったJ-pop,J-rockに繋がっていくことが分かりますね。
まとめ
今回は、見た目のわかりやすさとグラフの描画限界などを考慮して邦楽で関連アーティストの取得量にも制限を掛けていますが、本当にSpotifyの全力を出して制限を掛けずにグラフを描画出来たら、音楽体系のネットワークをグラフに出来るのでもっと面白いものが見れると思います。
今後はアーティストごとのジャンル情報や楽曲の音データの特徴量などの要素も考慮したネットワークを可視化してさらに、ディグりツールとしての性能を追求していきたいと思います。 ここまでご覧くださってありがとうございました。