うまい飯食いたい

うまい飯食えるようにガンバリマス

pixivのイラスト検索の結果を使う(その3)

つづきのつづき 

 

概要としては,

pixivのイラストにつけられてるタグが共起してたら関係ありそうだし,ネットワークを描いてみよ

といった流れ

 

pixivの野良apiから「艦これ」検索結果のイラストをとってきて,タグ共起を計算

一定以上のjaccard係数の組でエッジを形成し,ネットワークにしました

 

前回からの変更点

ビスマルク取れてなかったのを解決

単純に艦娘名の辞書に,「Bismarck」で登録していてマッチングしなかったのが問題

 

艦娘名》(艦隊これくしょん) をマッチングするように修正

タグとの照会時に,(艦隊これくしょん)を正規表現で削除するだけのお仕事

 

・タグ共起からネットワークのエッジ形成の判断に,jaccard係数の他に,simpson係数を導入

エッジ形成の閾値条件を,

jaccard > =0.1 or (jaccard >= 0.05 and simpson >= 0.1)

とした

 

以前のように,jaccard係数のみで判定を行うと,

投稿数の多いキャラ同士のペアが密になる傾向にあった

例えば,赤城と加賀のような組は,共通集合(イラスト)が多く,エッジが形成される

しかし,赤城と吹雪の組を考えた場合,検出されない

吹雪タグがついたイラストは赤城と比較して相対的に低いため,

2つの和集合(=分母)が大きくなるが,共通集合(=分子)が小さくなることが原因

simpson係数を導入すると,分母が2つの集合のうち小さい方になるので,この問題が解決される

 

各係数の詳細に関しては,

集合とかベクトルの類似度の計算のメモ - 唯物是真 @Scaled_Wurm

などを参照頂けると良いかと

 

・コミュニティ検出を導入

形成したネットワークに対して,コミュニティ検出アルゴリズムをかけて色分けした

コミュニティ検出は,python-louvain

アルゴリズムの中身はちゃんと理解してない そのうち覚えないと・・・

 

色々やった結果が次の通り

二航戦コンビとか,独立してたペアは除外してます

f:id:calderarie:20150327124552p:plain

エッジがごちゃごちゃしてて見ずらいっすね・・・

ある程度まとめるレイアウトにしたのだけど,

エッジがどこを通ってるのかわかりにくいので反省

 

色々思ったこと

・吹雪周りが完全にアニメ関係のエッジ

・アニメの主要3人(吹雪,睦月,夕立)間にエッジはあるが,別コミュニティ

金剛型と第六駆はやっぱり密

駆逐艦同型艦等のコミュニティがよく見られる 十七駆と十六駆とかいいっすね

・潜水艦コミュニティ内に,天城と香取

 

ラストのは,おそらくイラストの母数が少ない影響で,

同時期に実装された名残があるのだと思う

一定期間ごとでネットワークを形成し,その期間ごとの動的変化を見ると面白そう

後,コミュニティ検出の際にエッジ重みを考慮してないので,そこを直すともうちょい結果が変わるかも

 

 

色々やった所感としては,閾値の設定がトライアンドエラーで,非常に面倒くさい

その辺をうまく自動化できないものか