この前の続きです。
【解析中】last.fmAPIを使って、電波ソングアーティストの一覧を取得してみた
last.fmの"denpa"タグのアーティストの上位35アーティスト(本当はもっとやりたかったけどAPI切れた)のリストを取得、その35アーティストそれぞれの類似アーティストを取得して、最初のリストの中にあれば線でつなぐ+類似度も取れたので重み付けをしています。
※クリックすると大きく見えます。
同人勢が非常に強固に繋がっているのは、参加メンバーが被っていたりするからでしょうね。その割にSHAKING PINKがメンバー(ココ、ななひら、桃箱)とあまりつながってないのが意外ですが。
※枝の太さはAPIにあった"match"という変数を使っているので、その意味がわからないとちゃんとしたことは言えませんが。
また、でんぱ組.incがネットワーク上で孤立してるのが意外でした。そこで類似アーティストを見てみると、「いずこねこ、私立恵比寿中学、Bis、ひめキュンフルーツ缶、アップアップガールズ(仮)」となっており、電波ソングファンよりアイドルファンのほうがよく聞いているようです。
課題点
最初のアーティストのリストを"denpa"タグで取得しましたが、それだけでは不十分な気がします。例えばアニメ関連のアーティストでは、類似アーティストとして七森中ごらく部や後ろから這いより隊Gが出てきますが、これらのアーティストはdenpaタグに含まれていないためネットワークには出てきません。
また、あべにゅうぷろじぇくとと佐倉紗織など、人によってユニット名かボーカル名のどちらで登録しているのかがまちまちのものもあります。その辺をきちんと集計するために、ちゃんとしたアーティストのリストを作り、別名で同じアーティストを指しているもの(画像だと桃井はることmomo-iなど)を整備するともっとちゃんとした結果になるんじゃないかと思います。
上の二つの問題は、どちらかというと電波ソング固有の問題なので、"rock"など別のタグで調べるのも試してみたいです。それなら別名の同アーティストとかややこしいことが少なそうです。(メンバーチェンジの多いバンドがあると別の問題も出てきそうですが)
もう一つ、もっと数の多いネットワークを描いて、コミュニティ分割とかもやってみたいですね。もしかすると電波ソングのサブジャンル的なものも分かるかもしれません。
なんにせよ、ちょっと適当に描きすぎてる気がするので、もっとちゃんとしたいですね。プログラム詳しい方いませんか?
ほとんど誰も興味がないであろうPythonコード
import urllib
import json
import networkx as nx
#いずれはちゃんとファイルとして出力するつもり
#import pandas as pd
lastAPI = '(自分のAPIキー)'
method = 'tag.gettopartists'
lformat = 'json'
tag = 'denpa'
limit = "1000"
url = 'http://ws.audioscrobbler.com/2.0/?method='+ method +"&limit=" +\
limit + "&tag=" + tag + "&api_key=" + lastAPI + "&format=" + lformat
f = urllib.urlopen(url)
url_open = f.read()
artlist = json.loads(url_open)
artlist2 = artlist["topartists"]["artist"]
#取得したアーティストの数を確認
print len(artlist2)
#本当は上位50アーティストのつもりだったけどAPI切れた
#API切れたのでそのままprintしたやつをコピペ+Excelで整形
for x in range(0,50):
url_similar = "http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=" + artists[x].encode() +\
"&api_key="+ lastAPI +"&format=json"
f = urllib.urlopen(url_similar)
url_open = f.read()
similar_artists = json.loads(url_open)
#アーティスト 類似アーティスト 類似度(?)
sim_list = similar_artists["similarartists"]["artist"]
for n in range(0,10):
print artists[x]+ "\t",
print sim_list[n]["name"]+ "\t",
print sim_list[n]["match"]
実行結果
1位のななひらさんから順番に、類似アーティストが10個ずつプリントされます。この結果を整形して.netファイルにして(この部分もプログラム化するのは今後の課題…)Gephiというオープンソースのネットワーク可視化ソフトにぶち込んで↑の画像を作りました。
ななひら なゆ 1ななひら ゆきまめ 0.926033
ななひら ココ 0.899534
ななひら ちぃむdmp☆ 0.86588
ななひら 桃箱 0.842528
ななひら とろ美 0.664193
ななひら 愛原圭織 0.532495
ななひら おでんぱ☆スタジオ 0.518225
ななひら ひなうさ 0.491373
ななひら ほたる 0.485949
U とろ美 1
U ココ 0.93547
U おでんぱ☆スタジオ 0.664354
U 真優 0.444543
U 新堂真弓 0.358808
U み~こ 0.351835
U 33.turbo 0.340625
U ひなうさ 0.295192
U doubleeleven UpperCut 0.27304
(以下略)