CORDEA blog

Android applications engineer

niconicoのコンテンツ検索apiを用いたアニメ間距離の可視化 続き

前回は距離の算出やノイズに悩まされ、あまり良い結果が得られなかったのであの後もしばらく続けておりました。
これ以上放っておくと手順を忘れそうなので、ここらでまとめておきます。

とはいえ一ヶ月前くらいにやったことなので既に結構忘れていて余り書くことがない...すみません。

 
とりあえずプリキュアとかの続編がある程度固まってくれているのがちょっと嬉しいです。

 

前回からの変更点

  • 2010-2014作品から、2000-2014年に取得範囲を変更
  • 説明文にアニメタイトルを含むものまで取得していましたが、関係ないものが多くヒットするようなので動画タイトルかタグのいずれかにアニメタイトルを含むものだけを取得するように変更(getdataFromWikipedia.py)
  • 動画件数が200件に満たないものは除外(getSearchResult.py)
  • 取得した動画のタグに「アニメ」タグを含まないものは除外(tagParseJSONforCount.py)
  • タグの出現回数ではなく、アニメ1作品の総タグ数に占める対象タグの割合に変更(tagParseJSONforCount.py)
  • tf-idfを算出し、一定値に満たないタグは除外することで、特異的なタグが距離に反映されやすくなるように機能追加(calcTfidf.py)
  • あまり関係はないですが、出力の関係でTree ViewerをDendroscopeからEPoSに変更
  • 他にもMeCabを使って形態素解析してMDSしてみたり(tagMeCabParseJSONforCount.py)


 

結果

Dendrogram
画像サイズが大きいのでご注意下さい。

距離の算出はピアソンです。


GitHubnewickデータもおいておきます。


 

手順

python getSearchResult.py animes_2000-2014.txt
python tagParseJSONforCount.py animes > tags_anime_dataset.tsv
python calcTfidf.py tags_anime_dataset.tsv > tfidf_anime_dataset.tsv
awk -F "\t" '{if($2>=1.0){print $0}}' tfidf_anime_dataset.tsv > tfidf_1.0_anime_dataset.tsv
gawk -f cut_file.awk tfidf_1.0_anime_dataset.tsv tags_anime_dataset.tsv > tags_1.0_anime_dataset.tsv
R CMD BATCH hclust.R


 

コード類

GitHub