QWERTY キーボード レイアウトを考慮したランダムなキーボード ヒットの検出
-
25-09-2019 - |
質問
の 最近の Wikipedia 荒らし検出コンテストの優勝者 「」によって検出が改善される可能性があることを示唆していますQWERTYを考慮したランダムなキーボードヒットの検出 キーボードレイアウト".
例: woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh
何かソフトウェアはありますか これはもうですか (できれば 無料でオープンソース) ?
そうでない場合, 、アクティブな FOSS プロジェクトはありますか? ゴール これを達成することですか?
そうでない場合, 、どのように提案しますか 埋め込む そんなソフト?
解決
2つなら バイグラム 分析されたテキストでは、QWERTY 用語では近いものの、英語では統計的頻度がほぼゼロ (「fg」または「cd」のペアなど) である場合、ランダムなキーボード ヒットが関与している可能性があります。より多くのそのようなペアが見つかった場合、可能性は大幅に増加します。
バッシングに両手を使うことを考慮したい場合は、QWERTY 近さについては別の文字で区切られた文字をテストしますが、バイグラム頻度については 2 つのバイグラム (またはトリグラム) をテストします。たとえば、テキスト「flsjf」では、QWERTY 距離については F と S をチェックしますが、周波数についてはバイグラム FL および LS (またはトライグラム FLS) をチェックします。
他のヒント
私の経験では、ほとんどのキーボードの連打はホームローで行われる傾向があります。使用されている文字の割合が高いかどうかを確認するのはかなり簡単です。 asdfjkl;
.
2 つの文字のシーケンスの経験的分布、つまり「文字 b の後に文字 a が続く場合の文字 a の確率」を考えてみます。この確率はすべて、サイズ 27x27 のテーブルに収まります (スペースを文字として考慮)。
ここで、これを英語、フランス語、その他のテキストの束からの履歴データと比較してください。比較にはカルバック発散を使用します。
キーボードのレイアウトに基づいたアプローチを取ると、良い指標が得られます。QWERTY レイアウトでは、特定のテキスト内の文字の約 52% がキーボード文字の最上行からのものであることがわかります。キャラクターの約 32% は中央の行から、14% は下位の行からになります。これは言語によって若干異なりますが、検出できる非常に明確なパターンが存在します。同じ方法を使用して他のキーボード レイアウトのパターンを検出し、意味不明な部分をチェックする前に、入力されたテキストに使用されているレイアウトを検出していることを確認します。パターンは明らかですが、この方法が長いスクリプトで最も効果的であることを考慮すると、この方法を 1 つの指標としてのみ使用することが最善です。英数字と混合された非英数字文字、テキストの長さなどの他の指標を使用すると、重み付けを適用するときに、意味不明なエントリを全体的にかなり適切に示すことができる追加の指標が提供されます。
フレドリーの答えは、近くの文字から単語を構築する文法にまで拡張できます。
例えば asasasasasdf
を接続する文法を使用して生成できます as
, sa
, sd
そして df
.
このような文法を使用して、キーボード上のすべての文字 (隣り合う文字) に拡張すると、解析後に、この「意味不明な」文法でどの程度のテキストを生成できるかの目安が得られます。
警告:もちろん、そのような文法について議論し、「意味不明な」テキストの例を列挙したテキストは、通常のスペルチェックされたテキストよりも大幅にスコアが高くなります。
この例のアプローチでは、「h4x0r ruleszzzzz!!!!!」の形式での荒らし行為は捕捉されないことに注意してください。
ここでの別のアプローチ (上記の方法と統合できます) は、破壊されたテキストのコーパスを統計的に分析し、破壊されたテキストに含まれる一般的な単語を取得しようとすることです。
編集:
QWERTYを想定しているということは、英語も想定できるのでしょうか?
KISS はどうでしょうか。英語のスペル チェッカーでテキストを実行し、惨めに失敗した場合は、おそらく意味不明であると結論付けます (問題は、なぜすばやく入力した意味不明の内容と、ランダムなナンセンス、さらに言えば、非常に綴りの悪いテキストとを区別したいのかということです)。
あるいは、他のキーボード レイアウト (Dvorak など) や言語を考慮する必要がある場合は、利用可能なすべての言語のスペル チェッカーでテキストを実行してから続行します (これにより、言語の自動検出も可能になります)。
これはあまり効率的な方法ではありませんが、ベースライン テストとして使用できます。
注記:
長期的には、破壊者はそれに適応して、たとえば他のウィキペディアのページからの抜粋などを使って破壊行為を始めるだろうと想像しますが、これは最終的には破壊行為として自動的に検出するのが難しいでしょう (OK、既存のテキストはチェックサムされ、重複にフラグが立てられるかもしれませんが、テキストが他のソースから来たもので、最終的には難しいでしょう)。