Vieraskynä: Tekoälyn hyödyntäminen kielitaitovaatimusten tunnistamisessa

Blogi

Työnhakijoiden – etenkin ulkomaalaistaustaisten – olisi pystyttävä etsimään työpaikkoja, joihin heidän kielitaitonsa riittää. Tämä tietysti edellyttää, että työpaikkailmoitukseen liittyy tieto työssä tarvittavasta kielitaidosta. Tätä tietoa ei kuitenkaan ole aina saatavissa rakenteisessa muodossa, vaikka työpaikkailmoituksen tekstissä saatetaankin mainita, millaista kielitaitoa edellytetään. Tästä heräsi kysymys, voisimmeko kenties päätellä kielitaitovaatimukset suoraan tekstistä tekoälyratkaisun avulla.

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

Lähdimme tavoittelemaan palvelua, joka ymmärtäisi

  • milloin puhutaan kielitaidosta ja milloin ei: "sinun on osattava suomea" vs. "meillä on toimipaikkoja ympäri Suomea",
  • onko lause myönteinen vai kielteinen: "edellytämme englannin kielen osaamista" vs. "sinun ei tarvitse osata englantia" ja
  • onko kielitaito välttämätön vai vain hyödyllinen: "ranskan osaaminen on välttämätöntä" vs. "arvostamme ranskan osaamista".

Palvelun tulisi toimia Työmarkkinatorilla käytössä olevilla kielillä (suomi, ruotsi ja englanti) ja tunnistaa ainakin parikymmentä yleisimmin työpaikkailmoituksissa esiintyvää kieltä.

Tekniikan valinta

Ensimmäiseksi lähdimme kokeilemaan, toimisiko relevanssimallista tuttu tekniikka (FastText + RNN-verkko) myös tässä tapauksessa. Alku näyttikin lupaavalta ja kielisanat löytyivät tekstistä ihan mukavasti. Mutta kun sitten olisimme halunneet erotella välttämättömiä ja hyödyllisiä kielitaitoja, mallin rajat tulivat vastaan. Voi olla, että ongelma olisi saatu ratkaistua käytetyn FastText-mallin lisäkoulutuksella, mutta sille polulle emme kuitenkaan lähteneet.

Sen sijaan lähdimme kokeilemaan, tarjoaisivatko suuret kielimallit (large language model, LLM) tähän näppärän ratkaisun. Hugging Face tarjoaa kiitettävän määrän kielimalleja, sekä työkalut niiden hyödyntämiseen, joten päädyimme käyttämään Googlen kehittämää monikielistä LaBSE-mallia. Monikielisen mallin hyötynä on se, ettemme tarvitse erillistä mallia suomen-, ruotsin- ja englanninkielisten työpaikkailmoitusten käsittelyyn, vaan yksi malli riittää. Lisäksi erikieliset opetusaineistot tukevat toisiaan, ts. kielimalli oppii jossain määrin käsittelemään työpaikkailmoituksia myös sellaisilla kielillä, joita sille ei ole erikseen opetettu.

Opetusaineisto

Jotta kielimallille saadaan opetettua, mistä sanoista olemme kiinnostuneita, tarvitsemme opetusmateriaalia. Opetusaineistoksi tarvitaan siis työpaikkailmoituksia, joihin on merkitty sanat, jotka kuvaavat kieliosaamisia. Tämä voitaisiin tehdä käymällä läpi todellisia työpaikkailmoituksia ja luokittelemalla sanoja manuaalisesti. Siinä olisi kuitenkin melkoinen työ, eikä opetusaineisto välttämättä olisi tasapainoista. Suomalaisissa työpaikkailmoituksissa nimittäin esiintyy paljon vaatimuksia suomen, ruotsin ja englannin osaamisesta, mutta aika harvoin vaikkapa ranskan osaamisesta. Haluaisimme kuitenkin mallin reagoivan samalla tavalla niin englantiin kuin ranskaan, espanjaan ja farsiinkin. 

Ratkaisimme tämän pulman luomalla keinotekoisia työpaikkailmoituksia, eli todellisia työpaikkailmoituksia, joihin on lisätty lause tai pari kielitaitovaatimuksista. Nämä lauseet taas generoitiin esimerkkilauseista, kuten "asiakastyö edellyttää sujuvaa KIELI ja KIELI kielen taitoa", joihin KIELI-merkinnät korvattiin satunnaisilla kielillä kuten (sanan taivutus huomioiden) "suomen", "saamen", "ranskan" jne. Näin pystyimme generoimaan suuren määrän opetus- ja testiaineistoa, jossa esiintyi eri kieliä erilaisissa lauseissa ja erilaisissa työpaikkailmoituksissa. 

Opetusaineistossa sanat luokiteltiin siis kolmeen luokkaan: 1) vaadittua kielitaitoa kuvaavat sanat, 2) hyödyllistä kielitaitoa kuvaavat sanat sekä 3) muut sanat.

Mallin opettaminen

Hugging Facen kielimallien jatko-opettaminen ei sinänsä ole teknisesti kovin vaikeaa, mutta se vaatii prosessointivoimaa ja aikaa. Omalla koneella tämän kokoluokan malleja ei ole enää kovin mukava kouluttaa, joten hyödynsimme Azuren koneoppimisympäristöä. Lähdimme liikkeelle pienemmillä koneilla, mutta huomasimme pian, että tarvitsemme opettamiseen GPU-koneen. Sen jälkeen ongelmaksi muodostui se, että osassa tarjolla olevista näytönohjaimista oli sen verran vähän muistia, etteivät ne kyenneet käsittelemään tämän kokoluokan kielimallia. Lopulta ratkaisuksi muodostui Nvidian Testa T4 -näytönohjain, jolla opetusajot pystyi tekemään muutamassa tunnissa.

Kielisanojen muuttaminen kielikoodeiksi

Opetetulla kielimallilla löydämme siis työpaikkailmoitusteksteistä sellaiset sanat, jotka kertovat kielitaitovaatimuksista. Tämä ei ihan vielä riitä, sillä kielet täytyy esittää ISO 639-1 -kielikoodeilla. Tämä muunnos kielisanasta kielikoodiksi osoittautui niin suoraviivaiseksi, ettei siihen kannattanut rakentaa sen suurempaa älykkyyttä. Niinpä kielet tunnistetaan puhtaasti merkkijonovertailulla: jos löydetyssä sanassa esiintyy esimerkiksi merkkijono "ruots", "svensk" tai "swedis", palautetaan kielikoodi "sv".

ISO 639-1 (wikipedia.org, englanniksi)

Toimiiko se?

Olennainen kysymys on tietysti, toimiiko palvelu oikeilla työpaikkailmoituksilla. Pääsääntöisesti (selvästi yli 95% työpaikkailmoituksista) se toimii erinomaisesti, vaikka kielitaitovaatimuksia voikin sanoittaa hyvin eri tavoin. Otetaanpa esimerkki työpaikkailmoituksesta. "Peruskoulun päätoiminen ruotsin kielen tuntiopettaja. Koulun kieliohjelmassa on tällä hetkellä B1 ruotsi sekä A1 ja A2 kielinä englanti, ranska ja saksa sekä B2 espanja." Tekoälyn mukaan tekstin perusteella tehtävässä vaadittu kielitaito on ruotsi. Seuraavassa esimerkissä tekoäly on tunnistanut vaadituiksi kielitaidoiksi suomen ja farsin. "Haetaan persian/farsin kielen tulkkia. Edellytämme erinomaista suomen ja persian/farsin kielen taitoa."

Seuraavassa esimerkissä tekoäly on tunnistanut vaadituksi kielitaidoksi englannin ja hyödylliseksi kielitaidoksi saksan, ranskan ja suomen. "Fluent in speaking English, and completely proficient in writing in English (writing autonomously contractual letters, Contract Amendments and documents issued to the subcontractors). - Proficiency in German and/or French and/or Finnish is a plus." Ruotsinkielisestä tekstistä tekoäly on osannut poimia vaadituiksi kieliksi suomen ja englannin sekä hyödyllisiksi kieliksi saksan, ruotsin ja italian. "Du kommer att lyckas med den här uppgiften med flytande finska och engelska muntliga och skriftliga färdigheter. Färdighet i andra språk, särskilt tyska, svenska och italienska, anses till din fördel."

Esimerkissä "Arvostamme myös monipuolista kielitaitoa. Hyvä englannin kielen taito on välttämättömyys (työkielemme on suomi) ja muu kielitaito, kuten arabia, espanja, ruotsi, venäjä ja viro on eduksi." on tunnistettu vaadituksi kielitaidoksi englannin ja suomen osaaminen sekä hyödylliseksi kielitaidoksi arabian, espanjan, ruotsin, venäjän ja viron osaaminen.

Kirjoitusvirheet haittaavat tekoälyn toimintaa

Harva tekoälypalvelu on kuitenkaan täydellinen. Esimerkiksi kirjoitusvirheet ja tulkinnanvaraisuudet osoittautuvat mallille vaikeiksi. Kielimalli ei myöskään ymmärrä esimerkiksi viittauksia "toiseen kotimaiseen" tai "skandinaavisiin" kieliin. Ja toisinaan malli saattaa epäonnistua ilman mitään ilmeistä syytäkään. Mallin jatkokehittäminen on kuitenkin suhteellisen suoraviivaista, sillä havaituista virheistä saadaan uutta opetusmateriaalia.

Mallin tekemät virheet ovat tyypillisesti sellaisia, että jokin kielitaitovaatimus jää huomaamatta tai luokittuu väärin. Esimerkiksi seuraavasta lauseesta tekoäly ei ole osannut luokitella suomea ja ruotsia pakolliseksi kielitaidoksi, vaan se on määritellyt ne virheellisesti hyödylliseksi kielitaidoksi. "Tehtäviisi kuuluu puhelimitse tapahtuva asiakaspalvelu sekä suomen että ruotsin kielellä ja tämän lisäksi työnkuvaasi kuuluu myös erilaiset toimistotyöt." 

Kirjoitusvirheen vuoksi seuraavasta esimerkistä jäi puuttumaan kokonaan suomen osaaminen. "We are looking for team player with good communication (English and Finish) and CAD skills." Ainoastaan englannin kielen taito oli määritelty vaadituksi kielitaidoksi. Ilman selkeää syytä tekoälyltä jäi tunnistamatta englannin kieli seuraavassa esimerkissä. "Vi använder finska som vårt huvudsakliga arbetsspråk, men nästan daglig kommunikation med våra rektorer bedrivs på engelska, kunskap om tyska är en fördel men inte en nödvändighet." Vaadituksi kielitaidoksi oli luokiteltu suomi ja hyödylliseksi saksan kielen osaaminen.

Palvelu tulossa Työmarkkinatorille keväällä 2023

Kaiken kaikkiaan voimme kuitenkin olla tyytyväisiä, sillä alkuperäinen tavoite saavutettiin riittävällä tarkkuudella. Jatkossa voimme päätellä automaattisesti työpaikkailmoituksesta vaaditut kielet, mikäli niitä ei ole erikseen annettu. Se taas parantaa puolestaan kohtaantoa, kun pystymme tarjoamaan työnhakijoille heidän kielitaitoaan vastaavia työpaikkailmoituksia!

Palvelu on tulossa tuotantokäyttöön Työmarkkinatorille keväällä 2023.

Heikki Niittylä
Data Scientist
Gofore