2009-09-09 16 views
5

J'ai un site de forum en anglais écrit en perl qui est continuellement bombardé de spam en russe. Existe-t-il un moyen d'utiliser Perl et regex pour détecter le texte russe afin que je puisse le bloquer?Comment puis-je détecter les messages de spam russes avec Perl?

+3

Pour détecter le russe, vous devez rechercher des mots qui ne sont utilisés que dans la langue russe. Ou voulez-vous juste tester des lettres cyrilliques? – Gumbo

+8

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

+0

@Gumbo juste de détecter cyrillique est assez bon que le forum est en anglais de toute façon. –

Répondre

8

Vous pouvez utiliser les éléments suivants pour détecter Cyrillic caractères (utilisé en russe):

[\u0400-\u04FF]+ 

Si vous voulez vraiment que les caractères russes, vous pouvez jeter un oeil sur le document mentionné ci-dessus, qui contient la gamme exacte utilisée pour l'alphabet russe de base qui est [\u0410-\u044F]. Bien sûr, vous devez également prendre en compte les caractères cyrilliques d'extension utilisés exclusivement en russe, également mentionnés dans le document.

3

en utilisant le jeu de caractères cyrillic unicode comme suggéré par JG est très bien si tout est codé en tant que tel. Cependant, il s'agit de spam et, pour la plupart, les choses ne le sont pas. En outre, les spammeurs utiliseront très souvent un mélange de jeux de caractères dans les spams, ce qui irrite encore plus cette approche.

je trouve que la meilleure façon (ou au moins l'étape préliminaire dans le processus) de détection du spam russe est à grep pour les jeux de caractères les plus couramment utilisés:

koi8-r 
windows-1251 
iso-8859-5 

étape suivante après cela d'essayer quelques algorithmes de détection de la langue sur ce qui reste. Si c'est un problème assez important, utilisez un service payant tel que google translate (qui détecte aussi) ou xerox. Ces services fournissent à l'OMI la meilleure détection linguistique possible.

+0

Je comprends votre point de vue, mais comme il s'agit d'un forum en anglais, il suffit de savoir si un message contient des caractères cyrilliques pour déterminer s'il s'agit d'un spam. –

+0

hmmm, je * pensais * que l'affiche originale parlait de spam par e-mail ... si ce n'est pas le cas, et le spam est entré via le site lui-même (par exemple sur un forum) alors je serais d'accord avec vous en disant. –