Vaikka ESCO-luokittelu on ajatuksena erinomainen, sen soveltaminen tavallisen tallaajan elämään on toisinaan haasteellista. Työnhakijalla voi esimerkiksi olla hyvinkin paljon monipuolista osaamista, mutta juuri tiettyä osaamista ESCO-luokitus ei ehkä tunne tai osaaminen on nimetty siten, että sen löytäminen on hankalaa. Koska erilaiset luonnollisen kielen käsittelyyn (natural language processing, NLP) perustuvat tekoälymenetelmät ovat viime aikoina yleistyneet, lähdimme tutkimaan, voisiko niiden avulla löytää helpommin ESCO-luokituksen mukaisia osaamisia. Käytännössä voisimme siis hyödyntää käyttäjän kirjoittamaa tekstiä työhistoriastaan ja osaamisestaan ja ehdottaa sen perusteella ESCO-luokituksen mukaisia osaamisia.
Yksinkertaisesti liikkeelle
Yleensä tekoälysovellusten kanssa kannattaa lähteä liikkeelle jostain mahdollisimman yksinkertaisesta ja kehitellä mutkikkaampia malleja ymmärryksen kasvaessa.
Niinpä tässäkin lähdimme liikkeelle osaamisten nimistä, muutimme ne numeerisiksi vektoreiksi ja etsimme käyttäjän antamaa syötettä lähimpänä olevia osaamisia. Tarkemmin sanottuna sanat jaettiin muutaman kirjaimen pituisiin osasiin, n-grammeihin, ja näin muodostuvan sanaston pohjalta tehtiin osaamisten nimille TFIDF-muunnos. En mene tässä sen teknisempiin yksityiskohtiin, mutta on hyvä huomata, että sanoja ei siis käsitellä sellaisinaan vaan lyhyemmissä palasissa. Asialla on sikäli merkitystä, etteivät suomen kielen taivutusmuodot vaikuta kovinkaan paljon. Myöskään satunnaisilla kirjoitusvirheillä ei ole merkitystä haun onnistumiselle.
Kokeillaanpa antaa algoritmille jokin osaamista kuvaava syöte ja katsotaan, millaisia ESCO-luokituksen mukaisia osaamisia se löytää (kolme kärkiehdotusta):
”Jakaa postia” |
kirjata postia |
käsitellä postia |
hakea posti |
Hyvältä näyttää tähän saakka. ”Posti” toki on sanana sellainen, joka ohjaa helposti oikeaan suuntaan. Kokeillaanpa jotain muuta:
”Osaan auttaa pyörätuolin käytössä” |
neuvoa asiakkaita silmälasien käytössä |
avustaa koneiden ja välineiden käytössä |
neuvoa asiakkaita uusien laitteiden käytössä |
Nyt käykin niin, että sana ”käytössä” alkaa dominoida hakua, sillä ”pyörätuoli” ei esiinny missään ESCO-osaamisessa sellaisenaan.
Lisää dataa konekäännöksellä
Haun parantaminen olisi helppoa, jos osaamiset olisi kuvattu vähän laveammin. Itse asiassa ESCO-osaamisilla on kyllä parin lauseen kuvaus, joka kertoo mitä osaaminen tarkoittaa. Tätä tietoa ESCOssa ei kuitenkaan ole suomeksi, ainoastaan englanniksi. Yli 13000 kuvaustekstin kääntäminen suomeksi olisi kuitenkin hidasta ja kallista. Ehkäpä tekoälytekniikat voisivat auttaa tässäkin? Teimme muutamia kokeiluja ja totesimme, että monien tuntema Googlen käännöspalvelu tekee nykyään suorastaan hyviä suomennoksia:
Alkuperäinen käännös | Konekäännös |
Negotiate with the customers the precise terms at which the service will be sold. | Neuvottele asiakkaiden kanssa tarkat ehdot, joilla palvelu myydään. |
Various processing methods on precious metals such as gold, silver and platinum. | Eri jalometallien, kuten kullan, hopean ja platinan, käsittelymenetelmät. |
No, aivan kaikki käännökset eivät ole vielä täydellisiä:
Alkuperäinen käännös | Konekäännös |
Put adhesive on plies by operating the cement stick on drum edge. | Pane liima kerroksiin käyttämällä sementtikeppää rummun reunalla. |
The joining of two pieces of metal together by deforming one or both so they fit into each other. | Kahden metallikappaleen liittäminen toisiinsa muuttamalla muotoaan yksi tai molemmat siten, että ne sopivat toisiinsa. |
Meidän käytössämme pienet epätarkkuudet eivät kuitenkaan haittaa, koska konekäännettyä tekstiä ei näytetä lainkaan käyttäjälle, sitä käytetään vain apuna oikeaa osaamista etsittäessä. Kokeillaanpa nyt uudelleen aiempaa tapausta, kun konekäännetyt kuvaukset ovat mukana opetusaineistossa:
”Osaan auttaa pyörätuolin käytössä” |
neuvoa erikoisvälineiden käytössä päivittäisissä toimissa |
antaa esteettömyysratkaisuihin liittyviä neuvoja |
erikoisvälineiden käyttö päivittäisissä toimissa |
Huomattavasti parempi! Nyt sana ”pyörätuoli” osataan yhdistää apuvälineisiin ja esteettömyyteen, koska se esiintyy osaamisten kuvaustekstissä.
Olisiko ammatista apua?
Edellä oleva algoritmi toimii jo aika mukavasti tapauksessa, jossa etsitään jotain nimenomaista osaamista. Jos sen sijaan syötteeksi annetaan jotain epämääräisempää, esimerkiksi viittauksia aiempaan työkokemukseen, saadaan selvästi huonompia tuloksia:
”Olen ollut kirjakaupassa harjoittelijana” |
järjestää harjoitukset |
ottaa osaa harjoituksiin |
osallistua urheiluharjoituksiin |
Koska osaamisten kuvauksissa ei puhuta kirjakaupasta, algoritmi tarraa ”harjoittelija”-sanaan ja antaa ehdotuksia sen pohjalta. Pohdimme, voisiko ongelman ratkaista unohtamalla osaamiset hetkeksi ja etsimällä sen sijaan ammatin, joka vastaisi syötettä. ESCOssa on kuhunkin ammattiin liitetty joukko osaamisia, joten ammattiin liittyvät osaamiset saamme kyllä listattua kätevästi.
Ammattipulmaa ratkoimme kahdella tavalla. Ensinnäkin ESCOssa on listattu kolmisentuhatta ammattia ja näille on olemassa parin lauseen mittainen (englanninkielinen) kuvausteksti kuten osaamisillekin. Vedimme nämäkin Googlen käännöskoneen läpi ja saimme näin aineistoa ammatin hakuun. Toiseksi, Työmarkkinatorilla on yksityiskohtaiset kuvaukset noin kuudestasadasta ammatista. Näitä datoja ei ole mielekästä yhdistää, joten teemme ammattihaun molemmille datajoukoille ja yhdistämme tulokset. Kokeillaanpa nyt hakea ammattia syötetekstin perusteella:
”Työskentelin ennen päiväkodissa, niin ja koulun keittiöllä” |
keittiöapulainen |
keittiöpäällikkö |
lastenhoitaja |
Ei hassumpaa! Ja kun huomioimme useampaan ammattiin kuuluvia osaamisia, ei haittaa niin paljon, vaikka jokin yksittäinen ammattiehdotus olisikin huono. Ammatit kuitenkin osoittavat suunnilleen, miltä kantilta osaamisia kannattaa etsiä. Kokeillaanpa nyt aiempaa esimerkkiä:
”Olen ollut kirjakaupassa harjoittelijana” |
pysyä ajan tasalla viimeisimmistä kirjajulkaisuista |
myydä kirjoja |
suositella asiakkaille kirjoja |
Paljon parempi! Puhtaasti ammatin perusteella tehtynä haku tuottaa toki joukon relevantteja osaamisia, mutta yksittäiset ammattiin liittyvät osaamiset tulevat satunnaisessa järjestyksessä. Käytännössä parhaaseen lopputulokseen päästäänkin yhdistämällä eri algoritmien tuottamia tuloksia sopivasti painottaen. Tällainen yhdistelmäalgoritmi toimii myös silloin, kun ammattia ei pystytä määrittämään; silloin haku kohdistuu suoraan osaamisten nimiin ja kuvausteksteihin.
Miten verrata suosittelualgoritmien hyvyyttä?
Ei ole itsestään selvää, miten eri algoritmien toimivuutta pitäisi vertailla. Edellä olevissa esimerkeissä ero on aika selkeä, mutta vaikkapa pienten parametrimuutosten vaikutusten arviointi on useimmiten aika vaikeaa. Jos toinen algoritmi antaa yhden erittäin hyvän osaamisehdotuksen ja toinen useamman keskinkertaisen, kumpi toimii paremmin? Entä jos erittäin hyvä ehdotus tulee vasta viidentenä? Tai viidentenätoista?
Ratkoimme vertailupulmaa tekemällä joukon testitapauksia, joissa syötetekstiin liitettiin käsityönä 10-20 relevanttia osaamista. Sen jälkeen haettiin testattavalla algoritmilla 100 osaamista ja vertailtiin, miten hyvin tavoiteosaamiset löytyivät. Ihannetilanteessa kaikki haetut osaamiset ovat heti kärkijoukossa, huonommassa tapauksessa ne tulevat listalle paljon myöhemmin tai jäävät kokonaan löytymättä.
Yksikään algoritmi ei tietenkään ole tässä mielessä täydellinen, useimmiten osa tavoitelluista osaamisista jää löytymättä. Toisaalta algoritmit tekevät usein varsin hyviäkin ehdotuksia osaamisista, joita vain ei ole tullut otettua mukaan testitapaukseen. Nämä seikat eivät kuitenkaan sinänsä haittaa, koska tavoite ei ole mitata algoritmien absoluuttista hyvyyttä vaan verrata niitä toisiinsa. Se algoritmi, joka nopeammin ja luotettavammin löytää tavoitellut osaamiset, voidaan katsoa paremmaksi.
Johtopäätökset
Edellä kuvatuilla periaatteilla toimiva ”osaamissuosittelija” on jo käytössä Työmarkkinatorilla profiilin täytössä, ja uusia sovelluskohteita löytyy koko ajan. Syöteteksti kun voi olla periaatteessa mitä vain yksittäisestä hakusanasta henkilön itsensä kirjoittamaan esittelytekstiin ja CV:stä työpaikkailmoitukseen. Kehitystyö jatkuu.
Yleisesti ottaen ratkaisussa on mielenkiintoista se, että käytetyt työkalut ja kirjastot ovat kenen tahansa ilmaiseksi ladattavissa, eikä tekniikka sinänsä ole kovin mutkikasta käyttää. Käyttökelpoisen datan löytäminen ja käyttöön saaminen on usein työläämpää kuin sopivien algoritmien kehittäminen. Ottaen huomioon, kuinka paljon tekstiä yrityksillä ja julkishallinnon toimijoilla on varastoissaan, luonnollisen kielen käsittelyn menetelmiä kannattaa varmasti hyödyntää entistä enemmän tulevaisuudessa.
Heikki Niittylä
Data Scientist