Vieraskynä: Tekoälyn hyödyntäminen työpaikkojen haussa

Blogi

Työmarkkinoiden ehkä merkittävin käsite on ns. kohtaanto, eli se, miten työntekijät ja työpaikat kohtaavat. Jos kaikki osuu kohdalleen, työntekijä saa omaa osaamistaan ja mielenkiintoaan vastaavan työpaikan, työnantaja taas osaavaa työvoimaa. Samalla elinkeinoelämän rattaat pyörivät ja tarve yhteiskunnan tuille vähenee. Juuri oikean työpaikan löytäminen kullekin työnhakijalle on kuitenkin haastavaa; työntekijän työhistoria ei välttämättä kerro kaikkea hänen osaamisestaan ja työtoiveistaan eikä työnantajakaan välttämättä tiedä tarkkaan, mitä työntekijältä odottaa.

Heikki Niittylä työpöydän ääressä

Työmarkkinatorilla on aiemminkin voinut hakea omaan profiiliin sopivia työpaikkoja, jolloin haku on perustunut mm. ammattien ja osaamisten ESCO-luokituksiin, koulutukseen ja kielitaitoon. Nyt uudistuneeseen profiiliin voi kirjoittaa myös vapaata tekstiä omasta osaamisesta sekä työtoiveista, jolloin haku käyttää myös luonnollisen kielen käsittelyyn (natural language processing, NLP) pohjautuvia menetelmiä. Kuvaan tässä blogikirjoituksessa muutamia tekoälymenetelmiä, joita tämänhetkinen Työmarkkinatorin työpaikkahaku hyödyntää.

Relevanssimalli

Havaitsimme varsin pian, että hakujen kohdistaminen työpaikkailmoitusten tekstiin sellaisenaan on hiukan ongelmallista. Työpaikkailmoituksissa voi esiintyä nimittäin paljonkin sanoja ja lauseita, jotka eivät itse asiassa kuvaa kyseessä olevaa työpaikkaa. Esimerkiksi metallialan yritys saattaa kertoa ilmoituksessaan laveasti siitä, millaista metallialan osaamista yrityksessä on, mutta ilmoituksessa haetaan kuitenkin vaikkapa kirjanpitäjää tai siivoojaa – ei suinkaan metallialan osaajaa. Jos ilmoitusta käytettäisiin sellaisenaan, saisivat metallialaan liittyvät sanat liikaa painoarvoa. Tämän ongelman ratkaisemiseksi rakensimme työpaikkailmoitusten esiprosessointiin työkalun, jota kutsumme relevanssimalliksi. Se pyrkii poimimaan alkuperäisestä työpaikkailmoituksesta vain ne sanat, jotka todella kuvaavat työpaikkaa ja haettavaa ammattilaista.

Käytännössä työpaikkailmoituksessa esiintyvät sanat muutetaan ensin FastText-mallin avulla numeerisiksi vektoreiksi, minkä jälkeen sanat syötetään takaisinkytketylle neuroverkolle (recurrent neural network, RNN), joka laskee kullekin sanalle sen merkityksellisyyttä kuvaavan pistemäärän. Lopuksi relevanssimalli antaa ulos sanat, joilla on suurin pistemäärä. Palautettavien sanojen määrä riippuu paitsi sanojen pistemääristä, myös työpaikkailmoituksen pituudesta; lyhyemmän ilmoituksen sanoista palautetaan suurempi osa, pitemmän ilmoituksen sanoista taas pienempi osa.

Relevanssimalli on opetettu suomen-, ruotsin- ja englanninkielisillä työpaikkailmoituksilla, joten sama malli kykenee käsittelemään työpaikkailmoitukset riippumatta siitä millä kielellä (tai kielillä) ne on kirjoitettu. Opetusaineisto muodostettiin käymällä manuaalisesti läpi muutamia satoja työpaikkailmoituksia ja poimimalla niistä merkityksellisimmät sanat.

Otetaanpa esimerkki. Tästä työpaikkailmoituksesta on lihavoitu relevanssimallin poimimat sanat:

”Olemme luotettava ja varma työnantaja. Tarjoamme työpaikkoja mm. rakentamisen-, logistiikan-, teollisuuden-, sosiaali- ja terveysalalle sekä hotelli ja ravintolan- ja kaupan alalle. Panostamme osaajiemme työhyvinvointiin kaikilla toiminnan tasoilla ja vaalimme hyvää työilmapiiriä. Toimimme valtakunnallisesti lähellä sinua. Olemme kansainvälisesti toimiva suomalainen perheyritys ja työllistämme yli 14000. Haemme maalareita uudis- ja saneerauskohteisiin Joensuuhun. Haemme tekijöitä, joille työn jälki on tärkeää. Teet siis työsi huolella ja sinulla on hyvä kokemus maalaus alalta ja monipuolinen tietotaito uusimmista käytettävistä materiaaleista. Työt ovat pääsääntöisesti sisämaalauksia. Edellytykset -n. 2 vuoden kokemus maalauksista -työturvallisuuskortti -hyvä asenne ja huumorintajuakaan ei saa unohtaa. Lähetä hakemuksesi pian. Liitä mukaan cv:si tai tarkka listaus aiemmasta työkokemuksestasi ja osaamisestasi. Lisätietoja paikasta arkisin klo 8-16 antaa Matti Meikäläinen p. 050-12345678. Tarjoamme sinulle iloisen työilmapiirin sekä mukavan asiakaskohteen. Iloinen työn tekeminen ja kannustava, yhteistyöhenkinen ilmapiiri ovat meille tärkeitä. Seuraamme säännöllisesti henkilöstön työtyytyväisyyttä kyselyn avulla ja kehitämme toimintaamme saamamme palautteen avulla. Iloisen työyhteisön lisäksi tarjoamme mahdollisuuden kouluttautumiseen ja ammattitaidon kehittämiseen.”

Relevanssimalli jätti siis huomioimatta esimerkiksi yrityskuvauksen sekä hakuohjeet ja keskittyi tärkeimpään: minkä alan ammattilaisia haetaan ja mitä heiltä edellytetään.

TFIDF-haku

Kun työpaikkailmoituksista on poimittu olennaisimmat sanat, voimme lähteä kokeilemaan erilaisia hakumenetelmiä. TFIDF-haku on lähellä perinteistä tekstipohjaista hakua, ts. hakutekstistä poimitaan muutaman kirjaimen mittaisia sanan osasia ja tutkitaan, miten paljon näistä merkityksellisimpiä esiintyy missäkin työpaikkailmoituksissa. Menetelmä toimii hyvin tilanteissa, joissa sekä hakutekstissä että työpaikkailmoituksissa on paljon yhteisiä termejä, esimerkiksi kun "Laukaan seurakunta etsii suntiota" ja työnhakijalla on "kokemusta suntion työstä Petäjäveden seurakunnassa". Hyvä puoli on myös se, että TFIDF-haku toimii silloinkin, kun jokin yksittäinen ammatti tai termi on aiemmin täysin tuntematon. Esimerkiksi, jos työpaikkailmoituksessa haettaisiin "kuukushipluttelijaa" ja työnhakija mainitsee profiilissaan olevansa "erinomainen kuukushipluttelija", tämä hakualgoritmi osaa yhdistää nämä kaksi toisiinsa.

Vastaavasti algoritmin huono puoli on, ettei se ymmärrä sanojen kontekstia tai synonyymeja, joten "lakimies" ja "juristi" eivät yhdisty toisiinsa. TFIDF-haku on myös kieliriippuvainen, joten ruotsinkielinen hakija ei löydä sillä oman alansa töitä, mikäli työpaikkailmoitukset on laadittu suomeksi.

Kokeillaanpa menetelmää tietokantaan, jossa on laajasti eri ammatteja edustavia työpaikkailmoituksia: ”Minulla on vuosikymmenen kokemus rosterihitsauksesta.” Hakutulosten kärjessä on työpaikkailmoitus: ”Haemme kasvavalle asiakasyrityksellemme MIG-ROSTERIHITSAAJAA Oulun alueelle.” Se osui ymmärrettävästi nappiin.

Toisin käy, ellei työpaikkailmoituksessa ole käytetty täsmälleen samoja termejä. Esimerkiksi haulla ”Haluaisin työskennellä bussikuskina.” löytyy työpaikkailmoituksia, jossa etsitään taksinkuljettajia, ei linja-autonkuljettajia, kuten pitäisi.

FastText-haku

FastText-mallien paras ominaisuus on, että ne kuvaavat samaan aihepiiriin liittyvät sanat lähelle toisiaan, kun sanat muutetaan numeerisiksi vektoreiksi. Työpaikkailmoituksilla opetetun FastText-mallin avulla kaikki ilmoituksissa esiintyvät sanat on jaettu 500 klusteriin (tai "lokeroon"), joista kussakin on joukko samaan aihepiiriin kuuluvia sanoja. Niinpä sanat "asianajaja", "lakimies", "juristi", "oikeustiede", "juridiikka" ja "oikeudellinen" löytyvät kaikki samasta klusterista. Malli on myös kieliriippumaton, joten samassa klusterissa ovat myös sanat "law", "attorney", "advokat" ja "juridikstudent". Varsinainen haku perustuu sitten siihen, missä työpaikkailmoituksissa olevat sanat osuvat samoihin klustereihin kuin hakutekstissä olevat sanat.

Tämän lähestymistavan heikkous on siinä, että se tunnistaa vain aiemmin mallille opetettuja sanoja, joten malli pitää kouluttaa ajoittain uudelleen, jotta se tunnistaisi esimerkiksi uusia ammatteja. Lisäksi sanojen klusterointi ei ole kaikilta osin täydellinen, vaan yksittäiset sanat voivat päätyä väärään lokeroon. Jos hakuteksti on vielä kovin lyhyt, yksittäisten sanojen merkitys kasvaa ja FastText-haku voi huonolla tuurilla tuottaa todella outoja tuloksia.

Kokeillaanpa nyt samaa hakua, joka viimeksi löysi taksikuskin paikkoja: ”Haluaisin työskennellä bussikuskina.” Nyt parhaiten täsmäävä työpaikkailmoitus on: ” Haemme asiakasyrityksellemme linja-autonkuljettajia tilausajoliikenteeseen.” Tämä osui kohdalleen! FastText-malli siis ymmärtää bussin ja linja-auton välisen yhteyden.

Entäpä: ”Osaan tehdä proteeseja, jos omia hampaita on jouduttu poistamaan.” Tämä haku ei palauta mitään, sillä hakutekstissä ei satu olemaan FastTextmallin tuntemia termejä.

Ammattihaku

Kirjoitin aiemmin osaamissuosittelijasta, joka osaa ehdottaa tekstiin perustuen myös ESCO-luokituksen mukaisia ammatteja. Koska järjestelmään tuotavilla työpaikkailmoituksilla on määriteltynä ammatti tai ammatteja, saadaan näistä rakennettua helposti vielä yksi hakualgoritmi. Hakuteksti annetaan osaamissuosittelijalle ja haetaan sen jälkeen työpaikkailmoituksia, joiden ammatti on osaamissuosittelijan palauttamien ammattien joukossa. Haku on kieliriippumaton, sillä osaamissuosittelija toimii samalla tavalla kaikilla tuetuilla kielillä.

Ammattihaku ei siis hyödynnä lainkaan työpaikkailmoituksen tekstiä. Tästä aiheutuva robustisuus voi tilanteesta riippuen olla etu tai haitta. Työpaikkailmoituksiin liitetty ammattimääritys ei myöskään ole aina paras mahdollinen, mikä toisinaan heikentää huomattavasti tämän hakutavan toimivuutta.

Kokeillaanpa taas samaa hakua kuin äsken: ”Osaan tehdä proteeseja, jos omia hampaita on jouduttu poistamaan.” Nyt listan kärjessä komeilee työpaikkailmoitus: ”Haemme Helsingissä sijaitsevaan hammaslaboratorioon kokoaikaista ja vakituista Hammasteknikkoa/Hammaslaboranttia.”

Tulosten yhdistäminen

Kuten edeltä huomataan, eri hakualgoritmeilla on omat vahvuutensa ja heikkoutensa. Mikään näistä ei ole yksiselitteisesti toisia parempi, eikä ole helppoa tapaa arvioida luotettavasti etukäteen, minkä algoritmin antamat ehdotukset olisivat parhaita. Siksi varsinainen työpaikkahaku käyttää aina näitä kaikkia ja yhdistää sitten tulokset sopivilla painokertoimilla yhdeksi listaksi. Näin yksittäisen algoritmin antamat huonot hakutulokset eivät välttämättä huononna kokonaistulosta kovin paljon. Toisaalta, jos sama työpaikkailmoitus nousee esiin kaikilla hakutavoilla, se todennäköisesti vastaa hakutekstiä suhteellisen hyvin.

Todellisuudessa hakualgoritmi ei ole aivan näin suoraviivainen. Haussa esimerkiksi huomioidaan myös työtoiveet omilla painokertoimillaan. Alkuperäistäkään ammatteihin ja osaamisiin perustuvaa hakua ei ole hylätty, vaan kaikista näistä eri lähteistä koostetaan lopulliset käyttäjälle esitettävät tulokset.

Työ ei suinkaan ole vielä valmis ja tekijätiimillä on vielä monta hyvää ideaa kokeiltavaksi. Tarvitsisimme kuitenkin mahdollisimman paljon palautetta nykyisen version toimivuudesta ja siksi pyytäisinkin sinua apuun. Kokeile kirjautua Työmarkkinatorille ja kerro erityisesti osaamisestasi ja työtoiveistasi. Ovatko saamasi työpaikkaehdotukset onnistuneita vai kenties naurettavia tai muuten epäolennaisia? Jätä palautetta, niin autat kehittämään palvelua juuri sinun tarpeitasi vastaavaksi!

Gofore on mukana rakentamassa Työmarkkinatoria, joka on omalta osaltaan tuomassa yhteen työntekijöitä ja työnantajia.

Heikki Niittylä

Data Scientist

Gofore