炎上や誹謗中傷を防ぐアーキテクチャーは可能か?

概要

SNSの炎上は誹謗中傷があると、すぐ法制化しろとか刑事罰をかせという話になる。しかし、一方で炎上をネットから切り離すことで、ようはボヤに抑えることが出来ないかという検討はあまりされない。 このエントリーでは、そのやり方をいくつか考察する。

まとめ

  • 炎上は観客がいて成り立つ。SNSの拡散から切り離すことで、大火を小さな火に出来るのではないか?
  • 誹謗中傷は、相手が読んでレスポンスを返すことで成立する。メッセージを届けない、もしくは、メッセージが届くまでの時間を長くすることで、やる気をそげるのではないか?

最初に考えること

SNSでは、あるメッセージが、「即時」に「全てのフォロワー」に届く。また、フォロワー外の人にも、即時に拡散する。これは、情報技術の発展によって生まれた利便性だが、それがプログラムで書かれている以上、「即時」に「全フォロワー」に届けたり、即時にフォロー外の人に届けなければならないという物理法則のような自然のルールではない。

あるランダムなフォロワーには、メッセージが遅延して届く。全フォロワーではなく、フォロワーに何割かにランダムに届くといった実装も可能なはずだ。このエントリーの趣旨は、その様に実装(アーキテクチャー)を制御することで、大炎上をボヤに、大量の誹謗中傷を少量に、といったダメージコントロールをシステムで実現できないかと考えるアプローチである。 何でもかんでも法律で規制するよりは、副作用は少ないのではないかと考える。

炎上と隔離

この件に関して示唆を与えてくれたツイートは以下のツイートだ。

https://shibacow.hatenablog.com/entry/2020/05/26/033848

redditの全コミュニティーのうち、わずか1%(赤い点)のコミュニティーが74%の争いのキッカケを作ってる。このパターンをLSTMで深層学習して争いを予測するモデルを作ったので、モデレーターに対して注意喚起する空襲警報のようなシステムを作れるかもって。おもしろーい

ネット上の炎上は「周囲の視線」が燃料なので言い争っている人たちを隔離すると瞬時に鎮火する。1980年代には、そういう機能が実装された掲示板というのがあって研究論文もあるのに、人類はいまだに炎上とうまく付き合えていない。みんな先行研究を無視しすぎだと、StackOverflowのJoelが言ってた

この文で、西村氏は、言い争っている人たちを隔離すると瞬時に鎮火する。 と書いていて、ここは実感に合う。つまり、言い争いが起きたときに、双方のツイートを拡散しなければ良い。拡散することを抑えることが表現の自由に抵触するなら、拡散のスピードを押さえれば良い。つまり、互いのヒートアップ度に応じて、そのツイートのインプレッション数が減っていき、多くの人に目に触れるまでに時間がかかる状態を作れば良い。

f:id:shibacow:20200526031453p:plain
盛り上がれば盛り上がるほど、メッセージの拡散に時間がかかる

炎上はリアルタイムに多く人が知ることによって、大きな火になるので、全員に配信するのではなく、N%の人に配信、または、メッセージに配信にわざと遅延を起こさせ、全フォロアーが知るまで、24時間程度かかるみたいにすれば、大火を小さな火に出来るのではないか?

誹謗中傷と一人相撲

ある動画コメント配信サービスでは、誹謗中傷を書き込むと、書き込んだ本人にはそのメッセージが配信されるが、生放送を見ている人たちには届かないというシステムが有るという噂を聞いたことがある。誹謗中傷する人は、コメントを自由に書き込めるが、他の視聴者にコメントを配信する箇所でブロックされるための、他の視聴者には届かないメッセージを贈り続けることになる。

中傷は、被害者にも届くし、被害者のフォロワーにも届く、そのため、上で書いているように、中傷は、「(被害者に対する)周囲の視線」の変化を狙ってやる事が多い。そのため、ある被害者に向けられた中傷を、他のフォロワーには届けないというやり方が考えられる。

まとめ

上記で考えることは、とかく法規制に頼るのではなく、メッセージの拡散スピードや拡散人数をアーキテクチャーでコントロールすることで、被害を最小化出来ないかという思考実験だ。その際に、現在のSNSで実施されている、「即座」に「全てのフォロワー」にメッセージを拡散するという前提を捨てて、他のSNSのありようがないかということを考えて見る必要がある。

最後に

私は、ニフィティサーブなど古い掲示板からネットを使っている人間だが、常々感じるのは、私達は炎上や中傷を見るのが大好きだという点にある。炎上を防ぐ実装は考えられうが結局の所炎上があるSNSの方がPVが得られ私達人類はどうも炎上が好きらしいということが、最も厄介なところだ。 上のツイートで紹介されているように「1980年代には、そういう機能(炎上を防ぐ機能)が実装された掲示板というのがあって研究論文もある」にもかかわらずそれがスタンダードになっていないということは、私達が、炎上を見たり、中傷を見たりすることが好きだという薄暗い欲望が最大の原因であろう。

例えば、炎上するメッセージの拡散が遅延する twitter2.0が出来たとして私達はそのサービスを使うだろうか?

ニコニコ動画はオワコン化したか?という記事の落ち穂拾い

先日、ニコニコ動画はオワコン化したか? - shibacowのブログ というブログを書いた。 そのエントリーを上げて、反応を頂いたので紹介する。

ニコニコ動画でのコメント数の推移

上記ブログでは、次のように書いた。

一日あたりのコメント投稿数推移

f:id:shibacow:20190825151049p:plain
ニコニコ動画の一日あたりのコメント数(3ヶ月中央値)

一日あたりのコメント数は次のように推移している。

2012年に180万あったコメントは、徐々に減り2018年には40万になったが最近は、60万まで戻している。

また、コメント長に関して、次のように書いた

スマホではコメントが打ちづらいので、動画にコメントがもらえず、承認欲求が満たしづらいという仮説

この仮説は、上記の 一日あたりのコメント投稿数推移を見れば、たしかにコメントは減っている。しかし、スマホでコメントが打ちづらいというのは本当だろうか?

ニコニコ動画では、2018年までも、動画データ、コメントデータをニコニコデータセットとして公開している。

情報学研究データリポジトリ ニコニコデータセット

全動画のコメントを公開しているので、そのコメントの文字長を調べてみれば、コメントが打ちづらいかどうかは分かる。コメントが打ちづらければ、コメント数も減るし、コメントの長さも短くなるはずだからだ。

それで、ニコニコデータセットを元に年ごとのコメントの文字長を調べてみた。平均を取ると、あらしのような長いコメントの影響を受けるので、分析には四分位数を使う。コメント投稿の年を元にその年のコメント文字長の25%位50%位75%位を調べた。

2007 2008 2009 2010 2011 2012 2013
25%位 4 4 4 4 4 4 5
50%位 8 8 8 8 8 8 8
75%位 13 13 13 13 13 13 14
2014 2015 2016 2017 2018
25%位 5 5 5 4 5
50%位 8 9 8 8 9
75%位 14 14 14 14 14

そうすると、スマホが主流になった2018年でも、投稿されたコメントの文字長は、減ってない。むしろ増えている。8文字から9文字になっていることが分かる。 私も紹介したエントリーの作者と同じ様にスマホになるのでコメント文字長は減るのかと思ったが減らなくて驚いている。

スマホではコメントが打ちづらいので、動画にコメントがもらえず、承認欲求が満たしづらいという仮説の結論

上記より、動画にコメントがもらえずというところは、コメント数も減っているため、妥当だと思われる。「スマホでコメントが打ちづらい」は、コメントの文字長がPCのときと変わらないのでなんとも言えない。

この調査に関して次のような反応を頂いた

コメントはほぼPCからしか行われていない。

電極さんから、以下の意見を頂いた。

まとめると、「ニコニコ動画のコメントはほぼPCから打たれている」との指摘だ。頂いた資料かも、スマホからコメントを打たれていない様子が伺える。

私の上記仮説では、視聴者の視聴環境がPCからスマホに変わっても、書き込むコメントの文字長が変わらないのではないかと推測したが、そうではなくて、そもそもスマホからはコメントを書き込まない。そのため、コメントはPCからしか書き込まれないが故に平均の文字長が短くならないと言うことだ。

これは、結構衝撃的だ。ニコニコ動画は、動画視聴と一緒にコメントを読むという体験で人気が出た。つまり、コメントを書き込んでくれる視聴者が居てサービスが成り立つ。そのためスマホシストが進み、PCを持つユーザーが減ればコメントも減り結果的にニコニコ動画も人気も落ちる。という事になりそうだ。

運営も手軽にレスポンスを返せるように、ニコルを作ったりしているが、なかなか難しいのかも知れない。

データに基づいた反応ありがとうございました。

具体的なデータを元に議論をすると、有用なデータをいただけるのでとてもありがたい。

ニコニコ動画はオワコン化したか?

概要

定期的にニコニコ動画はオワコンであるとか、ニコニコ動画はあとn年で終了という記事が注目を集める。最近も次の記事が注目を集めた。

ニコニコ動画は確実にあと2~3年で終了する|ワッチョイ|note

「まだニコ動には需要がある」と思ってる人達が一部存在していた件|ワッチョイ|note

しかしそのような記事に数字の裏付けあったことはあまりない。 上の記事でも自分の思いが先行しており、もしその仮定が正しいのならばどのようにデータとして観察できるかという話はない。 今回はそれでは上の主張は妥当であるか?もしその仮定が正しいならそれは数値にどのように現れるかという点を検証していく。

上記ブログの主張

上記ブログでは次のような主張を行っている。

  • 今は面白い動画が無く、 (かっては)面白い動画がたくさんあった。そのため視聴者は離反した。
  • スマホでが主流になり、若い優秀なクリエイターがPCが必要な凝った動画を作らなくなった。
  • スマホではコメントが打ちづらいので、動画にコメントがもらえず、承認欲求が満たしづらい。

それでは実際にそうなのかを調べてみたい

数値による検証

オワコン化の定義

オワコンと言っても人によって定義が異なる。自分にとって面白い動画がないという定義から、超会議の参加者数や単に動画のランナップが気に食わないのでオワコンだという人もいる。ここでの定義は、プレミアム会員数及び下で提示した一日あたりの動画視聴回数をもとに考える。

このエントリーでの定義は、プレミアム会員数が減少に転じた2016年をオワコン化の定義として一旦仮定する。

f:id:shibacow:20190826012951p:plain
プレミアム会員数推移

「ニコ動」有料会員、減少ペース加速 3カ月で14万人減 - ITmedia ビジネスオンライン

また、下にあるように一日あたりの動画再生回数も、2016年をピークにしているため、2016年からいわゆるオワコン化が始まったと考える。

ニコニコ動画の一日あたりの視聴回数(3ヶ月中央値)

オワコンというと響きが良くないが、成長期を脱して、安定期もしくは衰退期に入り始めた状態のことを指すのだろう。

動画再生数、動画投稿数、コメント数の推移

まず動画再生数動画投稿数コメント数の推移を見てみよう。

http://flapi.nicovideo.jp/api/getheadline こちらのURLで、現時点の総投稿動画数、総視聴回数、総コメント数が取得できる。

ちなみに2019/08/22現在の数値は次のようになる。

総動画投稿数 総視聴数 総コメント数
16,812,782 104,683,668,503 5,667,751,094

このURLの数値を毎日取れば、その差分は一日毎の動画投稿数・視聴回数・コメント数になるはずだ。私は2011/07/07から2019/08/21 まで毎日その数値を取得している。そのデータを使えば、2011年から2018年までの、一日ごとの動画投稿数・視聴数・コメント数が分かる。

一日あたりの動画視聴数推移

まず、一日あたりの動画投稿数の推移を見てみる。日によって値の変動が激しいので3ヶ月毎にその期間の中央値を用いて集計した。

ニコニコ動画の一日あたりの視聴回数(3ヶ月中央値)

2012年には、2000万再生数だったがその後再生数は増え、2016年には3500万再生を超える。しかしその後再生数は急激に減少し、2017年には2500万再生になるが、その後減少幅は緩やかになり、2019年現在では、2000万を少し超える再生数で推移している。

一日あたりの投稿数推移

一日あたりの動画投稿数は、次のように遷移している。

f:id:shibacow:20190825150250p:plain
ニコニコ動画の一日あたりの動画投稿数(3ヶ月中央値)

2012年には、一日5000件あったがその後徐々に減少し、最近では一日2500件程度だ。確かに上紹介したエントリーが指摘するように動画投稿者数は減っている。1

一日あたりのコメント投稿数推移

f:id:shibacow:20190825151049p:plain
ニコニコ動画の一日あたりのコメント数(3ヶ月中央値)

一日あたりのコメント数は次のように推移している。

2012年に180万あったコメントは、徐々に減り2018年には40万になったが最近は、60万まで戻している。

面白い動画の減少が、ユーザの離反を招いたという仮説は正しいか?

上記エントリーでは、「面白い動画の減少」がユーザーの離反を招いたという仮説を提示している。

面白い動画の投稿数を調査することは難しい(面白いの定義が人によりまちまちだから)。しかし、面白い動画は投稿動画数の何割かだろうから投稿動画数に連動すると仮定することはできる。そうすると投稿動画数は、2012年から減り始めており、2016年までユーザーの視聴数が伸び続けていることと整合性が取れない。下の図のように、動画投稿数と視聴数の減り方に差があり、投稿数の中に一定数面白い動画があり、それが減ったのならそれに連動してもっと早くに動画視聴者数が減らなければならないはずだ。

f:id:shibacow:20190825152601p:plain
動画投稿数と視聴数の推移

一方、ニコニコ動画は、新規の投稿動画だけでなく過去の動画もある。そのため過去動画を見ていたため、視聴者数が減らないのではないかという仮説もあり得るだろう。 つまり、累計投稿動画数と、視聴者数を比べてみたらどうかという指摘だ。 それをグラフ化するとこうなる。

f:id:shibacow:20190825153739p:plain
累積動画投稿数と視聴数の推移

今度は逆に、動画は増え続けているのに、2016年を境に、再生回数は減っている。面白い動画は、動画投稿数に対して一定の比率であり、それが累積的に増えていくなら、2016年で、視聴数が減っていくことと整合性が取れない。

面白い動画の減少がユーザーの離反を招いたという仮説の結論

面白い動画の減少がユーザーの離反を招くなら、2012年のから動画視聴数は減るはず。累計の動画投稿数とも連動しておらず、面白い動画の減少がユーザーの離反を招いたという仮説はあまり支持できない。

スマホでが主流になり、若い優秀なクリエイターがPCが必要な凝った動画を作らなくなった

この仮説はどうだろう?少なくとも、2012年から、動画投稿数は減り始めており、それとそれと反比例するように、スマホのユーザーは増えているのでこの仮説は、正しいように思える。 少なくとも、それに反対するようなデータは見つからなかった。新規の動画投稿者数の推移を見れば分かるかも知れないが、私は持っていない。

スマホではコメントが打ちづらいので、動画にコメントがもらえず、承認欲求が満たしづらいという仮説

この仮説は、上記の 一日あたりのコメント投稿数推移を見れば、たしかにコメントは減っている。しかし、スマホでコメントが打ちづらいというのは本当だろうか?

ニコニコ動画では、2018年までも、動画データ、コメントデータをニコニコデータセットとして公開している。

情報学研究データリポジトリ ニコニコデータセット

全動画のコメントを公開しているので、そのコメントの文字長を調べてみれば、コメントが打ちづらいかどうかは分かる。コメントが打ちづらければ、コメント数も減るし、コメントの長さも短くなるはずだからだ。

それで、ニコニコデータセットを元に年ごとのコメントの文字長を調べてみた。平均を取ると、あらしのような長いコメントの影響を受けるので、分析には四分位数を使う。コメント投稿の年を元にその年のコメント文字長の25%位50%位75%位を調べた。

2007 2008 2009 2010 2011 2012 2013
25%位 4 4 4 4 4 4 5
50%位 8 8 8 8 8 8 8
75%位 13 13 13 13 13 13 14
2014 2015 2016 2017 2018
25%位 5 5 5 4 5
50%位 8 9 8 8 9
75%位 14 14 14 14 14

そうすると、スマホが主流になった2018年でも、投稿されたコメントの文字長は、減ってない。むしろ増えている。8文字から9文字になっていることが分かる。 私も紹介したエントリーの作者と同じ様にスマホになるのでコメント文字長は減るのかと思ったが減らなくて驚いている。2

スマホではコメントが打ちづらいので、動画にコメントがもらえず、承認欲求が満たしづらいという仮説の結論

上記より、動画にコメントがもらえずというところは、コメント数も減っているため、妥当だと思われる。「スマホでコメントが打ちづらい」は、コメントの文字長がPCのときと変わらないのでなんとも言えない。

カテゴリごとの再生数推移

上記紹介エントリーでは、ざっくりニコニコ動画全体として考察している。しかしニコニコ動画といっても、ゲーム実況、ボーカロイド、歌ってみた、TRPGアイマスなど様々なカテゴリーがある。 ニコニコ動画全体だけ見ても、あまり詳しいことはわからない。カテゴリー毎の推移を見ることで、実際にユーザー行動にどのような変化があったかを見ている。

カテゴリーごとのランキングを見ることで、カテゴリーごとの趨勢を調査する

2019年06月25日にランキングを変更するまで、各カテゴリーごとのランキングごとに、各動画のデイリー視聴数を取得できた。3 そのデータには、total-view、total-mylist,total-resの他に、日毎の視聴数、コメント数、マイリスト数(daily-view,daily-res,daily-mylist)が手に入った。

それらカテゴリーごとの、ランキング動画の視聴数を合算すれば、そのカテゴリーの(ランキングであるが)趨勢を調べることができる。4 それらを調査したグラフは次のようになる。

各カテゴリランキング動画再生数の推移

ニコニコ動画でも特に人気の高いカテゴリのランキング入毎の再生数をグラフ化した。

f:id:shibacow:20190825184525p:plain
カテゴリランキング再生数推移

ゲームは、2016年10月4日より、ゲームと、ゲーム実況の2つのカテゴリに別れたが、過去からの推移を見るため、ゲーム+実況のグラフを作っている。

それで見ると、2011年から2015年までゲームカテゴリの再生数が伸び、2015年-2016年を境に、再生数は減少に転じている。

また、例のアレは、2015年に人気が出て2017年にピークになり、その後再生数は減っている。

アニメカテゴリは、2015年をピークに大体3分の2くらいの再生数になっている。 歌ってみた、エンターテイメント、ボーカロイドカテゴリーは、そこまで減ってはいない。

東方、アイマス、ボカロ、御三家の動き

ニコニコ動画では、東方、アイドルマスターボーカロイドは、御三家と呼ばれている。その3カテゴリの推移を見る。

f:id:shibacow:20190825200729p:plain
ニコニコ動画、御三家のランキング再生数推移

見たところ、

ボカロとアイマスは減っていない、東方はだいぶ再生数は減っている。

歌ってみた、踊ってみた、描いてみた、演奏してみたの「してみた系」

歌ってみたなどのやってみた系の推移を見る。上記エントリーでも TikTok に投稿者が移行したと書いているが、もしTikTokと競合するとしたら、やってみたのカテゴリが競合するだろう。

f:id:shibacow:20190825201456p:plain
やってみた系推移

2017年位から再生数は減り、2/3くらいの再生数になっている。TikTokに流れた可能性は否定できないが、再生数を見るに影響は限定的かも知れない。

ゲーム+実況カテゴリの退潮

上の各カテゴリで見たが、最も大きく減っているのは、ゲーム+実況カテゴリだ。2016年の一日250万再生から2019年に100万再生に減っている。その次に再生数があったアニメカテゴリは160万再生から100万再生と、再生数を減らしているが、アニメの番組編成によって人気が上下するようにも見える。

歌ってみたや、ボーカロイドは減っておらず、例のアレは一日50万再生から、100万再生に伸び、その後、50万再生に落ち着く。

上で定義したように、ニコニコ動画のオワコン化は、2016年から始まったと考えることができる(プレミアム会員が減少に転じ、また一日あたりの動画再生数もピークを迎える)。同時期から、ゲーム+実況の再生数も減少に転じている。その様に時期が一緒であることから、ニコニコ動画退潮に関して最も大きな影響を与えたのは、ゲーム+実況の不調であるように思える(他のカテゴリも減ってはいるがそのものカテゴリの再生数がもともと少なかったり大きなインパクトを与えてないカテゴリが多い)。

ゲーム+実況カテゴリの退潮と新しい配信環境の勃興

2016年にニコニコ動画の動画視聴数が、下方に向かうが、その時期に何が起こったかというと、TWITCHやMirrativなど、ゲーム配信により適したプラットホームの勃興だ。ニコニコ動画で最も大きなカテゴリだったゲームカテゴリが、ゲーム配信により適したプラットホームとの競争によって、ゲーム実況を見ていた層のユーザーに離反されたのではないか考えている。

この仮説に関してはそれを裏付けるデータが無いため、確度は高くない。

ニコニコ動画が活かせる資産

上で紹介したようにゲーム関連の動画はニコニコ動画では再生数が大幅に減っている。ゲーム関連のユーザー離れが起こっているのかも知れない。しかし、ボーカロイドアイマスなどのコンテンツは未だに再生数も多く、他の動画サービスにユーザーを取られたとまでは言えない。アニメも定期的に盛り上がっているのを見ても、配信するコンテンツ次第で、人が集まる可能性は残っている。

まとめ

  • 定期的にニコニコ動画オワコン説が流れる
  • しかし定量的に分析する人は少ない。
  • このエントリーでは、オワコンと言ったときの定義、またそれがいつ始まり、要因は何であるのかを調べた。
  • オワコン化は2016年から始まっており、同時期にゲーム+実況の再生数が大きく減っているため、退潮の一番大きな要因は、ゲーム視聴者のニコニコ動画離れではないかと、仮定した。

(補足)仮説に対してデータを用意するということ

ニコニコ動画の退潮に関しては様々な理由を上げる人は多いが、実際にその理由に対して、データを用意する人は少ないように思える。自分の提示した仮説がもし正しいなら、それはどのような数値に現れるかという視点を持つのは大事だ。

謝辞

ニコニコ動画は批判されることも多いが、データ分析をする人間から見ると、様々なデータを提供してくれる日本でも稀な企業だ。 例えば、 ニコニコ動画APIニコニコデータセットなど、結構多くのデータを提供してくれる。個人で、Youtubeのランキングサイトを作っているが、ランキングの取得しやすさでいうと、ニコニコ動画の方がやりやすい。 色々と大変だと思うが、このデータをオープンにするカルチャーは残していってもらえると助かる。


  1. セガリズムゲーム マイマイにように自動でニコニコ動画に投稿するゲームもあるので、そのような自動で大量に投稿するコンテンツの影響は除外していない。

  2. こちらに指摘に対して、ニコニコ動画のコメントは大半、PCから書き込まれているのではないかという指摘を頂いた。詳しくは、こちらに書いている。ニコニコ動画はオワコン化したか?という記事の落ち穂拾い - shibacowのブログ

  3. http://www.nicovideo.jp/ranking/fav/daily/all?rss=2.0 などを使えば、APIを取ることができた。

  4. ランキングの視聴数なので、埋もれた良い動画達に広く薄く再生数が集まってもそこは感知できないが、ざっくりした指標にはなるだろう。

Googleが無能だと言う前に出来ることってあるだろうか?

yuko-hiromさんの、 せめてはっきり言おうではないか. Googleは無能であると - yuko-hirom’s blog というエントリーが人気だ。簡単にまとめるなら、Google検索でPV狙いの嘘ニュースが検索上位に来てしまうという話だ。そしてそれを放置しているGoogleは無能だという主張だ。

それでyuko-hiromさんは「Googleは無能だと言おう」と主張する。

でも代替案もなしに無能だと主張したところでスルーされるのが関の山だろう。だとするなら代替案を考えるのが早いだろう。

ページランクという指標に全てが含まれているのが問題じゃないかな?

グーグルの検索結果はページランクで決まる。そしてそれは一次元の構造になっている。つまりその情報の正しさであるとか、ある事象についてポジティブでに語っているかとかネガティブに語っているかという内容についての評価はしない。

下の図でいえば、左側の図がそうだ。

だったら、検索結果について、ポジティブに言及しているか、ネガティブに言及しているかその程度を、示すUIを付け加えれば良いのではないか?

下の図でいえば、右側の様に、ページランクという軸と、記事がポジティブに言及しているかネガティブに言及しているかの2軸で検索結果を図示すれば良いではなかろうか?

図の上の、タイトルをクリックすれば目的のページに遷移すれば良い。

そうすれば、例えばネガティブな情報が上に来たところで、位置が違うのだから、ポジティブな情報を邪魔することは無い。

f:id:shibacow:20170104041213p:plain

UIにしか介入しないので、Googleそのものを作り変えることはない。

要は嘘ニュースが上位に来るのは、UIの問題なので、UIにのみ介入すれば、Googleそのものを作り変える必要は無い。

検索サービスというのは、webページの情報を収集する「クローラー」とその収集した情報を整理する「インデクサー」と検索ワードに応じて適切に検索結果を返す「ビューアー」からなっている。

ページランクの上位に来たものの順位を再整理すれば良いのだからGoogleそのものを作る必要はない。単純に検索結果を再整理して、表示すれば良いのだ。下の図でいえば、Googleのビューアーの上に、薄い再整理層を作れば良いことになる。

f:id:shibacow:20170104042601p:plain

実際の実装

じゃあ、実際にどのようなステップで作れば良いだろうか?

サーバ側では以下の作業が必要になる。

  1. 論争を含みそうな検索ワードで、グーグル検索を行い、上位数千件の検索結果を取得する。
  2. その検索結果を元に実際の記事の内容を取得する。
  3. 機械学習クラスター分析(k-meansとか、テキストの分析に適したアルゴリズムで)を用いて、それぞれを記事のポジティブ・ネガティブに分類する。
  4. それを定期実行して、記事のDBを作る。

ブラウザー側では、以下の作業が必要になる。

  1. Firefoxなり、Chromeなりのadd-onを作る。
  2. 特定の検索語に反応して、検索結果の上段に、2軸にマッピングしたUIを差し込む。
  3. サーバ側で作った記事DBをその場所に表示する

とやれば良いではないだろうか?自分が使ってみて使えると判断できればその、add-onを他人に勧めればよい。

無能だと罵る前に、工夫できない場所はないか探す。

何かシステムには、何かしら入り込める鋤はあるし、ハックできる場所はある。でもそれらを探そうとせず、ただ罵るだけなら、それは何も考えていないの大して変わりはない。インターネットは幸いなことに、何かを始めるのに許可を得る必要はない。罵る前に代替案が無いか考えてみることは良いことだ。 インターネットの良いところは、yuko-hiromさんが上記のシステムを誰の許可も無しに、自分で作って自分で実験できる点にある。代替案を考えることをせず、ただ現状を呪うだけなら、それはインターネットの自由を殺すことと大差はない。

思想の自由市場という考え方

この案では、嘘ニュースの排除は行わなかった。アメリカでは「思想の自由市場」という考え方がある。正しい考えに到達するにために、とりあえず全ての思想を市場に載せ、市場における淘汰のプロセスを経て、真理や正しい知識へ近づいて行くという考え方だ。 嘘ニュースは全てフィルタリングするという発想は、それはそれで、事前検閲を呼び込んでしまい、副作用も大きいだろうと考える。

ヒラリー・クリントンの遊説先と選挙戦結果

ヒラリー・クリントンが大統領選挙に負けた。それは衝撃を持って伝えられた。

ヒラリー・クリントンの敗因の一つが、アメリカの中西部の有権者を重視しなかったのではないかという説がある。

例えば、このニュースウィークの記事などはそのような記事だ

www.newsweekjapan.jp

(ペンシルベニア州)ノーサンプトンのような、これまで確実に民主党を支持してきた郡をひっくり返すトランプ氏の能力は、米大統領選での同氏の勝利に貢献した。民主党の選挙戦略にとって防波堤とも言えるペンシルベニアや他の「ラストベルト(さびついた工業地帯)」と呼ばれる中西部・北東部地域で勝利するためには、それは決定的に重要であった。また、フロリダやノースカロライナといった激戦州を制する原動力にもなった。

トランプに比べて、ヒラリーは、この中西部、北東部地域のラストベルトを重視しなかったので、選挙に敗れたという説だ。票が取れなかったのは事実だが、それではヒラリーは、それらの地域を軽視したのだろうか?

実際に軽視していたかどうかは、彼女がどの場所に遊説したかを見ればわかるのではないか?彼女の遊説先を集計すればどこに重点をおいていたかわかるかも知れない。

ヒラリーの遊説先

ヒラリーの遊説先はこちらに、まとめられている。

https://hillaryspeeches.com/speech-archive/2013-2/

こちらの、Speech Archiveを見れば、何年にどこでスピーチをした(遊説をしたかがわかる)。

その場所をCSVでまとめた。

https://dl.dropboxusercontent.com/u/52083005/sdf.csv

2013年からのデータがあるのでそちらをまとめた。

多い順に並べると次の様になる。

州名 遊説回数
New York 200
Iowa 169
California 167
Florida 133
New Hampshire 113
Pennsylvania 104
Ohio 94
Washington, D.C 86
North Carolina 83
Nevada 66
Michigan 61

https://dl.dropboxusercontent.com/u/52083005/sdf3.csv

そちらを、地図にマッピングしたものはこちら。

https://i.gyazo.com/7c434f232ad480be8acca16bab02a4a6.png

ヒラリーがラストベルトを重視したかというのが話題なので、ラストベルトにどのくらい行ったかを見てみよう。

ラストベルトの地図はこちら

Rust Belt - Wikipedia

ラストベルトの定義はこちら。

ラストベルト - Wikipedia

インディアナ州オハイオ州の北部、ミシガン州のロウアー半島南部、ウィスコンシン州ミシガン湖岸特にミルウォーキー周辺、シカゴとイリノイ州北東部、ニューヨーク州北部特にバッファロー周辺、ニューヨーク市ニュージャージー州北部、ペンシルベニア州の大半、ウエストバージニア州の北部特に北部ペンハンドルと呼ばれる地域が入っている

ラストベルトへの遊説回数

遊説回数
New York 200
Iowa 169
Pennsylvania 104
Michigan 61
Illinois 42
Washington 19
Indiana 11
West Virginia 4

実際の選挙勝敗はこちら

https://upload.wikimedia.org/wikipedia/commons/e/ec/ElectoralCollege2016.svg

ペンシルベニアやミシガンなど結構行っているように見える。

ペンシルベニアなどは、前回民主党が取ったが、奪われている。

トランプはやはり貧困層に支持されて勝利したのではないか?

すごいことになってしまった。2016年の米国大統領選挙はトランプ候補が大統領に当選してしまった。 登場した当初は、ギャクかなにかかと思ったが、何故か大統領の座に上り詰めてしまった。

今後、彼がなぜ大統領になったのか分析されると思うが、次のような趣旨の話を見つけた。

トランプの支持者は、富裕層であるという主張だ。

確かに選挙結果の統計を見るとたしかに、富裕層がトランプを支持している。

各属性の支持率についてはこちらのwikipediaを参考にした。

United States presidential election, 2016 - Wikipedia

世帯所得別の投票率はこちら。

f:id:shibacow:20161112175404p:plain

青がヒラリー、赤がトランプだ。所得3万ドル以下の世帯、及び、5万ドル未満の世帯が、ヒラリーを支持していることがわかる。

でも、アメリカ大統領選挙の仕組みは独特で、ちょっとコレだけでは話は終わらない。

アメリカの選挙制度、基礎ポイントと、不動ポイントを奪い合って勝者を決める。

アメリカの選挙制度は、選挙人制度と言う独特の制度がある。各州で応援する大統領候補に投票できる権利をもった一群の人がいる。選挙ではその人を選ぶのだ。選挙人は全体で、540人くらいいて、270人を取れば大統領に当選できる。各州には選挙人の数を割り振っていて、その州で勝った候補が、選挙人を総取りできる。例えば、ヒラリーが、カリフォルニア州を取れば選挙人は55人取れる。

アメリカでは、民主党が強い地盤、共和党が強い地盤があり、よほどのことがない限り、贔屓の党が勝つという地域がある。その他、選挙のたびに、勝つ党が違う、スィングステートという州がある。また、共和党、民主党ともにそれぞれ自分の強い属性と言うものを持っている。例えば共和党はもともと富裕層の票を集めていて、民主党貧困層の票を集めている。

わかりやすくゲームに例えると、大体共和党民主党で、160ポイントづつ基礎ポイントを持っていて、残りの220ポイントくらいの浮動ポイントを奪い合うということをやっている。

図にするとこんな感じ。

f:id:shibacow:20161112181157p:plain

このように考えると、取れる戦略は、次の3つになる。

  1. 自分の基礎ポイントを防衛する
  2. 相手の基礎ポイントを奪う。
  3. 浮動ポイントを取り込む。

先程、貧困層は、ヒラリーを支持していると書いた。でも上に書いたようにもともと民主党共和党ともに得意な属性を持っているので、それが過去の選挙からどのように変動したかのほうが、重要である。

オバマvsマケイン、オバマvsロムニーからどのように変化したか?

2008年から、アメリカ大統領選挙は三回行われている。 2008年、2012年、2016年の三回だ。

2012->2016 オバマvsロムニーとヒラリーvsトランプ

2012年は、オバマ(民主党) vs ロムニー(共和党) で争われた*1

2012年の投票者属性はこちらにある。

United States presidential election, 2012 - Wikipedia

この際の、世帯収入別投票を見てみよう。

f:id:shibacow:20161112183508p:plain

世帯収入、3万ドル以下、及び5万ドル以下が、オバマ(民主党)に投票しているという意味では支持は変わらない。しかし、その投票率はかなり異なる。3万ドル以下の世帯では、オバマ(63%)->ヒラリー(53%)に10ポイント減り、ロムニー(35%) -> トランプ(41%)と6ポイント増えている。条件の違うパーセンテージをそのまま比較するのは注意が必要だが、それでも、3万ドルの層が、投票をトランプに切り替えているのではないかと考えられる。2012年->2016年の変化を、その他の世帯年収も合わせて、増減をヒートマップにした。

f:id:shibacow:20161112184302p:plain

世帯収入3万ドル以下では、民主党(ヒラリー)が前回より10ポイント下げて、トランプは、6ポイント増えている。面白いのは、10万ドル以上の人は、共和党は減らし、民主党とその他政党に流れている*2

2008->2016 オバマvsマケインとヒラリーvsトランプ

2008年は、オバマ(民主党)vs マケイン(共和党)で争われた。

2008年の投票者属性はこちらにある。

United States presidential election, 2008 - Wikipedia

再び、世帯年収別投票を見てみよう。

f:id:shibacow:20161112185403p:plain

この調査時は、2012,2016と比較して金額の区分が細かい。それぞれの階級値の割合がついているので、実数に直して、1万5千ドル以下と3万ドル以下をの実数を合算して、割合を算出した。その結果がこちら。

f:id:shibacow:20161112185846p:plain

2008年->2016年の変化を、その他の世帯年収も合わせて、増減をヒートマップにした。

f:id:shibacow:20161112190147p:plain

2008と2016の比較では、3万ドルの世帯では、民主党は支持を11ポイント失い、共和党は8ポイント増やしている。

おもしろことに2008年と比べても2016年は、10万ドルを超える世帯では支持を失っている(保護貿易の強い制度はビジネス層に受けが悪いのだろう)。

どこを捨てどこを取ったのか?

上に書いたように、大統領選挙は、

  1. 自分の基礎ポイントを防衛する
  2. 相手の基礎ポイントを奪う。
  3. 浮動ポイントを取り込む。

という戦略で戦われる。トランプの支持層は富裕層であると言うのは若干違うように感じていて、より正確に云うと、共和党の支持層は富裕層である。しかし、トランプは、その富裕層の支持を削り、貧困層の票を取りに行った。というのが正しいのではないかと思われる。絶対値としての投票率ではなく、前回や前々回の差分を見たほうが、個々の候補の戦略が読み取れるのかも知れない。wikipediaでは2008年以降しか、世帯年収ごとの投票行動を取れなかった。どなたか、ブッシュ政権(共和党政権)時の投票行動と比較すると、その差異がよりわかりやすくなるのかも知れない。*3

追記

ロムニーとトランプの取った票の推移としてはこちらがわかりやすい。中西部のラストベルトの票がトランプに流れている。

*1:wikipedia上では2008年より前の世帯収入別の投票行動のデータが見つけられなかった

*2:保護貿易を推進するという主張はビジネス層からすれば正気の沙汰ではないと考えられているのだろう

*3:パーセンテージの比較じゃなくて、階級値の割合もわかるので、一旦実数に直して比較したほうが良いがめんどくさいのでやってない。

ニコニコ動画の全視聴数の推移 2011-2016

ニコニコ動画、ここ5年の全視聴数推移を調べた。

概要

ニコニコ動画が、サービス開始からそろそろ10年になるらしい*1

夏の風物詩のように、ニコニコ動画衰退論がささやかれるので、実際のところどうなのかをまとめてみた。

ニコニコ動画では、このページhttp://www.nicovideo.jp/video_topで、総動画数総再生数総コメント数を調べることが出来る。 2011年よりこの数値をとっている。表示されるのは総再生数なので、一日ごとの差分を見れば、再生数がどの程度変動しているか分かる。

pythonの分析環境Project Jupyter | Homeと言うものがありそれを使ってみたかったので、分析してみた。

昔書いたこちらの記事のアップデート記事である。

shibacow.hatenablog.com

2011年からの一日の総視聴数

2011年年からの1日の総視聴数をグラフにすると次のようになる。変動を見やすくするため、四半期(90日)単位のまとめた*2

赤い線は90日をまとめた上での中間の値(中央値)青の4角は、それぞれ、90日の視聴数を、小さい順に並べて、25%の位置にある値と75%にある値の範囲である。まあ、一日の平均的な視聴数はそのくらいにあると考えれば良い。

また、縦軸の1-5はそれぞれ、一千万再生から五千万再生に当たる。 横軸の2011_3は2011年3四半期(2011年6月-9月)に当たる。

f:id:shibacow:20161105030343p:plain

2011年は、大体二千万再生くらいだったが、2015年-2016年では三千万から四千万再生くらいだ。

2011年からの一日の総コメント数

f:id:shibacow:20161105034006p:plain

コメント数は、2011年から減り始め、2013年には一日100万コメントを割り込むようになった。 最近は、更に減り、70万コメント位になっている。 スマホでの視聴ではコメントを打ちにくくそれが、影響しているのかも知れない。

2011年から一日の投稿動画数(純増)

一日の動画投稿数。本当は動画投稿数とは少し異なり、動画の純増数をグラフ化した。ニコニコ動画は、動画の削除も盛んで、一日の投稿動画の総数の差では、投稿数から削除した数を引いたものしか分からない。

f:id:shibacow:20161105034759p:plain

2011年には、一日5000動画ほど増えていたが、最近は3000ちょい位。横ばいから若干下がっているようにも見える。 これは、動画投稿数が減ったのか、動画投稿数は一定だが削除数が増えたのかは分からない。 投稿動画のサイズ数が100MBから1.5GBに変わったのでそれが今後影響するだろうか。

まとめ

ニコニコ動画の2011年から2016年までの一日単位の、総動画視聴数、総コメント数、総動画投稿数をまとめた。 変化の早いネットの世界で、10年もサービスを提供できているのがすごいなと思った。 次の十年、ニコニコ動画はどう変化するのだろうか?

おまけ

前の記事と同様に、他の方が追試出来るように元になったデータをおいておきます。

https://dl.dropboxusercontent.com/u/52083005/%E3%83%8B%E3%82%B3%E5%8B%95%E8%A6%96%E8%81%B4%E6%95%B0%E6%8E%A8%E7%A7%BB%282011-2016%29.csv

カンマ区切り、日付、総視聴数、動画投稿数、コメント数 になっています。

date total_view total_video total_res
2011-07-07 25668498001 6215110 3171405319
2011-06-29 25519243483 6175177 3159675814
2011-07-05 25629892748 6206050 3168753300
2016-11-03 79431428013 13892040 5127220695
2016-11-04 79469769819 13895552 5127856263
2016-11-05 79501400310 13898666 5128197883

このページhttp://www.nicovideo.jp/video_top下部にある、

総動画数 13,899,563 (1234),総再生数 79,508,387,456,総コメント数 5,128,496,130

を毎日取ったデータになっています。

おまけ(Jupyter-notebook)での分析事例

今回始めてJupyterを使ってみたが、結構便利だった。特にpythonのデータ分析ライブラリpandasとの連携は結構便利だった。 実際どのようにデータをまとめたか、実例を示す。

パスワード等は、dotenvで秘匿した。

import pymysql
import pandas.io.sql as psql
import pandas as pd
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
import os

connection = pymysql.connect(host=os.environ.get("MYSQL_HOST"),
                            user=os.environ.get("MYSQL_USER"),
                            password=os.environ.get("MYSQL_PASS"),
                            db=os.environ.get("MYSQL_DB"),[f:id:shibacow:20161105030343p:plain]
                            charset='utf8mb4',
                            cursorclass=pymysql.cursors.DictCursor)

集計の元になるデータはMySQLに保存しているのでそれを取得する。

%matplotlib inline
sql="select date_format(date,'%Y-%m-%d') as date,total_view,total_video,total_res from head_line where hour(date) = 0;"
df = psql.read_sql(sql, connection,index_col=['date']) # pandasのDataFrameの形でデータを取り出す
connection.close()
df

データを取り出す。 生のデータは下記のようなデータ。

total_view total_video total_res
date
2011-07-07 25668498001 6215110 3171405319
2011-06-29 25519243483 6175177 3159675814
2011-07-05 25629892748 6206050 3168753300
2011-07-08 25688332251 6220608 3172805412
2011-06-30 25532404679 6179159 3161062606
2011-07-06 25649441785 6210713 3170208631
2011-07-02 25566192673 6188544 3163677078
2011-07-03 25586929485 6194878 3165350407
2011-07-10 25697841451 6230748 3175964918
2011-06-28 25504077880 6171226 3158244709
2011-07-04 25610962630 6201121 3167275560
2011-07-09 25676175057 6225132 3174180719
2011-07-01 25550751270 6183766 3162389186
2011-07-11 25722218681 6236701 3177878150
2011-07-12 25740820291 6240772 3179341304
2011-07-13 25758942644 6244412 3180828088
2011-07-14 25776853770 6248912 3182241856
2011-07-15 25795989564 6253650 3183695290
2011-07-16 25815077220 6258060 3185161503
2011-07-17 25839078907 6264020 3186957844
2011-07-18 25862885471 6269457 3188856253
2011-07-19 25888359965 6275589 3190803602
2011-07-20 25910349992 6281083 3192720554
2011-07-21 25932553442 6286115 3194525492
2011-07-22 25954017328 6291405 3196286224
2011-07-23 25974682603 6296178 3198055768
2011-07-24 25994094398 6301902 3199918724
2011-07-25 26017595943 6307814 3201901581
2011-07-26 26037201371 6311686 3203648580
2011-07-27 26057985435 6316005 3205519576
... ... ... ...
2016-10-07 78540469776 13805528 5111521033
2016-10-08 78571868061 13808908 5112057667
2016-10-09 78610591273 13813170 5112754887
2016-10-10 78648629467 13817141 5113513792
2016-10-11 78688111980 13821629 5114229736
2016-10-12 78716649700 13823269 5114907735
2016-10-13 78750017702 13826416 5115431383
2016-10-14 78782252333 13829280 5115935421
2016-10-15 78808116368 13832072 5116417915
2016-10-16 78848927694 13836082 5117085534
2016-10-17 78890787429 13840397 5117836803
2016-10-18 78913288918 13842122 5118411190
2016-10-19 78946009528 13844557 5118922663
2016-10-20 78975480428 13846753 5119285619
2016-10-21 79008786862 13849860 5119930731
2016-10-22 79036248402 13852872 5120442702
2016-10-23 79072535276 13856393 5121110246
2016-10-24 79111390199 13860591 5121860183
2016-10-25 79143498816 13864002 5122408876
2016-10-26 79173603174 13866512 5122918150
2016-10-27 79205807745 13869340 5123404989
2016-10-28 79232873844 13872029 5123888573
2016-10-29 79264668078 13874739 5124400200
2016-10-30 79301912653 13878326 5125031457
2016-10-31 79343199373 13883244 5125730243
2016-11-01 79373571612 13887162 5126220221
2016-11-02 79400805678 13889885 5126748616
2016-11-03 79431428013 13892040 5127220695
2016-11-04 79469769819 13895552 5127856263
2016-11-05 79501400310 13898666 5128197883

1947 rows × 3 columns

df2=df[['total_view','total_video','total_res']].diff().dropna()
df2.index=pd.to_datetime(df2.index)
df3=df2.where(df2 > 1).dropna()
df4=df3.query('total_res < 3000000 & total_video < 8000 & total_view < 70000000')

一日単位のデータは、どんどん増えていくので、前日との差分を求める(diff)。前日との差分なので一番最初のデータは無い(NaN)になるので、それは除外する(dorpna)。

数値がおかしくて、前日との差分がマイナスになったり極端に大きかったりするのでそれらのデータは除外する。

keys='total_view'
#df3[keys].hist(bins=15)

df4.boxplot(column=keys,by=df4[keys].index.map(lambda x:"{}_{}".format(x.year,x.quarter)),rot =270)

視聴数の推移を求める。boxplotでやたら横幅が広い画像が出たがなぜだがわからず。

f:id:shibacow:20161105030343p:plain

keys='total_res'
#df3[keys].hist(bins=15)

df4.boxplot(column=keys,by=df4[keys].index.map(lambda x:"{}_{}".format(x.year,x.quarter)),rot =270)

コメント数の推移を求める。

f:id:shibacow:20161105034006p:plain

keys='total_video'
#df3[keys].hist(bins=15)

df4.boxplot(column=keys,by=df4[keys].index.map(lambda x:"{}_{}".format(x.year,x.quarter)),rot =270)

動画投稿数の推移を求める。

f:id:shibacow:20161105030343p:plain

*1:サービス開始は2006年12月12日だそうだ

*2:箱ひげ図という