Vaikeuksien kautta voittoon — päätösten anonymisointityökalu

Teemu Hyytiäinen
KelaLab
Published in
5 min readFeb 1, 2022

Kokeilujen suunnittelussa on tärkeää määritellä kriittiset kysymykset, joilla voidaan mitata kokeilun onnistumista. Ratkaisuvaihtoehtojen suunnitteluun ei kannata käyttää mittavasti aikaa, jotta ei sitoudu niihin liikaa henkisesti. Nopeasti erilaisia ratkaisuvaihtoehtoja koestamalla löydetään useimmiten toimivimmat ratkaisut. Tässä kirjoituksessa pureudumme päätösten anonymisointityökaluun, jonka parissa toteutettiin parikin kokeilua väärinymmärryksen seurauksena.

Kuvituskuvaa anonymisoinnista. Kuvassa 8 ihmistä, joiden kasvojen tilalla on “?”
Kuva: Pixabay

Taustaa kokeilulle

Toimeentulotuen päätökseen voi hakea muutosta tekemällä oikaisuvaatimuksen. Niiden käsittelystä vastaa Kelan Oikaisuvaatimuskeskus (OVK), joka on Kelan muusta ratkaisutoiminnasta erillinen yksikkö. Myös OVK:n päätöksestä voi valittaa, ja tämä valitus puolestaan käsitellään hallinto-oikeudessa.

OVK:n ja hallinto-oikeuksien päätökset asiakkaiden valituksista ovat tärkeitä Kelan toiminnan kehittämisessä, koska niiden avulla on mahdollista kouluttaa ja perehdyttää henkilöstöä tekemään laadukkaampia päätöksiä. Päätökset kuitenkin sisältävät henkilötietoja, joten niiden käyttäminen sellaisenaan koulutuksissa ei ole mahdollista ellei niitä anonymisoida.

OVK:n päätökset ovat Kelassa PDF-tiedostoina ja hallinto-oikeuden päätökset tulevat Kelaan paperilla ja sitten nekin skannataan PDF-muotoon. Tällä hetkellä päätösten anonymisointi toteutetaan manuaalisesti hyödyntämällä PDF-työkalua, jolla vedetään musta viiva kunkin henkilötiedon yli. Meidän mielestämme tämä ei ole erityisen tehokasta työajan käyttöä, joten lähdimme kokeilemaan tämän automatisointia.

Kokeilun oletukset ja tavoite

Kokeilun lähtötilanteessa tehtiin kaksi oletusta. Skannauksen tuottamat PDF-tiedostot sisältävät kuvia, joista ei voi kopioida tekstiä. Tästä syystä oletimme toimivaksi ratkaisuksi OCR:n (Optical Character Recognition), jolla voi tunnistaa kaikki kuvissa esiintyvät kirjaimet ja merkit. Tämä mahdollistaa määrittelemiemme sanojen anonymisoinnin. Toinen oletus oli päätösten koostuminen etukäteen määritellyistä fraaseista. Ensin pohdimme, miten voisimme määritellä kaikki anonymisoitavat sanat. Tämä kuitenkin osoittautui mahdottomaksi. Esimerkiksi henkilöiden nimiä on liian paljon, eikä niistä ole tarpeeksi kattavaa listausta. Päätimme toimia päinvastoin ja toteuttaa työkalun pohjalle fraaseihin pohjautuvan sallittujen sanojen sanalistan. Sanalistalle voidaan lisätä kaikki päätöksillä käytetyt fraasit, jolloin tiedämme varmasti, mitä ei tarvitse anonymisoida ja voimme anonymisoida kaiken muun.

Kokeilun tavoitteena oli parantaa anonymisoinnin laatua ja tehokkuutta. Tätä mitattiin kahdella kriittisellä kysymyksellä: “onko anonymisoinnin taso riittävä” ja “onko anonymisointityökalun käyttö nopeampaa kuin manuaalinen anonymisointi”.

Ensimmäinen kokeilu

Sallittujen sanojen sanalista tuo siis varmuuden siitä, että ainakin kaikki henkilötietoja sisältävät sanat anonymisoidaan. Jos virheellisesti anonymisoimme liikaa, on haitta pienempi kuin toisinpäin. Työkalu tunnistaa ensin kaikki päätöksen sanat OCR:n avulla. Jos jotakin sanaa ei löydy sallittujen sanojen listalta, se esitetään käyttäjälle. Jos sana ei ole henkilötietoa, käyttäjä voi lisätä sen sallittujen sanojen listalle. Sanalistan täydennyksen jälkeen työkalu vertasi jokaista tunnistamaansa sanaa sallittuihin sanoihin ja lisäsi mustan viivan sellaisten sanojen päälle, joita ei sanalistalta löytynyt. Lopuksi anonymisoidusta tiedostosta otettiin kuva, joka tallennettiin PDF muotoon. Tällöin tekstiä ei voi kopioida jälkikäteen mustan viivan alta ja näin kiertää anonymisointiratkaisuamme.

Kuva anonymisointityökalun käyttöliittymästä. Käyttäjä voi lisätä anonymisoitavan tiedoston painamalla “Valitse tiedosto”
Anonymisointityökalun käyttöliittymä

Ensimmäisen kokeilun tulokset ja opit

Anonymisointityökalu oli käytössä OVK:lla 14.6. — 13.8.2021. Tänä aikana sillä anonymisoitiin 32 hallinto-oikeuden päätöstä ja 40 OVK:n päätöstä. Kokeilussa todettiin, että työkalu toimi paremmin OVK:n päätöksille kuin hallinto-oikeuksien päätöksille. Tämä johtuu skannaamisesta, joka joudutaan tekemään hallinto-oikeuden päätöksille vastaanottovaiheessa. Skannauksen seurauksena PDF-dokumenttien laatu ei ole ihanteellinen OCR:ää varten. Varsinkin hallinto-oikeuden päätöksissä työkalu tunnisti välillä täysin vääriä sanoja tai siansaksaa.

Myös sanalista osoittautui ongelmalliseksi. Suomen kielessä on paljon suffikseja eli sanojen jälkiliitteitä, ja luomamme sanalista ei sisältänyt minkäänlaista älykkyyttä, jolla näitä olisi voinut huomioida. Jos sanalistalle lisättiin sana “asiakas” ja päätöksellä oli sana “asiakkaan”, niin se anonymisoitiin.

Meidän ymmärrys päätöksien sisällöistä oli kokeilun alussa riittämätön. Olimme olettaneet päätösten pohjautuvan fraaseihin, jolloin olisimme voineet tallentaa sanalistalle kaikki fraasit ja lisätä yksittäisiä sanoja. OVK:n ja hallinto-oikeuden päätökset eivät pohjaudu fraaseihin, vaan syntyvät päätöksen tekijän vapaasti kirjoitetusta tekstistä. Seurauksena sanalista ilman minkäänlaista älykkyyttä osoittautui hyvin työllistäväksi ratkaisuksi, kun jokainen sana ja sen jokainen taivutusmuoto pitäisi lisätä sanalistalle yksi kerrallaan.

Reflektio ensimmäisestä kokeilusta

Miksi me emme tutkineet asiaa tarkemmin ja konsultoineet vielä enemmän päätösten asiantuntijoita? Olimme yksinkertaisesti ymmärtäneet päätösten sisällön väärin aiemmin tehdyn selvityksen aikana. Väärinymmärrykset eivät ole täysin tavattomia, kun pyritään syventymään täysin uuteen aihepiiriin. Toivottavaa se ei ole, joten tästäkin opittiin jatkoa varten.

Positiivista tämänkaltaisissa nopeissa kokeiluissa on se, että kaikkea ratkaisuun liittyvää ei tarvitse alussa suunnitella yksityiskohtaisesti, ja näin säästyy paljon aikaa. Ensimmäistä toteutuskelpoiselta tuntuvaa ratkaisuhypoteesia alettiin viedä kohti toimivaa työkalua hyvin nopeasti. Tätä testattiin useaan otteeseen OVK:n lähettämillä päätöksillä. OVK kommentoi ja antoi anonymisoinnin laadusta jatkuvasti palautetta, joka mahdollisti ratkaisun kehittämisen.

Tämän jälkeen rakensimme työkalulle käyttöliittymän ja annoimme sen OVK:lle kokeiluun. Fraaseihin liittyvän väärinymmärryksen paljastuessa olimme kiitollisia, ettemme olleet hukanneet aikaa liialliseen suunnitteluun. Nopeasti kokeilemalla pystyimme säästämään aikaa. Toisaalta nopeasti kokeileminen auttoi myös henkisesti. Emme olleet lukittautuneet yhteen tiettyyn ratkaisuun, vaan meidän oli helppo nähdä ratkaisun ongelmat ja hylätä alkuperäinen ratkaisu. Massiivisen suunnittelun jälkeen olisi voinut tuntua siltä, että tähän on jo panostettu huomattava määrä resursseja. Tämän jälkeen suunnan muuttaminen on usein vaikeampaa.

Tunnistettujen ongelmakohtien seurauksena hylkäsimme ensimmäisen ratkaisuvaihtoehdon ja lähdimme kohti kokeilua numero kaksi.

Toinen kokeilu

Toisessa kokeilussa lähestyimme ongelmaa eri kantilta. Kaikki OVK:n päätökset ovat muotoilultaan samanlaisia ja otsikot ovat aina samanlaiset. Työkalu pyrkii siis tunnistamaan anonymisoitavat tiedot, jotka sijaitsevat päätöksen tietyssä paikassa ja tietyn otsikon alapuolella. Nimi, osoite ja syntymäaika esimerkiksi sijaitsevat aina päätöksen vasemmassa ylälaidassa “Päätös Perustoimeentulotuki” -otsikon alapuolella, kuten alla olevasta kuvasta voidaan huomata. Vastaavalla toimenpiteellä tunnistetaan päätöksestä myös asiakkaan tilinumero ja käsittelijän nimi.

Testidataa sisältävän päätöksen yläosa. Yläosassa näkyy testiasiakkaan nimi, osoite ja syntymäaika.
Testidataa sisältävä päätös

Tämän jälkeen luetaan koko tiedoston teksti ja anonymisoidaan kaikki tekstipätkät, jotka sisältävät tunnistetun nimen, osoitteen tai syntymäajan. Alla olevassa kuvassa työkalu on anonymisoinut tiedoston.

Kuva asiakkaan anonymisoiduista tiedoista ja anonymisointityökalun käyttöliittymästä. Aikaisemmin tekstinä olleet nimi ja osoitetiedot on anonymisoitu.
Asiakkaan tiedot anonymisoitu

Tulojen ja menojen erittelyssä voi olla yritysten nimiä tai esimerkiksi yksityisen vuokranantajan nimi. Erittelyssä on aina ensiksi yleinen tieto tulosta tai menosta ja pilkulla eroteltuna tarkempi tieto. Anonymisointityökalu anonymisoi laskelman jokaisella rivillä kaiken pilkun jälkeen. Näin kaikki tarvittava tieto tulee anonymisoitua, mutta välillä tulee anonymisoitua hieman liikaa. Mieluummin kuitenkin näin päin.

Kuva päätöksen menoista. Vasemmalla alkuperäinen testipäätös ja oikealla anonymisoitu.
Kuva päätöksen menoista ja tuloista, sekä vastaava kuva anonymisoituna

Automaattisen anonymisoinnin lisäksi työkaluun lisättiin mahdollisuus manuaaliseen anonymisointiin. Jos päätöksestä ei jostain syystä tunnistettu kaikkea anonymisoitavaa, myös käyttäjä pystyy anonymisoimaan kätevästi tuplaklikkaamalla sanaa tai yliviivaamalla halutut sanat — sitten työkalu etsii dokumentista kaikki samanlaiset sanat ja anonymisoi myös ne.

Toisen kokeilun tulokset ja opit

Tämä työkalun toinen versio oli testissä noin kaksi viikkoa marras- ja joulukuun vaihteessa ja se soveltui OVK:n käytettäväksi todella hyvin. Sitä pidettiin toimintavarmana, helppona ja nopeana käyttää eikä siitä todettu mitään negatiivista. Ja kun jotain oikeasti kokeillaan (“koetaan” eikä vain selvitellä), niin nousee esiin hyviä jatkokehitysideoita, kuten tässäkin kokeiluissa. Näitä oli muun muassa ruotsinkielisten ja hallinto-oikeuksien päätösten anonymisointi samalla työkalulla. Työkalu sinällään soveltuu myös näihin, mutta vaatii päätösten muotoiluun syventymistä ja ruotsinkielisten sanojen lisäämistä, jotta kappaleiden jaot saadaan tunnistettua.

Lopuksi

Kokeilujen avulla on mahdollista toteuttaa ratkaisuja hyvin epävarmoissa olosuhteissa. Välttämällä tarpeetonta tai liiallista suunnittelua voidaan vähentää henkistä sitoutumista tiettyyn ratkaisuun, jolloin haasteiden ilmaantuessa on helpompaa kokeilla vaihtoehtoisia ratkaisuja.

Tässä kokeilussa päästiin haluttuun lopputulokseen alun väärinymmärryksestä huolimatta, eli pystyimme automatisoimaan dokumenttien anonymisoinnin. Samalla saimme paljon oppia erilaisista tavoista muokata PDF-tiedostoja koneellisesti sekä erilaisista tavoista tunnistaa anonymisoitavat sanat. Näitä oppeja jaettiin kelalaisille Kelalabin järjestämissä demo-tilaisuuksissa.

Isot kiitokset Oikaisuvaatimuskeskukselle uskalluksesta lähteä kokeilemaan ja jatkamaan kokeilua väärinymmärryksestä huolimatta.

--

--