nosnosnos nosnosnosnosnosnosnosnosnosnosnosnosnosnosnos

shadowverseのデッキクラスタをt-sneで可視化してみる

shadowverseのデッキクラスタをt-sneで見てみる
以前かいたfasttextを使ってクラスタリングが出来るんじゃないかと思い書いてみました

データ取得


Cygames公式のデッキ構築用サイトhttps://shadowverse-portal.com/からデッキ情報を取ります
と言っても、他人が作ったデッキの検索機能はないので、twitterに投稿された共有用のURLからデッキを復元します

@~~~~
https://shadowverse-portal.com/deck/1.4.62sZ2.62sZ2.62sZ2.5_394.5_394.5_394.62sac.62sac.6I772.6I772.6I772.6LxG2.6LxG2.6LxG2.5_38w.5_38w.5_38w.62vkA.62vkA.62vkA.6AaSQ.6AaSQ.6AaSQ.68zBM.68zBM.6KPc2.6KPc2.62sZM.62sZM.62sZM.6EI-M.6EI-M.6EI-M.6M2ao.6M2ao.6M2ao.6EQIo.6EQIo.6EQIo.61SE6 
原初サタン組んで見ました。意見募集してます

↓ URLから取れる情報はこちら

1.4 → キャラクターID
62sZ2-61SE6 → カードID(.で区切られカード枚数分書かれている)


キャラクターID一覧

1.1 → エルフ,アリサ
1.2 → ロイヤル,エリカ
1.3 → ウィッチ,イザネル
1.4 → ドラゴン,ローウェン
1.5 → ネクロマンサー,ルナ
1.6 → ヴァンパイア,ユリアス
1.7 → ビショップ,イリス  

こちらのデータをTwitter SearchAPIで3000件ほど取得
直近2週間しかとれないようなので数を揃えようとすると時間が掛かります

fasttextでカードを分散表現に変換する


fasttextで文章を学習するときように、カードIDを区切ってデータに出力します

63E_G 63E_G 63FiQ 63FiQ 63FiQ 63HfQ 63HfQ 6Avi6 6Avi6 6EmHC 6EmHC 6Ei7Q 6Ei7Q 63HQQ 63HQQ 6AtG0 63Kb4 63Kb4 673s2 673s2 6At-a 6At-a 6EojI 6EojI 6EojI 63Kaw 63Kaw 63HQu 63HQu 63MII 63MII 67370 63JsW 63JsW 63KbE 63KbE 6AviG 6AviG 6EmHM 6EmHM
5_394 5_394 5_394 62sac 62sac 66giC 66giC 66giC 6AaSQ 6AaSQ 6AaSQ 5zbeY 5zbeY 5zbeY 5_39E 5_39E 6ELQm 6ELQm 6ELQm 6AY0A 6AY0A 6AY0A 62xRs 62xRs 62xRs 6ENsi 6ENsi 6ENsi 5_4sS 5_4sS 5_4sS 5_5bA 5_5bA 62saI 62saI 62zto 62zto 694Vo 694Vo 694Vo

次元数は時に気にしてなかったので200ぐらいでやりました

./fasttext.exe skipgram -input deck.dat -output ../fastTextJapaneseTutorial/model -dim 200

ID,vecが対になったmodel.vecが出力されるので、これを使用します

t-sneにつっこむ


各デッキ情報とカードの分散表現が取れたので、デッキ毎の分散表現を作ります
今回はそのまま、デッキに組み込まれているカードのベクトルを加算したものを使用しました

デッキ毎のベクトルが取れるのでt-sneに入れて2次元にプロット

全デッキ

img

ウィッチ

img

左上と右端、下に塊があります



エルフ、ロイヤル

img

青がエルフ 茶色がロイヤル

共通カード多めのデッキが綺麗に固まってるのが面白い
shadowverseやってないのでデッキ構成違うってことぐらいしかわからない・・レジェンドってなんだ・・?
shadowverse詳しい人に教えてほしい
あと勝率のデータもあったら見やすかったかも

こちらにツールを公開しているのでよかったら遊んでみてください Github