Spam Email Classification

NLP og søk2026NLP

En tekstklassifiserer som skiller spam fra vanlig e-post med TF-IDF og en lineær SVM, med kontroll av lekkasje mellom trenings- og testdata.

Utfordringen

Spamfiltrering er en klassisk tekstklassifiseringsoppgave, men et høyt treffsikkerhetstall sier lite før man vet om testdataene er uavhengige av treningsdataene, og hva modellen egentlig lener seg på. Målet var å bygge en komplett klassifiseringspipeline og vurdere resultatet kritisk.

Løsningen

En pipeline fra rå e-post til prediksjon: innlasting, forbehandling (små bokstaver, fjerning av tegnsetting og stoppord), TF-IDF-features med enkeltord og ordpar, og en lineær SVM. Vektoriseringen tilpasses bare på treningsdataene, slik at testdataene ikke påvirker modellen.

Hvordan det ble bygget

Arbeidet bygger på et gitt rammeverk med grensesnitt og tester; jeg implementerte forbehandling, feature-uttrekk, trening og evaluering med scikit-learn. Datasettet er en offentlig, Enron-basert samling med 14 925 e-poster til trening og 1 655 til test i en fast oppdeling. I en senere re-evaluering kontrollerte jeg i tillegg overlapp mellom trenings- og testdata og hvilke signaler modellen kan utnytte.

Resultat

Med den faste oppdelingen ble 1 653 av 1 655 test-e-poster klassifisert riktig. Den senere re-evalueringen fjernet test-e-poster som også fantes som eksakte eller nesten-duplikater i treningsdataene; treffsikkerheten var da fortsatt rundt 99,8 % på de 1 282 gjenværende. Den samme re-evalueringen viste at bare starten av hver e-post (der tekniske e-postheadere dominerer) gir rundt 97 % treffsikkerhet. Datasettet er altså relativt enkelt og har sterke snarveissignaler.

Kontekst

Tallene er målt ved en senere, reproduserbar kjøring av pipelinen, ikke hentet fra en opprinnelig innlevert resultatfil. Verdien i prosjektet ligger i en komplett og kontrollert pipeline for tekstklassifisering og i robusthetsanalysen, ikke i det høye tallet, som sier lite om hvordan modellen ville fungert på dagens spam. Løsningen har ikke vært brukt i drift.

Teknologi og metoder

Pythonscikit-learn (TfidfVectorizer, LinearSVC)TekstforbehandlingTF-IDF med 1–2-gramPresisjon/recall/F1Duplikat- og lekkasjekontrollSnarveisanalyse