別の可能な解決策を考えたとき、私はちょうど recaptchaが難しくなっている について考えていました。画像は永遠に続くわけではないので、いつの日か人間の論理や感情のような何かが必要になります。 Googleや他の人は、カテゴリごとに画像をグループ化しようとしています(属していない画像を見つけます)が、これは大量の画像を必要とし、視覚障害者には機能しません。
とにかく、大量のテキストのコレクション(各言語のパブリックドメインの本)が収集され、選択ボックスである1つ(または2つ)の単語を含む文がユーザーに表示された場合はどうなりますか?正しい英語/スペイン語/ドイツ語の文法を知っているコンピューターだけが、どの単語が文に属しているかを知ることができます。
このアプローチに問題はありますか?センテンスが表示されている言語を知っている人なら誰でも、reCAPTCHAのテキストを読むよりも簡単に答えを理解できると思います。さらに、非常に多くのセンテンスを保存すると、数ギガバイトのスペースしか必要とせず、画像やオーディオのテイクを作成するCPU時間の近くには何もかかりません。言い換えれば、誰でもシステムパフォーマンスへの影響を最小限に抑えて独自のキャプチャシステムをホストできます。
このアプローチに問題はありますか?より具体的には、このアプローチの主な問題を探しています。
まず、私はあなたに IBMのワトソン を与えます。コンピューティングは、言語の単純な空白を埋める問題をはるかに超えていると思います。
次に、ソフトウェアで実装されたすべてのスペル/文法チェッカーを紹介します。単語が文の中で文法的に正しいかどうかの判断は、90%を超えるケースで解決されます。私は首を突き出して、私が知っているほとんどの人間よりも識字能力が優れていると言います。
CAPTCHAのアイデアが期待どおりに機能しないと思います...
見てみましょう、常に最初の選択肢を選択し、最終的にそれを正しくするのにどのくらい時間がかかりますか?
パブリックドメインの本から文章を引き出す場合、ボットは文法について何も知る必要はありません。それらの同じ文に索引を付け、実際の文が使用した単語を見つけるために検索を行う必要があるだけです。そして、それはあなたが問題を合理的に解決することを前提としています。ジェフOは、毎回最初のオプションを推測することで問題を回避できる場所を提案しました。
さらに、パブリックドメインの本の世界の文章の多くは、この種の取り組みには不適切です。多くは文脈がなければ曖昧になるでしょう。多くは不快なコンテンツを含んでいます(ハックルベリーフィンからのランダムな文章を提示することを想像してください)。したがって、不快にならず、あいまいにならない一連の文に到達するには、かなりの労力を費やす必要があります。一部の文があいまいになることを受け入れると、誤った推測でボットを罰する能力の多くが失われます。
botsのより難しい問題は、文から単語を削除してから、同じ品詞の4つの異なる単語から選択できるようにすることです。 (たとえば、名詞を削除します。これら4つの名詞のうち、ここに最も適しているのはどれですか?)
タグ付けと解析のアルゴリズムは完璧ではありませんが、コーパスベースのアプローチは、コモディティまたはオープンソースソフトウェアでCAPTCHAの可能性を打ち負かすのに十分なほどパーサーをトレーニングできるようになりました。 (大量のスパムを送信している場合、全体的な成功率を高めるのに十分な数のメッセージが届かない限り、一部のメッセージが届かなくても問題ありません。)
しかし、コンピュータはまだセマンティクスに劣っています。
最近私が受け取るスパムのほとんどは、実際にはnotボットによって生成されたものです。フォーラムやブログなどにメッセージを投稿するために1時間に数セント雇われている第三世界の国々から大量のスパムが届きます。
人間とコンピュータを区別するシステムはこれを停止しません。
そのため、自分のサイトでCAPTCHAを完全に廃止しました。代わりに、私はかなり単純なjavascriptベースのソリューションを持っています(基本的に、クライアントで実行されているJavascriptはフィールドを再配置して、Javascriptをオフにして投稿すると失敗するようにします)。これにより、ボットスパムの95%が阻止されますが、明らかに人間のスパムには影響しません。ただし、CAPTCHAにも影響はありません。
正しい英語/スペイン語/ドイツ語の文法を知っているコンピューターだけが、どの単語が文に属しているかを知ることができます。
答えは主観的になる可能性があり(実際には主観的ではありませんが、言語の概念の欠如はすべての社会に及びます)、言語をネイティブに話さない人にとっては困難です。
(すべての言語が持っている)文法規則の有限のリストが提示されている場合、それは単にアルゴリズムになります。アルゴリズムを実装する意思のあるすべてのマシンが近づきます。
しかし、これらの深刻な落とし穴を無視すると、言語の問題があります。
ハンガリー語やフィンランド語のような膠着語は、この種の接尾辞に簡単に役立ちます。単語には多くの接尾辞を付けることができ、それぞれが文の中で異なる目的を果たします(たとえば、同じ名詞がオブジェクトまたは主語として使用される場合、異なる接尾辞があります)。ルールは人間にとってのみ複雑であり、マシンは数回の試行で正しいものを見つけます。
言語の分離(英語はおおよその例であり、標準中国語はかなりすっきりした言語です)は、文法は主にWordフォームではなく文の位置によって決定されるため、さらに悪化します。
ロシア語やギリシャ語のような融合言語はおそらくさらに別の一連の問題を引き起こします。
要約すると、うまく翻訳されてランダムに推測することが難しい言語のなぞなぞは、悪名高いほど見つけるのが難しいものです。構文よりもセマンティクスに集中する方がおそらくはるかに簡単です。たとえば、「次のシーケンスを続行します:木曜日、水曜日、火曜日...」または「焼く、揚げる、ローストする...」など。
キャプチャの背後にある通常の考え方は、ボットをほぼ常に停止する必要があるというものです。 Nの回答から複数選択すると、ボットは(N-1)/ Nの時間だけ停止するため、ボットは平均N回の試行で通過します。
間違ったキャプチャの回答に対してタイムアウトを実装することはできますが、英語(またはその他)の話が上手でない人や選択ボックス(手ぶれ、ネズミの悪い人など)に問題がある人に深刻な迷惑をかけることなく、これについて厳しくすることはできません。ハンディキャップ)。さらに、推測はさまざまなIPから発生する可能性があるため、タイムアウトによってボットネットが停止することはありません。
さらに、正当な答えが1つだけであることをどのように確認しますか? Project Gutenbergからランダムに選択された文は、ランダムに選択されたいくつかの名詞で意味をなす場合がありますが、正しい答えは1つだけです。
あなたがしているのは、人間があなたのサイトを使いにくくすることだけですが、ボットの場合は、障害物をまったく追加していません。
あなたがむしろ焦点を当てるべきことは、投稿された何かがスパムであるかどうかを自動的に検出し、そうである場合は投稿をブロックするメカニズムを作成することです(たとえば、それを人間の節度に委ね、ポスターにその程度のメッセージを与える)。
CAPTCHAは非常に煩わしいところまで来ており、私はCAPTCHAを使用するサイトをこれまで以上に避けがちであり、多くの人が私と一緒にいます。これは特に、スパムボットにまったく影響を与えないことが広く知られているためです。