唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

ニコニコ動画のデータセットが公開されたらしい

国立情報学研究所のダウンロードサービスでニコ動のデータセットが公開されていたので、とりあえずダウンロードしてみました

ダウンロードの手順

以下のページで、名前、メールアドレス、所属を入力すればよいみたいです。

データの形式

行ごとにそれぞれの動画のjsonが書かれたファイルがたくさんあります。
コメントのデータもありますが、ユーザーに関する情報はないみたいです

動画の説明などには<b></b>や<font></font>、<br />などのHTMLタグが含まれていましたので、それらの除去が必要になりそうです

タグの頻度

なんか面白いことできないかなーと考えたんですが、何も思い浮かばなかったので、とりあえず動画のタグの出現頻度を数えてみました。
以下のコマンドで出現頻度上位を出力しています。

zcat *.dat.gz | jq -r '.tags[].tag' | LC_ALL=C sort | uniq -c | LC_ALL=C sort -r | head -n 100

ちなみに下の記事で紹介されていたjqコマンドがjsonの処理に便利です

タグクラウド

なんとかの一つ覚えみたいですが、可視化としてタグクラウドを載せときます(?)
タグの大きさは頻度の対数に比例
f:id:sucrose:20130529223810p:plain

出現頻度上位100個の表

意外なものが多かったりして驚きました
「もっと評価されるべき」が9位なんですが、こんなにたくさん付けられてるんですね

順位 出現頻度 タグ名
1 3593302 ゲーム
2 1134356 実況プレイ動画
3 874535 音楽
4 549536 歌ってみた
5 444108 投稿者コメント
6 332877 アニメ
7 320617 エンターテイメント
8 231043 東方
9 224274 もっと評価されるべき
10 218548 VOCALOID
11 203616 アイドルマスター
12 167938 実況プレイ
13 160928 ニコニコムービーメーカー
14 152738 その他
15 149399 プレイ動画
16 139507 演奏してみた
17 134763 スポーツ
18 134676 ボカロオリジナルを歌ってみた
19 124054 初音ミク
20 113043 ラジオ
21 109552 @BGM推奨
22 106936 ゆっくり実況プレイ
23 97558 動物
24 96833 作業用BGM
25 86974 政治
26 86306 MikuMikuDance
27 82669 R-18
28 78062 PS3
29 76040 踊ってみた
30 74659 洋楽
31 72996 日記
32 68065 三国志大戦
33 67656 PCゲーム
34 65009 ボーダーブレイク
35 54854 実況
36 54596 車載動画
37 51098 FPS
38 50634 ポケモン
39 50337 MUGEN
40 48534 実況プレイpart1リンク
41 48388 鉄道
42 45943 UTAU
43 44689 例のアレ
44 44313 描いてみた
45 43040 戦国大戦
46 42774 MAD
47 42631 ミクオリジナル曲
48 38464 自然
49 37541 フリーゲーム
50 36356 エロゲ
51 35754 科学
52 35714 縛りプレイ
53 35113 料理
54 35068 戦場の絆
55 34919 遊戯王
56 34029 Xbox360
57 32590 格闘ゲーム
58 32235 字幕プレイ動画
59 32007 XBOX360
60 31813
61 31577 鏡音リン
62 31302 ゲーム実況
63 31244 アイドルマスター2
64 30248 PV
65 30017 ゲーム音楽
66 29908 BORDERBREAK
67 29644 VOCALOIDカバー曲
68 29635 サムネホイホイ
69 29579 おっさんホイホイ
70 28188 歴史
71 28153 テイルズ
72 27707 バイク
73 27681 高画質
74 27038 ギター
75 26921 ボーダーブレイク外部出力
76 26859 PSP
77 26345 パチンコ
78 26231 神曲
79 25599 ゼルダの伝説
80 25053 ピアノ
81 24824 ニコニコカラオケDB
82 24610 弾いてみた
83 24322 ファイアーエムブレム
84 23811 三国志大戦
85 23782 バイオハザード
86 23722 MHP2G
87 23576 ガンダム
88 23399 三国志大戦3
89 23369 ファルコム
90 23258 巡音ルカ
91 23234 ニコニコインディーズ
92 23184 作ってみた
93 22971 パチスロ
94 22490
95 22486 AxisPowersヘタリア
96 22450 KAITO
97 22094 Wii
98 21899 ファミコン
99 21833 鏡音レン
100 21694 ニコニコ歴史戦略ゲー

コメントの草率を調べる

コメントでどれぐらい草(w)が生えているのかを検証します
一応書いておくと「w」は(笑)と同じように笑いを表す表現としてネット上ではよく使われています。
「wwwwwwww」などのように「w」をたくさんつけたりする場合には「草を生やす」などと言われることがあります。
今回は「w」と「w」が1つ以上末尾に付く場合を対象とします

まずは総コメント数を調べます
複数のファイルが圧縮されているためか(?)zcatで開けなかったので、代わりにtar zxfOを利用

find *.tar.gz -exec tar zxfO {} \; | wc -l

とすると総コメント数が2474388510という結果が得られた

次に草が生えているコメントの数を数えたい。
大部分をカバーしていそうなルールとして、コメントの末尾が「w」か「w」というものを用いた。

find *.tar.gz -exec tar zxfO {} \; | grep -c '\uff57"\|w"'

こちらは879099946となりました

f:id:sucrose:20130615223954p:plain:w300

3分の1以上に草が生えていることになります。
こんなに偏ってるなんてすごいデータセットですね!
ネットスラングとかを探すのに役立ちそう……?

全角「w」と半角「w」の個数を比べると、それぞれ全角を含むツイートが784061313になって半角を含むツイートが95320415になりました。
全角のほうが半角よりだいぶ(数値が正しいとすると8倍ぐらい)多いみたいです
足しても上で書いた数にはならないんですが、これは全角と半角両方を含むツイートがあるからです

f:id:sucrose:20130615224804p:plain:w300

コメントの長さの分布

コメントごとの文字数の分布も調べてみました。
単純なスクリプトを動かしていたのですが、全部のコメントを処理するのには結構な時間がかかりました。

草(ww)の長さの分布は以下のようなコマンドで数えあげました
この時期はワンライナーにはまっていたので、ひどいコマンドになってしまいましたw

find *.tar.gz -exec tar zxfO {} \; | perl -nle 'if(/((\\uff57|w)+)"/){$str=$1;$str=~s/\\uff57/W/g;print length($str)}' | sort -n | uniq -c | awk '{print $2, $1}'

通常のスケールのグラフだと非常に見づらいグラフになってしまうので、縦軸(頻度)と横軸(長さ)を対数にして両対数グラフにしました

f:id:sucrose:20130615230831p:plain

対数軸なのでわかりづらいかもしれませんが、長さ5から10ぐらいを過ぎると頻度が急激に減少していきます
基本的には草の部分の長さが増えるほど頻度が低下していきますが、60文字や75文字などのコメントの長さ制限ギリギリになるとスパイク状の頻度上昇があります

コメント全体の長さは草とは違ってある一定の長さ(10弱)ぐらいまでは頻度が上昇し続けていって、あとは草と同様に減少していきます

もしかしたら長さ1の部分でコメント全体よりも草の方が頻度が多いのが不思議かもしれませんが、今回はコメント末尾の草の長さを数えたので、1よりも長いコメントで末尾に1個の草が生えているものが多いことからこのようなグラフになっています。

まとめ

ニコニコ動画のデータセットが公開されて使えるようになったので、面白い研究(?)とかが増えるといいですね