xckb的雑記帳

15年ほどWeb日記をつけ続けていたのですが2012年で一旦休止、1年半ほど休んで新天地でぼちぼちのんびりまた始めてみることにしました。

より現実的にtwitterユーザのシャドウバン(Search Suggestion Ban)率を推定しよう

とりあえずシャドウバンって何? という方のために簡単に解説すると、シャドウバンとは、Twitterが特定のユーザに対して、他のユーザによる検索結果(ハッシュタグを含む)から排除するという制限を、ユーザ自身に知らせることなく、なおかつ異議申し立てを受け付ける手段も用意せずに課しているというペナルティのことである。任意のアカウントのシャドウバン状態を、判定サイトで簡単に検査することが可能だ。

shadowban.eu

判定結果で赤字が出た人は(Search Suggestion Banを主に解説したものとなるが)、本ブログの以前のこの記事を読んでいただけたらと思う。ちなみにGoogleでシャドウバンやSearch Suggestion Banを検索すると、(もしかしたらそれらのブログの執筆当時は正しかったかもしれないけれども)誤った情報が載ったサイトが検索上位にも多く出てくるので、気をつけていただきたい。

xckb.hatenablog.com

さて先月は、山本太郎参議院議員の公式twitterアカウント(なんと青マーク付きの国会議員アカウント)がシャドウバン(Search Suggestion Ban)を受けたり、自然災害等に対して早く正確な速報を上げるということで多くの人が頼りにしているアカウント(特務機関NERV)が、よりにもよって新潟・山形の地震発生直後にアカウント凍結とシャドウバン(Search Ban)を受けたりという盛りだくさんの事件があり、シャドウバンがやっと日本のtwitter界でもかなり一般的な認識を得たと言えるだろう月であった。


そんな騒動の直前にSearch Suggestion Ban(以下SSB)は5人に1人のTwitterのアクティブユーザに適用されているのでは? という記事を書いたのだが…。

xckb.hatenablog.com

この記事にも後日追記したとおり、この記事の結論はツイート数をベースにした考え方であり、「5つに1つのツイートがSSBされたユーザによるものだ」ということは言えても(それでも十分に衝撃的ではあるのだが)、5人に1人のユーザがSSBを食らっている、とするには根拠が弱い。

そこで、より実感に近いアクティブユーザのSSB率を算出してみたいということで、その時のデータをもう一度解析し直してみたのだが、やっと一通りの結果が出たので、今回はそれをレポートとしてまとめてみたいと思う。

前回の記事を未読の場合は、先にそちらをお読みいただけたほうが、より理解しやすいだろう。

f:id:xoc:20190702122809p:plain

ということで今回の目次。

集計方法

まず、前回と今回の集計法の違いについて説明する。

1日あたりのツイート数によって重み付けをする

前回の調査では、無作為に適当なキーワードの「最新」の検索結果からツイートを抽出したが、これではツイート数の多いユーザは検索結果により多く含まれることとなり、よりツイート数の多いユーザが結果に強く反映されることとなる。

前回の記事では、特に重み付けをせずに集計を行っていた。つまりi番目のユーザがSSB対象であれば1、そうでなければ0という関数S(i)を考えると、SSB率のsを次のように求めていた。

f:id:xoc:20190701122241p:plain

しかし、少し考えれば分かる通り、ツイート数が多いユーザーは、無作為な検索結果に現れる可能性も高いのである。

そこで、まずは単純なモデルを考えてみた。検索結果に現れる確率は1日のツイート数に比例するという仮説(厳密には正確ではないが悪くない近似だろう)を立て、そのユーザiのその日のツイート数T(i)の逆数を重み付けに使用することとして、

f:id:xoc:20190701121853p:plain

を、重み付け補正済みのSearch Suggestion Ban率として定義する、という方針である(T(n)を常に1として扱うと最初の式となる)。

まあ、ここでその1日のツイート数を数えるというのがまた大変に難儀な作業なのだが、たとえば2019年6月15日のあるユーザのツイートを検索するには「since:2019-06-15_00:00:00_JST until:2019-06-16_00:00:00_JST from:ユーザ名」のように検索すれば出てくるので、あとはこれをtwitterの検索画面の「最新」タブで頑張って集計すれば良い。

(もちろんAPIで集計すればもっと簡単だが、最近厳しくなったtwitter APIの利用申請をこんな目的でクリアできるとは思わないし、そもそもAPIの利用目的として明示的に禁止されている。かと言ってスクレイピングで集計するにしても、twitterは無許可のスクレイピングを禁止しているので難しい)

1日のツイート数の下限に閾値を導入

しかし、少し考えればわかるのだが、これは1日に1ツイートしかしないユーザを1日に100ツイートするユーザの100倍の重みでカウントするということである。現実的な統計を取るのに必要なサンプル数は激増してしまい、100件程度では難しいのだが、ただでさえ1日のツイート数の集計は苦行そのものである。

今回のように100件程度のサンプルでは、そのようなユーザは無作為検索の中での出現率は低く、なおかつ「ツイート数の少ないユーザはSSBされる可能性が低い」という経験則が正しければ、集計される値を一方的に下方向に補正させる傾向のある「ぶれ」となってしまう。

実際にはユーザ数とツイート数の関係などでさらに重み付け集計を行うべきなのだろうが、それは管理者側でもなければ統計を取ることが非常に難しい。そこで次善の策として、1日のツイート数が一定に満たないユーザを「足切り」することを考えた。

そもそも、1日に1ツイートしかしないユーザは「twitterを日常的に利用しているユーザ」と言えるだろうか?

自分としてはそうは思えないが、一方で一般的にSNSのアクティブユーザというのはMAU (Monthly Active Users)やDAU (Daily Active Users)という指標で捉えられているらしく、これは書き込んだユーザの集計ですらなく、1ヶ月ないし1日の間にログインして記事を「読んだ」ユーザの率である。

まあ、対株主的な数値指標としては、SNSの広告塔的側面から考えるのが妥当だろうから、これらの指標もそれなりに妥当性を持つのであろうが、ユーザー側の視点でシャドウバン率が問題となるのは、twitterで何らかの発信を定常的に行っているユーザに対して、どの程度の率でシャドウバンが適用されているか、ということと言っていいだろう。

そこで、1日にn回以上のツイートを行っている人、という想定で足切りを行い、nが1〜8人の場合の集計を行ってみた結果を次のグラフに示す。キーワードや統計は前回の記事で集めたデータをそのまま利用し、先程のその日1日のツイート数を追加集計したものを利用している。

f:id:xoc:20190701000506p:plain

1日に1ツイート、2ツイート程度のユーザを入れると、その少数のユーザに引きずられてデータがブレるのだが、一方であまり多くのツイート数のユーザまで足切りをすると、特にツイート数が全般的に少ないようなキーワードの結果が、サンプル数の低下によりブレ始めることとなる。

たとえば上のグラフでいうと、単純なキーワード検索ではないエロ画像系を除くと、全般的に足切り値が小さい部分でグラフが大きく下にブレる傾向があることがわかる。これはその多くがSSBされていない、1日のツイート数が非常に少ないユーザーの影響である。

一方で「#青ブタ」は翌日に劇場版アニメの公開初日をひかえていたという事で、普段あまりツイートしないユーザがことさらツイートしていた傾向が見られた。そのためか、ユーザの1日のツイート数平均は低くなっており、閾値が6を超えたところで大きく値がブレてしまう傾向が見られた。

ということで、あまり大きなところで足切りをするとそれはそれで適切ではないということが見てとれる。そのような事もあり、ためしにtwitterでアンケートを取ってみた。「Twitterを日常的に使っている人」というのはどの程度のツイート頻度の人と思うか、という内容である。

132人の投票をいただいた結果としては、1日数ツイートという結果が最大の賛意を得たということで、仮に1日に2〜3ツイートというところで足切りをしても、「Twitterを日常的に使っている人」に対する集計としては、それほど一般的なイメージと違わないということができるだろう。

ということで、ここでは「1日2ツイート未満の人」を対象として足切りを行い、集計することとした。

集計結果

今回の集計結果を前回と比較するとともに、考察しよう。

「Twitterを日常的に利用しているユーザ」のSearch Suggestion Ban率は?

ということで、1日3ツイート以上をしていたユーザ(ここでの「Twitterを日常的に利用しているユーザ」の定義)に限定して、さらに1日あたりのツイート数の逆数で重み付けをしてSSB率を集計した結果を、補正前のデータと共に示す。

SSB率補正前 SSB率補正後
「梅雨入り」 18% 12%
診断メーカー 17% 11%
「新幹線」 23% 11%
「#AWSSummit」 5% 2%
「#青ブタ」 19% 20%
「ネトウヨ」 21% 14%
エロ画像(総合) 42% 38%
エロ画像(二次元) 57% 51%

全体的に減ってはいるのだが、それでも「Twitterを日常的に利用しているユーザ」の7〜9人に1人程度はSSBを受けている、とは言ってよいのではないか。仮に足切りを入れない場合でさえ、10%弱程度のユーザはSSBを受けているという結果が出ることは前章のグラフからも読み取れる。今回の集計結果を次のグラフに示す。

f:id:xoc:20190701011833p:plain

キーワードごとの傾向については前回の結論と余り変わりはないと言えるだろう。ただ、修正の結果としてあまり変わらなかったのが「#青ブタ」であるということがちょっと面白い。むしろ修正後に割合が増えている。映画公開日前日のお祭り騒ぎというのは、やはり通常状態とは違った傾向を示すのだろう。お祭り騒ぎといえば、修正の結果さらにSSB率が低くなった「#AWSSummit」も同様であると言えるだろう。

ツイート数とSearch Suggestion Banの関係について

さて、先程も述べた「SSBを食らっているユーザのツイート数は多い」という経験則は本当だろうか。今回の集計データについて、その視点から統計をとってみた。

f:id:xoc:20190701115913p:plain

これは流石に、すべてのキーワードにおいて、疑いもなくその傾向が見て取れる。SSBを受けているユーザのツイート数の平均は、概ね受けていないユーザのツイート数の平均のおよそ2倍程度あるという傾向が見られる。

因果関係があるかは不明ではあるが、少なくともツイート数とSSB率との間には、明確な相関関係があるようだ。

今回のデータを踏まえたエロ画像ツイート関係の考察

エロ画像は、明らかにSSB率と何らかの相関関係があるように見える要素ではあるが、それが本当に因果関係を持つかどうかは明らかではない。そして前回の記事でも書いたとおり、エロ画像全般に比べ、二次元エロの方が明らかにSSB率が高いのであるが、これは単純にtwitterが二次元エロの方をレーティングを高くしているというよりも、実写エロ画像の方は専門業者が多く、何らかの規制よけノウハウを共有しているのだが、よりエロコンテンツを簡単に製造できる二次元エロの方は、無防備な絵師たちがどんどんエロ画像をツイートするためにSSBを食らうのでは、という仮説を前回書いた。

今回の調査では、この仮説を補完するものなのか、あるいは関係ないものであるのかは明らかではないが、もう一つ面白い傾向が見えている。二次元エロ画像をツイートするアカウントのほうが、SSBの有無に関わりなく、明らかに1日のツイート数が多いのである。

従って、1日のツイート数が多いほうがSSB率が高いという法則から考えると、総合と二次元のSSB率の差はコンテンツの差ではなく、単にツイート数が反映されているだけ、という可能性もあるし、あるいは実写エロ業者はSSBを始めとするペナルティを避けるために、あえて1日のツイート数を抑えている、という可能性も考えることができるだろう(筆者はこの可能性が高いと考えている)。

現状の結論

ということで、全体的には次のようなことが言えると思う。

  • 日本語のツイートのうち5件に1件程度は、標準状態のユーザの検索結果には乗らなくなっている。
  • 「Twitterを日常的に利用しているユーザ」の少なくとも10人に1人程度のツイートは、標準状態のユーザの検索結果には乗らなくなっている。

流石に前回の5人に1人のユーザがSSBされている、というのはあまりに信じがたい結果であったのだが、今回の「Twitterを日常的に利用しているユーザ」の10人に1人がSSBされているというのは、自分の身の回りを見回したときにかなり納得のいく数字ではある。

普通の人が思っているよりも、ずっとシャドウバンされているユーザは多い。TLに頻繁に見かけるユーザはツイート数も多く、それゆえにシャドウバンされている可能性も高いだろう。自分はこのような「不明確な基準で、ユーザに知らせず、意義を認めない形でツイートが広がることを制限する機能が横行している」という状態は好ましくないと思っており、一刻も早い改善を望みたい。