2

これは私が以前に尋ねた質問と相関しています(質問)

次のような手動で作成された文字列のリストがあります。

lucy87

gordan_king

fancy_unicorn77

joplucky_kanga90

base_belong_to_narwhals

およびランダム化された文字列のリスト:

johnkdf

pancake90kgjd

fancy_jagookfk

manhattanljg


文字列の最後のセットがランダム化されていることを示すのは、「kjg」、「jgf」、「lkd」、 ...などのシーケンスです。

これらの明らかにランダム化された文字列を含む文字列を群衆から分離するための賢い方法はありますか?

これは、特定の文字が他の文字の隣に配置される可能性が高いという事実に大きく影響していると思います(たとえば、「co」、「ka」、「ja」、...)。


これについて何かアイデアはありますか?キロタンは牧師に言及しましたが、そのような目的で使用できるかどうかはわかりません。

助けていただければ幸いです!

4

5 に答える 5

4

これは単なる考えです。私自身は試したことがないのですが...

辞書で見つかったすべての (重複する) 4 文字のシーケンスをハッシュしてブルーム フィルターを構築します。フィルターにヒットしない文字列内の 4 文字のシーケンスの数をカウントして、文字列をテストします。ミスが多いほど、単語にランダムなジャンクが含まれている可能性が高くなります。

ブルーム フィルターのサイズとシーケンスあたりの文字数を調整してみてください。

また、誤検知を最小限に抑えるために、ブルームフィルターに、できれば複数の言語からの名前の辞書を含める必要があることに注意してください(@MihaiDに感謝します)。

于 2010-05-14T11:01:58.467 に答える
2

文字列をtextcatのようなものに通した場合、どのようなスコアが得られますか? (私は TextCat のいくつかの異なる実装を見てきました。Python の実装が既に存在する可能性があります。そうでない場合、それは難しいアルゴリズムではありません。重要なのはデータです。)

数字を取り除くと、文字列の最初のセットは、ランダムなものが含まれているものよりも TextCat の「英語」の結果に近くなると思います。

文字列を「合格」または「不合格」にするために、TextCatデータ(特定の言語でどの文字が隣り合う傾向があるかに基づいています)をどれだけ近く使用できるか、および使用できるかどうかは、いくつかの必要があります。実験ですが…

于 2010-05-14T11:19:45.393 に答える
1

バニラベイズ分類器を使用してみてください。一般的な場合には十分なはずです。

于 2010-05-14T11:04:54.190 に答える
1

一部のスパマーがフィルターを通過するために文字列に対して行う特定の特定の小さなもののセットを認識するためのコードを記述しようとしているように思えます。私が理解していないのは、あなたが一生懸命働いた後、彼らのアルゴリズムを 10 秒間微調整し、あなたの新しいフィルターを打ち負かすことを妨げているものです。

于 2010-05-14T11:05:06.453 に答える
1

少し前に、ランダムな名前の生成に関する短い記事を読みました。彼らは次のことを行いました: 彼らは、あなたがすでに指摘した情報を含む表を作成しました:他の人の隣に置かれる」。

そこで、彼らは辞書全体を読んで、どの文字が互いに可能性が高いかを判断しました。私は知りません、彼らが考えた行の文字数。たぶん、連続する 2 文字以上を試してみるべきでしょう。3 から 6 の間の何かを考えてみましょう。

ここで、すべての「有効な」連続文字の組み合わせ(およびおそらくその可能性)を含むそのようなテーブルを(おそらくより良いデータ構造表現で)構築し、チェックする名前に(ほとんど)そのような「有効な」文字のみが含まれているかどうかを確認することをお勧めします」の連続文字。

于 2010-05-14T11:05:29.230 に答える