ニコニコデータセットを使ったタグ解析
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
さて、今日はニコニコデータセットを使って、面白いことができるのではないかなと考えてみました。
まぁ内容はニコニコ動画の動画データです但し、2013年まで
出現タグランキング!
#coding:utf-8 import json import gzip import os import sys dicts = {} data_dir = sys.argv[1] for file in os.listdir(data_dir): if file.endswith(".dat.gz"): print file,len(dicts) filepath = os.path.join(data_dir,file) for line in gzip.open(filepath): jsonData = json.loads(line) for tag in jsonData["tags"]: if not tag["tag"] in dicts: dicts[tag["tag"]] = 0 dicts[tag["tag"]] += 1 f = open("tag_count.txt","w") count = 1 for key,value in sorted(dicts.items(),key=lambda x:x[1],reverse=True): f.write(str(count)+ " " + key.encode('utf-8') + " " + str(value)+ "\n") count += 1 print len(dicts) f.close()
Top 50を掲載します。
1 ゲーム 3593302 0.0785020061224 2 実況プレイ動画 1134356 0.0247820031985 3 音楽 874535 0.0191057561887 4 歌ってみた 549536 0.0120055810607 5 投稿者コメント 444108 0.00970232085559 6 アニメ 332877 0.00727228390266 7 エンターテイメント 320617 0.00700444262602 8 東方 231043 0.00504754095273 9 もっと評価されるべき 224274 0.00489966023482 10 VOCALOID 218548 0.00477456568751 11 アイドルマスター 203616 0.00444834986834 12 実況プレイ 167938 0.00366890116784 13 ニコニコムービーメーカー 160928 0.00351575538078 14 その他 152738 0.00333683041702 15 プレイ動画 149399 0.00326388408564 16 演奏してみた 139507 0.00304777593648 17 スポーツ 134763 0.00294413490741 18 ボカロオリジナルを歌ってみた 134676 0.0029422342393 19 初音ミク 124054 0.0027101779554 20 ラジオ 113043 0.0024696232819 21 @BGM推奨 109552 0.00239335624301 22 ゆっくり実況プレイ 106936 0.00233620511905 23 動物 97558 0.0021313262045 24 作業用BGM 96833 0.00211548730356 25 政治 86974 0.00190010009748 26 MikuMikuDance 86306 0.00188550646186 27 R-18 82669 0.00180604979602 28 PS3 78062 0.00170540177306 29 踊ってみた 76040 0.00166122762449 30 洋楽 74659 0.00163105724904 31 日記 72996 0.00159472608729 32 三国志大戦 68065 0.00148699971411 33 PCゲーム 67656 0.00147806438931 34 ボーダーブレイク 65009 0.00142023601579 35 実況 54854 0.00119838216878 36 車載動画 54596 0.00119274570472 37 FPS 51098 0.00111632573851 38 ポケモン 50634 0.00110618884191 39 MUGEN 50337 0.00109970035421 40 実況プレイpart1リンク 48534 0.00106031064607 41 鉄道 48388 0.00105712101912 42 UTAU 45943 0.00100370569111 43 例のアレ 44689 0.000976309854169 44 描いてみた 44313 0.000968095472438 45 戦国大戦 43040 0.000940284547057 46 MAD 42774 0.000934473308918 47 ミクオリジナル曲 42631 0.000931349222249 48 自然 38464 0.000840313773652 49 フリーゲーム 37541 0.000820149214244 50 エロゲ 36356 0.000794260803736
皆ゲーム好きすぎるだろう。ゲームだけで全体の7%もタグが存在するとは…。
ゲームタグと同時に出てくるタグを調査した。
もちろんニコニコのタグは複数セットすることができます。そこで、一番多いゲームから他と一緒に出てくるようなタグはどんだけあるのかな
SourceCode
#coding:utf-8 import json import gzip import os import sys dicts = {} movie_num = 0 data_dir = sys.argv[1] for file in os.listdir(data_dir): if file.endswith(".dat.gz"): print file, len(dicts) filepath = os.path.join(data_dir,file) for line in gzip.open(filepath): jsonData = json.loads(line) movie_num += 1 containGame = False for tag in jsonData["tags"]: if tag["tag"] == u"ゲーム": containGame = True break if containGame == True: for tag in jsonData["tags"]: if not tag["tag"] in dicts: dicts[tag["tag"]] = 0 dicts[tag["tag"]] += 1 f = open("game_similar.txt","w") count = 0 dict_sum = sum(dicts.values()) for key,value in sorted(dicts.items(),key=lambda x:x[1],reverse=True): divide = float(value) / float(movie_num) f.write(str(count)+ " " + key.encode('utf-8') + " " + str(value) + " " + str(divide) + "\n") count += 1 print len(dicts) f.close()
Output
1 実況プレイ動画 1106933 0.308054541477 2 投稿者コメント 190269 0.0529510183113 3 実況プレイ 160964 0.044795566863 4 プレイ動画 135239 0.0376364135272 5 ゆっくり実況プレイ 102850 0.0286226985653 6 PS3 74899 0.0208440593081 7 PCゲーム 64198 0.0178660184977 8 ボーダーブレイク 58079 0.0161631279531 9 三国志大戦 54739 0.0152336207755 10 実況 50508 0.0140561522522 11 東方 49109 0.0136668167607 12 FPS 48147 0.01339909643 13 実況プレイpart1リンク 47604 0.0132479819397 14 アイドルマスター 42231 0.0117526998844 15 ポケモン 40588 0.0112954602758 16 戦国大戦 39719 0.0110536214323 17 MUGEN 39233 0.0109183697891 18 フリーゲーム 35856 0.0099785656758 19 もっと評価されるべき 34696 0.00965574282373 20 縛りプレイ 34597 0.00962819156308 21 Xbox360 32746 0.00911306647757 22 字幕プレイ動画 31772 0.00884200660006 23 格闘ゲーム 31054 0.00864219038645 24 XBOX360 30744 0.00855591876219 25 ゲーム実況 30332 0.00844126099059 26 BORDERBREAK 26712 0.00743383105567 27 PSP 25483 0.00709180580981 28 ボーダーブレイク外部出力 24400 0.00679041171602 29 テイルズ 24132 0.00671582850537 30 ゼルダの伝説 23809 0.0066259390388 31 ファイアーエムブレム 23063 0.00641833054945 32 MHP2G 22125 0.00615728931217 33 バイオハザード 21865 0.00608493246602 34 零 21499 0.00598307629028 35 Wii 20928 0.0058241695243 36 ファルコム 20700 0.00576071813613 37 xbox360 20360 0.00566609764501 38 戦場の絆 20254 0.00563659831542 39 Minecraft 19788 0.00550691258347 40 三国志大戦3 19692 0.0054801962095 41 EXVS 19648 0.00546795120477 42 三国志大戦3 19442 0.00541062231897 43 ファミコン 18954 0.00527481408465 44 PS2 18824 0.00523863566157 45 MHP3 18240 0.00507611105329 46 バトレボ 18192 0.00506275286631 47 青鬼 17104 0.00475996729471 48 スパロボ 16886 0.00469929886216 49 ニコニコ歴史戦略ゲー 16189 0.00450532685535 50 mugen 15329 0.00426599267192
30%は実況プレイ動画でした。というかやっぱり殆どのタグがゲーム関連ですね。このことからもタグ同士に関連があることがわかります。動画の比較とかできそうだね。
というか実況プレイ動画多すぎる!?
時間かければネットワークとか構築できそうな気はする。やってみよっかな…Networkxの勉強を兼ねて。