Men schat dat tegenwoordig bijna 90 procent van de e-mails die worden verzonden spam is. Daarom wordt er erg veel gedaan aan het bestrijden van spam. Een manier om dit te doen is gebruik te maken van spamfilters. Als gebruiker heb je dan weinig last van de spam, omdat die er voor je uit wordt gefilterd. Maar hoe werkt dat filteren precies?
De makkelijkste manier om mail te filteren is gebruik maken van een woordfilter. Alle berichten die binnenkomen, worden door de computer gescand. Als er een bepaald woord uit het woordfilter in voorkomt (bijvoorbeeld viagra), dan bestempelt de computer het bericht als spam.
Woordfilters kunnen werken met verboden woorden, zoals hierboven, en ook met toegestane woorden. Door te tellen hoeveel toegestane en verboden woorden een bericht bevat, kan de computer bepalen of een bericht wel of geen spam is. Dit heet een heuristisch filter. Zo een filter bepaalt eigenlijk de kans dat een bericht spam is.
Nog slimmer is het om geen vaste woordenlijsten te gebruiken, maar de woordenlijsten steeds aan te passen. In zo een geval wordt een spamfilter Bayesiaans genoemd. Bayesiaanse filters moeten worden getraind. Dit betekent, dat je het filter van tevoren moet vertellen welke berichten wel spam zijn, en welke berichten geen spam zijn. Het programma scant dan alle berichten, en maakt een lijst van alle woorden die in die berichten voorkomen.
Voor elk woord wordt geteld in hoeveel spamberichten het voorkomt en in hoeveel ham-berichten het voorkomt. Een ham-bericht is hetzelfde als een niet-spam bericht. Dit levert dus een lijst op met voor elk woord dat in de berichten voorkomt twee getallen: het aantal spamberichten waar het in voorkomt in en het aantal ham-berichten waar het in voorkomt. Een spamfilter wordt natuurlijk steeds beter als je het traint met meer berichten.
Bijvoorbeeld: Het filter is getraind met 1000 berichten, waarvan er 700 spam zijn en 300 ham. De lijst ziet er als volgt uit:
woord | aantal keer in spam | aantal keer in ham |
Aanbieding | 200 | 30 |
! | 500 | 100 |
boeken | 7 | 6 |
twee | 7 | 50 |
Het filter krijgt nu het volgende bericht binnen:
Aanbieding! Koop nu gloednieuwe boeken bij ons. Op is op. Betaal over twee jaar.
Is dit bericht nu spam of ham? Met de formule van Bayes kunnen we dit berekenen.
De formule is het makkelijkst uit te leggen aan de hand van een voorbeeld. Stel dat we alleen kijken naar woord aanbieding dat voorkomt in ons binnengekomen bericht en we willen weten of het bericht spam of ham is.
We krijgen nu dus:
De kans dat een bericht met het woord aanbieding erin spam is, is 87%.
We kunnen nu berekenen of het bericht met deze 4 woorden spam is.
De uitkomst is nu:
Opdracht
Maak nu de opdracht "Ongewenste e-mail " uit het menu-onderdeel "Opdrachten en Toetsen".