Algoritmo che suggerisce sinonimi basati su un termine?

3

Esiste un algoritmo che posso utilizzare per generare sinonimi per un termine (parola) rispetto a uno spam. Sto scrivendo un semplice filtro spam.

Ad esempio, ho stabilito che l'app deve omettere una parola "viagra" e premere un pulsante che salva questo termine in un database di filtri. Uno script crea automaticamente sinonimi di questa parola, ad esempio: v.i.a.g.r.a, via_gra, via-gra e simili. O filtro una maledizione e genera tutti i trucchi che le persone usano per far apparire le loro maledizioni nei loro commenti.

    
posta deviDave 10.05.2012 - 09:04
fonte

3 risposte

6

Invece di costruire un dizionario di alias per lo stesso nome, potresti invece verificare se una determinata parola è un alias di questo nome.

Potresti usare molti algoritmi per questo, il più semplice è l'algoritmo Levenshtein distance . Questo algoritmo calcola la distanza tra due parole, ad esempio una parola in una mail e una parola in un dizionario. Ad esempio la distanza tra viagra e vi.agra è 1.

Potresti quindi definire una soglia al di sotto della quale si assume che due parole siano uguali (ad esempio, se la distanza è inferiore al 30% della dimensione delle parole). È possibile migliorare l'algoritmo della distanza per assegnare pesi inferiori a caratteri speciali (come un trattino o un carattere di sottolineatura).

Un altro algoritmo che vale la pena guardare è l'algoritmo Damerau-Lenvenshtein , che viene utilizzato per rilevare errori di ortografia.

    
risposta data 10.05.2012 - 09:20
fonte
2

Benvenuti nel meraviglioso mondo del riconoscimento di modelli! Questo è un compito estremamente difficile da ottenere. Qualunque algoritmo tu usi, gli spammer lo lo sovvertono e in qualche modo spingono i messaggi che le persone riconoscono, ma il tuo programma no. Riconosci le sostituzioni delle lettere, si spostano in numeri. Si generalizza su tutti i personaggi, usano le immagini. Usi OCR, loro inventano qualcosa di diverso.

Potrebbe non sembrare, ma questo è in realtà molto vicino al centro assoluto di ciò che riguarda l'intelligenza artificiale. Se hai un algoritmo così buono da eguagliare il riconoscimento umano, non dovresti lavorare come sviluppatore: dovresti ottenere una cattedra di ruolo a Harvard. Scherzi a parte.

    
risposta data 10.05.2012 - 09:22
fonte
1

Le cattive notizie: se vuoi un filtro antispam, cercare le parole è decisamente un approccio sbagliato.

Ad esempio, puoi avere un messaggio perfettamente valido e lungo dove ad un certo punto viene usata la parola "fuck". Allo stesso modo, puoi avere messaggi spam pieni di parole "valide".

La buona notizia: il filtraggio dello spam è un classico per il riconoscimento di schemi.

Cerca solo "filtro spam" e "classificazione" e dovresti ottenere molti risultati. Un buon approccio iniziale potrebbe essere: link

    
risposta data 10.05.2012 - 14:32
fonte

Leggi altre domande sui tag