Ajattelin jakaa ajatuksiani eräästä viimeaikaisista innovaatioistamme, joita olemme työstäneet Profiumissa. Tämän artikkelin tarkoituksena on herättää keskustelua mahdollisista sovellusalueista kehittämällemme algoritmille. Algoritmi voi tulla avuksi esimerkiksi työmarkkinoiden kohtaanto-ongelmassa.

Työmme taustalla on itse kehittämämme sääntöpohjainen päättelykone. Tuemme päättelykoneessa datalog-luokan ilmaisuvoimaisia sääntöjä. Tämä tarkoittaa sitä, että olemassa olevasta tiedosta voidaan päätellä uutta tietoa kuten alla olevat pseudosyntakset englanninkieliset esimerkit esittävät:

  • hasWorkExperience(X, Java) and hasCompleted(X, OracleJavaCertificate) -> hasCompetence(X, JavaProgramming) 
  • hasCompleted(X, BscInComputing) and hasCompleted(X, JavaBasics) and hasCompleted(X, JavaAdvanced) -> hasCompetence(X, JavaProgramming)

Nämä molemmat säännöt määrittelevät onko työnhakijaehdokas X:llä Java-ohjelmointikykyä.

Sääntöjen suorittamisen lopputuloksena voi olla harmittava tilanne, ettei yhtäkään Java-ohjelmointikykyistä hakijaa löydy. Päätimme Profiumissa että pystymme kyllä tarjoamaan paremman tuloksen sääntöjen suorittamisesta kuin vain tyhjän joukon. Meidänhän pitää pystyä löytämään sellaiset työnhakijat, jotka olisivat lähellä ideaalista osaajaa, mutta jolla kaikki kriteerit eivät välttämättä täyty. Katsotaanpa esimerkkiä Johnin osaamisprofiilin näkökulmasta:

  • hasWorkExperience(John, Java)
  • hasCompleted(John, OracleJavaCertificate)

Johnin tiedot ja taidot ovat riittävät lähtötiedot sille että aikaisemmin esitetyt säännöt liittävät häneen myös hasCompetence(John,JavaProgramming) relaation/ominaisuuden. Mutta jos katsomme sitten Saaran profiilia:

  • hasCompleted(Saara, BscInComputing)
  • hasCompleted(Saara, JavaBasics)

Kehittämämme algoritmi evaluoi nyt säännöt, mutta palauttaa Saaran osalta tiedon että häneen tulisi liittää relaatio/ominaisuus hasCompleted(Saara, JavaAdvanced) jotta hän olisi hakemamme Java-osaaja, eli Saaran pitäisi käydä kyseisellä kurssilla saavuttaakseen tämä ominaisuus.

Olemme toteuttaneet edellä esitetyn algoritmin Java API -rajapintana, joka palauttaa tiedon siitä, mitkä olivat lähimmät osumat ja miltä osin osumat olivat puutteellisia, järjestettynä sen mukaan kenellä oli vähiten puutteita, ja viimeisenä ne, joilla oli eniten puutteita.

Osaamispohjainen työpaikkojen yhteensovittaminen on ilmeinen sovelluskohde tälle algoritmille, mutta toivon teidän haastavan meidät ajatuksilla muista sovelluskohteista.

Odotan innolla kommenttejanne..