Qiita
Python
HTML
spam
AI

Qiitaのスパムに対処する方法を考える


 なんかスパム投稿がいっぱい

 タグ・ランキングを見たら「vs」というのが一番に来ていた。一瞬、もしやVisualStudioCodeがPythonを上回ったのかと思ったら、単なるスパム投稿の塊だった。まあ、連休が明けたらなんとかしてもらえるだろう。もしかしたら、対処されないであろう連休を狙ってきたということだろうか?スパムが多すぎてあまりに酸っぱい、酸っぱいよ。

 まあ、それは置いておくとして、こういったスパムに対抗する方法を考えてみたい。


 相手がボットだったら

 キーワードや画像を人間に識別させ入力させるCAPTCHAを行うのが一般的である。しかしこれは正規利用のユーザに負荷をかける方式だ。あまりに面倒なので入力を代行するサービスが商売となってしまうほどである。さらに画像認識技術の発達により、難易度の高いCAPTCHAを人間よりも優秀に解いてしまうこともある。逆に早すぎたり、正確すぎると自動入力だと判断されるというカオスな世界となっている。いつまでイタチごっこが続くのか、先が見えない。ボットの対処のために人間がボーッとしてられないのだ。


 相手が人間だったら

 まずは登録ユーザをBANすることである。しかしたとえ一人BANしようとも、第二第三のスパマーが現れるのだ。もはや何番目のBANだという状態である。そうなると該当IPからの登録を弾くしか無い。だがIPをごまかしてきたら?

 本人確認の手段の一つとしてクレジットカードを登録させるというのがある。しかし無料サービスには馴染まない。クレジットカードのデータをクレと言ってジッとしていても稼働はしない。では打つ手無しだろうか?


 一見さんお断り

 一つの対処法として、既存ユーザの紹介が必要とする方式がある。SNSの草分け的存在だったmixiは招待制から始まった。ただそうなると、最初のハードルが高くなりすぎてサービスの普及を阻む要因にもなりかねない。非常にリスクの高い諸刃の剣だ。 


 キーワードによる検閲

 スパム投稿に含まれる何らかのキーワードをNGワードとして、投稿させないようにする手段もある。単純なNGワードだと正規利用者の投稿の妨げになる可能性があるので、キーワードのスコア付けが必要だろう。ただし問題がある。スパマーが投稿内容を修正して、検閲に引っかからないキーワードや文章に変えてきたら、再びロジックを再考しなければならない。ぶっちゃけ、やってられない。


 人間による承認

 投稿内容を管理者が確認し承認する方式だ。しかしこれは管理者の負荷がかかりすぎる。無料サービスではやっていられないだろう。他の方法としては利用者に対しスパムの判定を委ねる方法がある。一定基準を超えたら非表示とするのだ。ただし自分の気に入らない投稿をスパム扱いしたりというケースも考えられるので、運用がうまくいかない可能性もある。


 AIによるスパムの学習

 メールフィルタリングではすでに実現されている。スパムメールを学習し自動的にフィルタリングする方式だ。すり抜けてしまったものを学習させれば、精度を向上させることが出来る。しかし世の中には重要なメールなのにスパムみたいな形式で送られてくるメールがあり、必要なのにスパムとして振り分けられていたりと予断を許さない。

 投稿のフィルタリングにAIを活用するとして、致命的な問題がある。とても開発コストがかかることだ。無料サービスでの実施はあまりに厳しい。いつか「Pythonでスパム投稿を99%判別するプログラムを作ってみた」とかいう投稿を待つしか無いだろう。


 まとめ

 「Pythonでスパム投稿を99%判別するプログラムを作ってみた」はいずれ優秀な人が記事を投稿してくれると思う。