2009-09-09 10 views
5

私は、英語のフォーラムサイトをperlで書いてあり、ロシア語で迷惑メールに絶えず攻撃されています。 Perlと正規表現を使ってロシア語のテキストを検出してブロックする方法はありますか?Perlでロシアのスパム投稿を検出するにはどうすればよいですか?

+3

ロシア語を検出するには、ロシア語でのみ使用されている単語を検索する必要があります。あるいは、キリル文字をテストしたいだけですか? – Gumbo

+8

if($ text〜=/vodka /){$ language = "ru"; } – tunnuz

+0

ちょうどキリル文字を検出している@Gumboは、フォーラムが英語のようにとにかく十分です。 –

答えて

8

あなたは(ロシア語で使用される)Cyrillic文字を検出するために、以下を使用することができます:あなたは本当にただロシア語の文字を使用する場合は

[\u0400-\u04FF]+ 

は、あなたが使用される正確な範囲が含まれている上記の文書を見て、取ることができます基本的なロシア語のアルファベットは[\u0410-\u044F]です。もちろん、ロシア語でのみ使用される拡張キリル文字も考慮する必要があります。これはドキュメントにも記載されています。

3

JGが示唆するようにユニコードキリル文字セットを使用すると、すべてがそのようにエンコードされていれば問題ありません。しかし、これはスパムであり、ほとんどの場合、物事はそうではありません。さらに、スパマーは非常に多くの場合、このアプローチをさらに悪化させるスパムの文字セットを頻繁に使用します。

私はロシアのスパムを検出するための最良の方法(またはプロセス内の少なくとも予備段階)が最も一般的に使用される文字セットをgrepすることであることを見つける:その後

koi8-r 
windows-1251 
iso-8859-5 

次のステップは、試してみるだろういくつかの言語検出アルゴリズムが残っています。十分に大きな問題がある場合は、google translate(「検出」)やxeroxなどの有料サービスを使用してください。これらのサービスは、IMOに最良の言語検出を提供します。

+0

英語のフォーラムだから、ポストにキリル文字が含まれているかどうかを検出すれば、それが迷惑メールかどうかを判断するのに十分かもしれません。 –

+0

hmmm、元のポスターが電子メールスパムについて話していると思っていました...そうでない場合、スパムがサイト自体(フォーラムなど)を介して入力されている場合は、言っている。 –

関連する問題