テキストの短いシーケンス (2 つまたは 3 つの単語など) がランダムかどうかを確認することは可能ですか? 最初に考えたのは、文字列のエントロピーを計算することでした。
H("hello world") = 2.84535
H("sdzfjksher") = 3.12193
の文字をどのように組み合わせて"hello world"
も同じエントロピーになりますが、のようなランダムな文字列が作成されます"llloo ehrdw"
。エントロピー ベースのメソッドは、テキストのような長い文字列でうまく機能します。ここでは、単一の文字を数えて、それが言語であることを判断することもできます。ここでZipfs法を使用して、実際の言語を確認することもできます...
次の方法は、通常の英語辞書のような一般的な単語のルックアップ テーブルです。この方法の問題点は、最初に単語のリストを作成することです。
例えば:
input string result
------------------------------------------------------
"hello world" matches 2 words
"helloworld" random string
"lllooehrdw" random string
"hello.world" probably 2 words
"a.be.was" probably 3 words (but this is probably a strange edge case)
つまり、ここで単語を見つけて単語リストと比較することがすべてであり、これは非常に難しい場合があります.
これらすべての方法のもう 1 つの問題は、特定の言語のみを検出するか、特定の言語にトレーニングする必要があることです。今のところ英語のみを使用したいと考えてください。
これを行う良い方法はありますか、それとも偽陽性と偽陰性を受け入れる必要がありますか?