otakuhouse

左翼ツイッタラ分類器を作った

ツイートを入力するとそのツイートが左翼的/ 左翼的でない を二値分類する超ラジカルな装置を作った.アプローチとしては機械学習を用いた.機械学習については授業4回分の聞きかじりの知識しかないし,特に工夫もないので,テクニカルな話は全部飛ばして,高校生くらいの人が読んで面白いかもしれないくらいの粒度を目指して書きました.

 

 

モチベーション

大学院の授業で「公開されている機械学習のソフトウェアを用いて何らかの分類問題を解け」という課題が出た.
  • 機械学習とは

    • センサやデータベースなどからある程度の数のサンプルデータ集合を入力して解析を行い,そのデータから有用な規則,ルール,知識表現,判断基準などを抽出し,アルゴリズムを発展させる*1

    • メールフィルタの例(自作)

      1. スパムメールとそうでないメールを大量に読ませる.

      2. 「無料」とか「100万円」みたいな文字列が入ってると,スパムっぽいな〜という傾向をコンピュータは学習する.

      3. 学習したルールを元に,あらたに受信した未知のメールをスパムかそうでないかを判定する.

    • 自分の専攻分野の言語処理においては今どきのヤングが好きなモダンで大味でアメリカンなアプローチである.自転車で言うとスラムやアメクラ的な雰囲気がある.

 
つまり,○のデータと×のデータを沢山あつめて学習させて機械に○×の分類問題を解かせればいいらしい.例えば,評価の高い食べログの口コミと,評価の低い食べログの口コミのデータをたくさん機械に読み込ませて,評価未知の口コミをの評価を推定する,などが考えられる.自由度が高いのでユーモアのセンスが求められる課題だ.
 

Twitterにいるインターネット左翼を探そう

機械学習に使えるような大規模データは持っていないのでデータを集める.
 
筆者はキモ・オタクなので大量のテキストデータと聞いてすぐにTwitterが浮かんだ.ツイートをすべて○と☓のラベルに分類して,○のツイートと☓のツイートを判定させることにする.そこまでしなくても,学習用にライセンスフリーの大規模テキストデータが提供されている.しかしこれは授業で紹介されてしまったので,この辺を使ってしまうと多分ほかの人と被るのでオリジナリティが下がると考えたのである.
 
分類すべきラベルは「左翼のツイート  / 左翼でないツイート」とした.なぜなら,インターネット左翼は大体みんな似たようなステロタイプが多く,ツイートも政治的な発言が多い.サヨク傾向のあるユーザがみんな同じようなことを言うなら,分類問題としてはとても簡単だと直感的に思える.
 
分類すべきラベルが左翼でない場合,例えば逆にネトウヨを分類する場合を考える.ネトウヨはアニメオタクであったりミリオタだったりするので,ネトウヨでないオタクと見分けがつかない可能性がある.例えば,アイマスの発言を頻繁にする複数ネトウヨのツイートを学習した場合,ネトウヨでないアイマスオタクをネトウヨと判定してしまうかもしれない.このように特徴にゴミが混入すると判定精度が下がるので,同じようなことをよく言う左翼は分類問題として簡単だと踏んだ.
 

特徴量の定義

学習アルゴリズムは既存のソフトに丸投げだし仕組みもあまり理解してないので,「ツイートが似ている」ということをどう定義するかか工夫ポイントだ.人間は賢いので,似ている / 似ていない複数のツイートを見た時,何となく似てるとか似てない,みたいなことは判断できる.機械にとってツイートはただの文字列でしかない.機械は複数のツイートのどういう特徴が同じであれば似ているのか,人間にとっての「何となく」の部分をちゃんと学習の時に定義してあげないと,似てるとか似てないとか分からないのだ.
 
では何の特徴を学習に用いるか.ツイートには様々な特徴が含まれる.例えば次のようなものがある.
  • どんな文字が使用されるか
  • 文字数
  • 主語はなにか
  • どんな文型が使用されるか
  • 句読点は使用するのか,どのくらい使用するのか
  • 語尾はなにか
上のような要素から「これが似ていればそのツイートは似ている」みたいなことを取捨選択する.沢山考えられるし,試そうと思えば全部試せるが,あんまり授業の宿題に1日以上時間を割きたくないので効きそうなやつ3つくらいにしたい.この辺は勘で選ぶ.今回は次の3つにした
  1. ツイート中の文字ユニグラムの出現回数
  2. ツイート中の文字バイグラムの出現回数
  3. ツイート中の名詞の出現回数
 
1と2はざっくり言うとどんな「文字を使ってるか」なんだけど,ちゃんと説明すると意外と面倒だったので気になる人は調べてください.要は「サヨクが使いがちな文字によって分類する」と解釈してもらえば大丈夫.文章の特徴を取り出すとき言語処理分野では,ベースラインというか,もっともシンプルで何も考えてないアプローチです.卵料理における目玉焼きのような存在感がある.
 
3は「ツイートの内容の鍵を握るのは名詞なので,名詞以外の情報はゴミで,名詞だけを特徴として採用したほうが精度が上がる」という直感に基づいて導入した.つまり「サヨクが使いがちな名詞にもとづいて分類する」ということです.ちなみに,ここでは代名詞と非自立語の名詞は,「(多分)ツイートの特徴を表すものではない」として除外した.「非自立語の名詞なんかあるのか」って思う人がいるかもしれないけど,あるし,使用頻度は高い.*2
 
学習データには筆者が左翼だと判断したユーザと,そうでないユーザからそれぞれ8,000ツイートを抽出したものを利用した.8,000ツイートというのは,Twitterなのでほぼ無尽蔵にデータは収集できるが,計算時間が長くなってしまうので適当に切り上げた量である.

結果

文字ユニグラム,バイグラム,名詞を特徴としたデータについて,3種類の学習アルゴリズムでそれぞれ分類し,もっとも結果がよかったものをまとめる.
 
 

f:id:otakuhouse:20150315192847p:plain

 
最も有力な名詞の出現回数を特徴とした分類で79.15%の精度で左翼のツイートかどうか見分けることができた.ツイートに含まれる名詞だけでここまで高精度に判定ができるのだ.左翼はほんとうに似たようなことしかツイートしていないようだ.
 
表の数値は1ツイートごとの判定精度なので,あるユーザのツイートを100件くらい読み込んで分類すれば,ほぼ100%の精度で分類できるだろう.
 

おわりに

今回の結果は,左翼にありがちな「インディペンデントでリベラルで個性的風な感じを出しながら,実際には一つのステロタイプに陥っている」風潮の一つの結果だと考える.これは左翼にも多いヒッピーには特に強く見られる現象である.ヒッピーは自称自由人なのに,実際にはファッション,主張,ライフスタイル,…,色々なフィールドで「ヒッピーかくあるべき」みたいなモデルがあって,みんなそれを忠実に守っているようにしか見えない.左翼もヒッピーもパンクスも,反骨精神のある人達は好き好んでステロタイプにはまりたがる,みたいな矛盾が世界中で起きている,という筆者の持論を裏付けるようなひとつの結果になった.