Sinisävyinen tausta jonka päällä valkoisella asiakirjoja kuvaavia kuvakkeita ja teksti xAPI

Älyk­kään ohjauk­sen digi­taa­li­silla jalan­jäl­jillä, osa 4: Ohjaa­ja­muis­tiosta XAPI-lauseiksi

Älyk­kään ohjauk­sen digi­taa­li­silla jalan­jäl­jillä -artik­ke­li­sar­jan kolman­nessa osassa on käyty läpi miten Azure DevOps-palve­lun datan nouta­mi­nen on toteu­tettu. Tässä osassa keski­ty­tään ohjaa­ja­muis­tioi­den sisäl­tä­män tiedon hake­mi­seen, parsi­mi­seen ja muok­kaa­mi­seen XAPI-muotoon. Haas­teena tässä on kirjat­ta­van muis­tion formaa­lin muodon määrit­tely, ilman että rajoi­te­taan käyt­tä­jien kirjaa­mis­va­pautta liikaa.

Muis­tion malli ja luke­mi­nen koneellisesti

Parsi­mi­sen mahdol­lis­ta­mi­seksi on ensiksi sovit­tava doku­men­tin muotoi­lusta, avain­sa­noista sekä esit­tä­mis­jär­jes­tyk­sestä. Nämä säännöt on esitel­tävä myös käyt­tä­jille, että niitä nouda­te­taan. Esimer­kiksi otsi­koissa täytyy käyttää tiettyä kirjoi­tusa­sua, ja niiden on esiin­nyt­tävä aina samassa järjes­tyk­sessä, että ohjel­man tilaa voidaan muuttaa eri dataa varten.

Doku­men­tit tallen­ne­taan Micro­soft Wordin tuke­massa docx-muodossa, joka sisäl­tää erinäi­siä muotoi­luja ja sisen­nyk­siä. Muis­tioi­den sisäl­tämä data on kuiten­kin osal­taan pelkkää tekstiä, joten parsi­mi­sen helpot­ta­mi­seksi docx-tiedosto muun­ne­taan ensiksi pelkäksi teks­ti­tie­dos­toksi Linux-palve­li­mella. Tässä auttaa tarkoi­tuk­seen suun­ni­teltu Docx2txt-ohjelma, joka lukee sille väli­te­tyn tiedos­ton ja tuottaa siitä version, joka on puhdasta tekstiä.

Parseri itses­sään toteu­te­taan hyödyn­tä­mällä sään­nöl­li­siä lausek­keita. Niiden avulla voidaan erotella teks­tissä esiin­ty­viä osia helposti, kunhan tiedossa on vain missä muodossa asiat ilmais­taan. Ohjaa­ja­muis­tio sisäl­tää tiet­tyjä avain­sa­noja ja merk­kejä, joiden perus­teella toiminta on koodattu.

Ryhmän jäsen­ten osal­lis­tu­mi­nen ohjaus­ta­paa­mi­seen merki­tään kuvassa 1 esite­tyllä tavalla. Merkintä alkaa sanalla Viikko, jonka jälkeen tulee viikon varsi­nai­nen numero sekä mahdol­li­sesti juok­seva viik­ko­nu­mero projek­tin alusta. Kaksois­pis­teen jälkeen tulee tapaa­mi­sen päivä­määrä. Osal­lis­tu­jat on merkitty tauluk­koon kukin omalle rivil­leen. Mukana on osal­lis­tu­jien sähkö­pos­tit ja nimet, jolloin tunnis­teena käytet­tävä sähkö­posti saadaan avai­meksi, ja opis­ke­li­jaan voidaan viitata luon­te­vam­min muis­tiossa pelkällä nimellä.

Taulu­kon loppuun merki­tään ohjaa­ja­ta­paa­mi­seen osal­lis­tu­mi­nen (Paikalla-sarake) sekä kehi­tys­blo­gi­mer­kin­nän päivi­tys (Dev blog -sarake) yhdellä seura­vista merkeistä:

  • X = paikalla
  • – = poissa, mutta ei huolta
  • ? = poissa, ei tietoa, oltava huolissaan.
Kuvakaappaus kokousmuistiosta, jossa osallistujien nimet (sutattu). sähköposti (sutattu), rooli ja onko paikalla vai poissa
Kuva 1. Esimerkki osal­lis­tu­mis­mer­kin­nän kirjaamisesta.

Tilan­ne­kat­sauk­set

Tilan­ne­kat­sauk­sessa puoles­taan tallen­ne­taan tietoa ryhmän jäsen­ten työs­ken­te­lystä. Haet­ta­van tiedon osalta tilan­ne­kat­sauk­sessa käyte­tään pidem­piä avain­sa­noja ja niiden yhdis­tel­miä. Kuvassa 2 olevassa esimer­kissä on käytetty osaa seuraa­vista mahdol­li­sista avainsanoista.

  • Ei tiedossa = opis­ke­lija ei osaa käytän­nössä kertoa, mitä on tehnyt tarkasteluvälillä.
  • Mukana toimin­nassa = opis­ke­lija  osaa kertoilla ylei­sellä tasolla, mitä on muiden kanssa tehnyt mutta omien roolin mukais­ten työteh­tä­vien kuvailu puuttuu.
  • Projek­ti­toi­mija = opis­ke­lija  osaa kertoa yksi­lö­ta­solla omista roolinsa mukai­sista työtehtävistään.

Lisäksi kuvauk­seen liite­tään seuraa­vat avain­sa­nat määreiksi, joilla voidaan täsmen­tää opiskle­li­jan työs­ken­te­lyn laatua:

  • Olema­tonta = ei osaa käytän­nössä kertoa, mitä on tehnyt tarkasteluvälillä.
  • Vähäistä = osoit­taa tehneensä jossain määrin projek­tiin liit­ty­viä asioita tarkasteluvälillä.
  • Aktii­vista = osoit­taa tehneensä runsaasti projek­tiin liit­ty­viä asioita sekä omien työteh­tä­vien että yhteis­toi­min­taan osal­lis­tu­mi­sen osalta tarkasteluvälillä.
Esimerkki yksittäisten jäsenten tilannekatsauksesta jossa kuvattu tehtäviä ja miten aktiivisesti jäsen on mukana toimittamassa
Kuva 2. Esimerkki kirja­tusta tilannekatsauksesta.

Toteu­tuk­sen huomioita

XAPI-muun­nos­oh­jelma raken­ne­taan tunnis­ta­maan aiemmin maini­tut avain­sa­nat ja määreet. Muun­nos­oh­jelma tuottaa  suoraan visua­li­soin­nissa hyödyn­net­tä­vää dataa, jolloin XAPI-tapah­tu­mia ei tallen­neta oppi­mis­ta­pah­tu­mien tieto­va­ras­toon, vaan niistä muodos­te­taan suoraan koos­te­tie­dosto visua­li­soin­tia varten.

Avain­sa­no­jen luke­mi­nen ja tulkinta ohjel­mal­li­sesti on sinäl­lään helppoa, mutta avain­sa­no­jen mahdol­li­nen muut­tu­mi­nen jatkossa, sekä esimer­kiksi UTF-8-kooda­tut skan­di­naa­vi­set kirjai­met on huomioi­tava toteu­tuk­sen aikana C++-ohjelmointikieltä käytet­täessä. Esimer­kiksi ä vaatii kaksi tavua, kuin a vain yhden. Näitä silmällä pitäen käytet­tä­ville avain­sa­noille luotiin määri­tys eril­li­seen asetus­tie­dos­toon. Tällöin koodiin itseensä ei määri­tellä hakusa­noja lain­kaan, ja samalla välte­tään tavu­ra­jat ylit­tä­vien merk­kien tunnis­ta­mi­son­gel­mat sekä tarve eril­li­selle kirjas­tolle merk­ki­jo­no­jen käsittelyyn.

Erityis­ta­pauk­sena on huomioi­tava käyt­tä­jä­tau­luk­koon kirja­tut sähkö­pos­tio­soit­teet. Azure DevO­pi­sissa esiin­ty­vät käyt­tä­jän sähkö­pos­tio­soite voi olla eri muodossa, sillä Azure DevOps käyttää niin sanot­tua Princi­pal User­name-kenttää Active Direc­to­ryn käyt­tä­jä­tie­tu­eesta sähkö­pos­tina, kun taas muissa palve­luissa on käytössä selko­kie­li­sempi versio. Tämän voidaan huomioida teke­mällä muun­nok­sen yhtey­dessä LDAP-kysely, jonka tuot­ta­man datan perus­teella sähkö­pos­tio­soit­teet on mahdol­lista yhtenäistää.

Pilotin aikana huomat­tiin, että ohjeis­tuk­sesta huoli­matta käyt­tä­jät voivat tehdä virheitä. Kuvassa 1 on punai­sella koros­tet­tuna virhe­ti­lanne, joka oli synty­nyt huoli­mat­to­man näppäi­lyn vuoksi. Parseri onkin pyrit­tävä ohjel­moi­maan siten, että se toimii myös epäkel­vol­li­silla syöt­teillä. Toteu­tettu muun­nos­pro­sessi on havain­nol­lis­tettu vuokaa­viona kuvassa 3.

Kuva 3. Ohjaa­ja­muis­tioi­den muun­nos­pro­sessi vuokaaviona. 

Yhteen­veto

Luon­nol­li­sella kielellä kirjoi­te­tulle ohjaa­ja­muis­tiolle on mahdol­lista luoda muotoi­lusään­nöt, jolloin sille voidaan kehit­tää parsin­taoh­jelma sään­nöl­li­siä lausek­keita hyödyn­täen. Ohjel­massa kannat­taa huomioida doku­men­tissa mahdol­li­sesti ilme­ne­vät inhi­mil­li­set kirjaa­mis­vir­heet ja tehdä muun­nos­oh­jel­masta vika­sie­toi­nen. Kun teksti on koneel­li­sesti tulkit­ta­vissa, siitä voidaan muodos­taa XAPI-lauseet. XAPI-muodossa olevan oppi­mi­sa­na­ly­tiik­ka­tie­don visua­li­soin­ti­rat­kai­sua esitel­lään sarjan viimei­sessä artik­ke­lissa, jossa avataan pilo­tista saadut johto­pää­tök­set, sekä pohdi­taan sitä, palve­leeko suun­ni­teltu visua­li­sointi opet­ta­jaa halu­tulla tavalla.


Kirjoit­taja:

Anssi Gröhn, tieto­jen­kä­sit­te­lyn lehtori, Älykäs ohjaus -hanke, Karelia-ammattikorkeakoulu