Ho un sito di forum in lingua inglese scritto in perl che è continuamente bombardato da spam in russo. C'è un modo per usare Perl e regex per rilevare il testo in russo in modo da poterlo bloccare?Come posso rilevare i messaggi di spam russi con Perl?
risposta
È possibile utilizzare il seguente per rilevare Cyrillic caratteri (usato in russo):
[\u0400-\u04FF]+
Se davvero si vuole solo i caratteri russi, si può dare un'occhiata al suddetto documento, che contiene il campo esatto utilizzato per l'alfabeto russo di base che è [\u0410-\u044F]
. Ovviamente dovresti anche considerare l'estensione di caratteri cirillici che sono usati esclusivamente in russo - menzionato anche nel documento.
utilizzando il charset cirillico unicode come suggerito da JG, va bene se tutto è codificato come tale. tuttavia, questo è spam e per la maggior parte, le cose non lo sono. Inoltre, molto spesso gli spammer usano un mix di charset in spam, il che peggiora ulteriormente questo approccio.
Trovo che il modo migliore (o almeno la fase preliminare del processo) di rilevare lo spam russo è quello di grep per i set di caratteri più comunemente utilizzati:
koi8-r
windows-1251
iso-8859-5
passo successivo dopo che sarebbe da provare alcuni algoritmi di rilevamento della lingua su ciò che rimane. se è un problema abbastanza grande, usa un servizio a pagamento come google translate (che anche "rileva") o xerox. questi servizi forniscono a IMO il miglior riconoscimento della lingua in circolazione.
Capisco il tuo punto, ma dal momento che è un forum in inglese, è possibile rilevare se un post contiene caratteri cirillici può essere sufficiente per determinare che si tratta di spam. –
hmmm, io * ero * pensando che il poster originale stesse parlando di spam e-mail ... se non è così, e lo spam viene inserito tramite il sito stesso (ad esempio su un forum), quindi sono d'accordo con quello che sei detto. –
Per rilevare il russo è necessario cercare le parole che vengono utilizzate solo in lingua russa. O vuoi solo testare le lettere cirilliche? – Gumbo
if ($ text ~ =/vodka /) {$ language = "ru"; } – tunnuz
@Gumbo che rileva il cirillico è abbastanza buono in quanto il forum è comunque in inglese. –