Lupasin kertoa lisää bayesiläisestä roskapostintunnistuksesta, joka perustuu viestien sisältämien sanojen (tai muiden merkkijonojen) luokitteluun. Samaa tarkoittaen puhutaan myös oppivasta suodatuksesta.
Thomas Bayesin teoreeman kanssa menetelmällä on vain etäinen suhde, mutta joka tapauksessa kyse on tilastollisesta menetelmästä, jossa tunnistimelle annetaan aineisto, korpus, sekä roskapostista että ei-roskapostista. Tunnistin pilkkoo aineiston avainsanoiksi (token), käytännössä esimerkiksi sanoiksi. Näiden sanojen esiintymisfrekvenssi sekä roskapostissa että ei-roskapostissa tallennetaan tietokantaan, ja tämän datan perusteella jokaiselle viestille lasketaan “roskapostitodennäköisyys” sen sisältämän “sanaston” perusteella. Tarjolla on erilaisia ohjelmia ja näissä erilaisia algoritmeja todennäköisyyden laskemiseen. Meillä käytetään SpamAssassinia ja tätä kirjoittaessa sen naiivia bayesiläistä menetelmää, jonka tästä sovellusmahdollisuudesta ovat kirjoittaneet Paul Graham ja Gary Robinson. SA:ssa olisi käytettävissä myös vähän erilainen chi^2-menetelmä (Robinson), mutta ei nyt mennä siihen.
Menetelmistä voisi kertoa pitempäänkin, ja niin teinkin kandityössäni (ja mahdollisesti tulevassa gradussani). Menetelmä on teoriassa hyvin sitkeä erilaisia kiertoyrityksiä vastaan, koska se oppii tunnistamaan ne (olettaen, että tietokantaa päivitetään automaattisesti tai ainakin usein). Käytännössä kuitenkin ollakseen tarkka menetelmä vaatii erittäin järeää laskenta- ja tallennuskapasiteettia ja palautejärjestelmän virheellisiä tunnistuksia varten. Niinpä toteutukset ovat yleensä, kuten meillä, jonkinlaisia kompromisseja.
Tilastollinen roskapostintorjunta algoritmista riippumatta on tehokkaimmillaan silloin, kun korpus on mahdollisimman yksilöllinen, siis vastaanottajakohtainen. Onhan selvää, että minun postini eivät ole sinun. Tämä kuitenkin edellyttäisi suurta tallennuskapasiteettia, jonka sisältämä data olisi kuitenkin suurimmaksi osaksi päällekkäistä – onhan intuitiivisesti lähes yhtä selvää, että suuri osa sanastosta on samaa eri vastaanottajienkin viesteissä. Lisäksi yksilöllisissä tietokannoissa on muita ongelmia – mitä esimerkiksi tehtäisiin postituslistalle osoitetulle viestille?
Meillä onkin käytössä yksi globaali korpus, mutta sellaisen kerääminen on tietysti haaste, koska täytyisi huomioida kaikki eri kieliryhmät, käyttäjäryhmät ja niin edelleen. Satunnaisuus ja suuret volyymit ovat ystäviä tässä tapauksessa. Lisäksi käyttäjien yksityisyyden suoja on lakisääteisesti tiukka, eikä sitä saa vahingossakaan loukata “enempää kuin on tarpeellista välttämättömien tehtävien suorittamiseksi”. Tilastollisten menetelmien käyttö on tuskin ihan niin välttämätöntä, joten ihmisten viestejä voi käsitellä ainoastaan automaattisin menetelmin. Ja hyvä niin.
Aineiston täytyy myös olla ajan tasalla. Tähän tehtävään on useita eri menetelmiä, kuten se, että tunnistimelle opetetaan jatkuvasti ohi virtaavaa (riittävän selvästi tunnistettua) postimateriaalia. Toinen mahdollisuus on opettaa sille ainoastaan väärät tunnistukset – silloin kun roskaposti ei tunnistu roskapostiksi (väärä negatiivinen) tai viesti tunnistuu aiheetta roskapostiksi (väärä positiivinen). Täällä on käytössä näistä jälkimmäinen tapa. Lisäksi tietokanta tarvitsee jonkin verran pohjatietoa.
Meillä on ollut käytössä tietoinen linja, jonka mukaan vääriä negatiivisia suvaitaan paljonkin verrattuna vääriin positiivisiin, joihin on aina suhtauduttava vakavasti. Roskapostintunnistus on aina näiden kahden välillä tasapainoilua.
On oma kysymyksensä, kuinka ylläpito saa haltuunsa väärin tunnistuneet viestit. Tähän asti on ajateltu,että ylläpitäjät saavat roskapostia ihan riittävästi, mutta ei-roskapostia varten on perustettu osoite,johon käyttäjät voivat bounsata viestejä. Käytännössä tapa ei ole tuottanut mielestäni riittävästi ei-roskapostiaineistoa, ja niinpä aineiston keräämiseen on nykyisin tehokkaampi tapa.
Piakkoin (keväällä?) käyttöönotettavassa webmailin uudessa versiossa on kätevähköt linkit viestien raportoimiseksi opetusta varten. Toivon tämän innostavan käyttäjäkuntaa osallistumaan suodattimen kehittämiseen.