Elämme digiaikakaudella. Silti usein pyydetään vapaamuotoista palautetta. Ja annetaan käteen kynä ja paperia. Usein tämä on palautteen antajalle se helpoin tapa. Säälin kuitenkin palautteiden käsittelijöitä.

Syöttääkö joku jossain kaikki nämä palautteet johonkin tietojärjestelmään?

Mikäli ei, niin mitä niille sitten tehdään?

Uskon että käsinkirjoitetut palautteet käsitellään tehokkaasti. Tehdään silti oma ratkaisumme käsinkirjoitetun palautteen automaattiseen käsittelyyn. Koska sen tekeminen on hauskaa.

Esimerkki – Kurssipalaute

Kaikki ovat olleet joskus kurssilla. Kurssin päätteeksi kouluttaja jakaa paperiset palautelomakkeet ja anelee palautetta. Mietin aina mitä kouluttaja niillä papereilla tekee. Lukee ja heittää roskiin?

Helpotetaan kouluttajan elämää ja tehdään ratkaisu jossa

  • Otetaan jokaisesta palautteesta kännykällä valokuva
  • Siiretään valokuvat kännykästä käsiteltäväksi
  • Automatiikka selvittää Flow:ta ja Azuren palveluja hyödyntäen mitä käsinkirjoitetuissa palautteissa lukee ja mihin sävyyn (sentiment) ne on kirjoitettu
  • Tulokset tallennetaan SharePoint-listaan

Aloitetaan.

Käyttöliittymä kuvien lähetykseen

Mietitään aluksi miten kouluttaja lähettää palautteet käsiteltäviksi.

Chatbot

Suosikkivaihtoehtoni. Chatbot, joka kysyy minkä kurssin palautteita olet lähettämässä (käyttäjä voi valita viimeisen 7 päivän aikana pitämistään kursseista). Tämän jälkeen lähetetään chatbotille kuvat. Vaivatonta ja nopeaa. Mutta pitäisi jaksaa vähän koodata…

Sähköposti

Valokuvat voisi lähettää kasittelepalautteet@xxx.com -osoitteeseen, josta Flow poimii ne käsiteltäväksi. Erittäin suoraviivaista. Pitäisi vain selvittää, mihin kurssiin palautteet liittyvät. Esimerkiksi:

  • Käyttäjä kirjoittaa sähköpostin otsikoksi kurssin tunnisteen (vähän työlästä..)
  • Flow selvittää palautteiden saapuessa lähettäjän 7 viimeisen vuorokauden aikana pitämät kurssit ja kysyy lähettäjältä, mihin niistä lähetetyt palautteet liittyvät

PowerApps

PowerAppsilla voisi toteuttaa mobiilisovelluksen, jossa valitaan pidetty kurssi, poimitaan siihen liittyvät valokuvat ja lähetetään käsiteltäväksi. Ihan kiva, mutta jätetään tällä kertaa väliin.

SharePointin dokumenttikirjasto

Yksinkertainen on kaunista. Käyttäjä lataa tiedostot puhelimen OneDrive-sovelluksella SharePointissa sijaitsevaan dokumenttikirjastoon. Kirjastoon on automaattisesti luotu omat kansiot jokaista pidettyä kurssia kohden.

Lukitaan tämä. Sovellus löytyy valmiina puhelimesta(ni) ja kuvat on helppo lisätä yhtenä könttänä valittuun kansioon.

Eikä tarvitse kirjoittaa riviäkään koodia. Edes PowerApps ”koodia”.

SharePoint-sivusto

Luodaan aluksi SharePoint-sivusto. Valokuvat palautteista tullaan tallentamaan sen dokumenttikirjastoon (Documents), johon luomme muutaman kurssikansion valmiiksi.

Näyttökuva 2018-3-17 kello 17.43.33

Luodaan sivustolle lista, johon kuvista poimittu palaute tallennetaan.

Näyttökuva 2018-3-18 kello 14.10.25.png

Azure-palvelut

Ratkaisumme tarvii toimiakseen muutaman Azure-palvelun. Ei ole vaikeaa, älä pelästy. Jos sinulla ei ole Azure-tiliä, voit aina luoda ilmaisen 30 päivän kokeilutilin.

Painetaan plussaa (Create a resource), etsitään Computer Vision API ja luodaan sellainen. Valitse palvelun sijainniksi (Location) West Europe, niin voit käyttää esimerkissämme olevia palvelujen url-osoitteita (endpoint).

Näyttökuva 2018-3-17 kello 17.21.55.png

Sama temppu Text Analytics API:n kanssa.

Näyttökuva 2018-3-17 kello 17.28.33

Sitten haetaan molemmista luoduista palveluista talteen jompi kumpi avaimista. Näiden avulla palveluja käytetään Flow-työnkulusta käsin.

Näyttökuva 2018-3-17 kello 17.29.30.png

Työnkulku (Flow)

Työnkulku käynistyy kun dokumenttikirjastoon ladataan tiedosto. Meitä kiinnostaa tiedoston sisältö, joten haetaan se ensimmäiseksi.

Näyttökuva 2018-3-18 kello 11.04.43.png

Flow:ssa ei ole valmista yhdistintiä (connector) käsinkirjoitetutun tekstin tunnistamiseksi. Teemme http-kutsun hetki sitten luomaamme Computer Vision API -palveluun. Ocp-Apim-Subscription-Key:n arvoksi annetaan ko palvelun avain.

Näyttökuva 2018-3-18 kello 11.06.02.png

Palvelut vastaavat yleensä JSON-muotoisella viestillä. Niin nytkin ja viesti näyttää tältä.

Näyttökuva 2018-3-18 kello 11.34.02

Käsinkirjoitetun tekstin tunnistuspalvelun sielunelämään voi tutustua paremmin sen API-kuvauksen lukemalla. Selviää ettei kutsumamme palvelu palauta kuvasta löydettyä tekstiä, vaan url-osoitteen (Operation-Location), josta tuloksen voi käydä myöhemmin kysymässä. Osoite on voimassa 24 tuntia.

Pitää siis kaivaa Operation-Location:in arvo tuosta puurosta. Onneksi Flow:ssa on kätevä jäsennä JSON (Parse JSON) -toiminto. Sille voi antaa malliksi palvelun vastauksen ja se osaa muodostaa sen perusteella JSON-tiedoston rakenteen kuvauksen.

Näyttökuva 2018-3-18 kello 11.23.41.png

Tämän jälkeen voimme käyttää työnkulussa JSON-viestin sisältä löytyneitä arvoja.

Koska kuvan analysointi voi kestää, lisätään 2 minuutin viive. Viive voi olla mainiosti vaikka tunnin. Valmistuupa analysointi varmasti.

Odotuksen jälkeen noudetaan tulokset (Get Handwritten Text Operation Result). Kutsutaan edellistä vastauksesta löytyvää Operation-Location –osoitetta. Ja parsitaan taas vastauksena tuleva JSON -viesti.

Näyttökuva 2018-3-18 kello 11.44.30.png

JSON parsinnan jälkeen kirjoitettua tekstiä ei löydy yhdestä muuttujassa (mikä olisikin liian helppoa). Sanat on jaettu riveihin ja jokaisesta sanasta (sanajoukosta) on kerrottu koordinaatit (box), joiden sisällä ne ovat.

Alustetaan merkkijonomuuttuja (teksti) johon lisätään rivi (lines) kerrallaan sanat (text).

Näyttökuva 2018-3-18 kello 12.05.35.png

Nyt teksti-muuttujassa on se paperille käsin kirjoitettu teksti.

Ajetaan löydetty teksti vielä asenne (sentiment) analyysin läpi. Tähän löytyy oma yhdistin, joten vältymme oman http-kutsun tekemiseltä.

Näyttökuva 2018-3-18 kello 12.11.18

Melkein valmista! Nyt meillä on tiedossa käsinkirjoitetun palautteen sisältö, sekä AI-palvelun tuottama arvio palautteen sävystä. Tallennetaan vielä nämä tiedot.

Näyttökuva 2018-3-18 kello 12.20.11.png

Mikäli käsiala on todella epäselvää, ei palvelu tunnista sisältöä. Näitä tilanteita varten liitetään kuva alkuperäisestä palautteesta rivin liitteeksi. Samalla poistetaan alkuperäinen tiedosto dokumenttikirjastosta.

Näyttökuva 2018-3-18 kello 12.22.40.png

Valmis ratkaisu

Toimiiko se?

Yllättävän hyvin. Tehdään muutama palaute. Siistein käsiala on vaimollani. Kamalin itselläni. Pojan käsiala on jossain välimaastossa.

IMG_1581

Otetaan palautteista kuva yksi kerrallaan jonka jälkeen avataan OneDrive-sovellus. Navigoidaan aluksi luomaamme dokumenttikirjastoon ja ladataan tiedostot sinne.

Odotetaan muutama minuutti, jonka aikana palautteet ilmestyvät kurssipalaute-listaamme!

Näyttökuva 2018-3-18 kello 13.19.18.png

Näin kone selvisi kasan tuhruisimmista palautteesta.

 

Mitä tämä kaikki maksaa?

Oletetaan että organisaatiolla on käytössään Office365-tilaus (Education, Business, E1, E3, E5 jne). Kustannukset eivät näytä pahalta.

  • SharePoint kirjasto ja listaus – ilmainen
  • OneDrive mobiilisovellus – ilmainen
  • Työnkulut (Flow) – ilmainen (jokainen käyttäjä voi suorittaa kuussa 2000 työnkulun toimintoa)
  • Käsinkirjoitetun tekstin tunnistaminen kuvasta – Mikäli 5000 analyysia / kk riittää, palvelu on ilmainen. Maksullinen tilaus: 1000 analyysia / kk = 2.01€
  • Tekstin analysointi (sentiment) – Mikäli 5000 analyysia / kk riittää, palvelu on ilmainen. Edullisin maksullinen tilaus:  25 000 analyysia / kk = 63€

Huomioita

Tämänkertainen esimerkki oli nopea toteuttaa. Loppujen lopuksi kyseessä on vain yksi työnkulku. Mutta kuten aina, on tässäkin ratkaisussa omat heikkoutensa.

Tekstintunnistus

Käsinkirjoitetun tekstin tunnistus on preview-vaiheeessa ja se ymmärtää vain englanniksi kirjoitettua tekstiä. Kokeilin tehdä muutaman palautteen suomeksi, eikä se ymmärtänyt niistä juuri mitään. Käsinkirjoitetun tekstin tunnistaminen on koneelle vaikeaa. Pelkkä merkkien tunnistus ei riitä, vaan rinnalle pitää saada ymmärrystä sanastosta ja lauseista. Näin kone voi paremmin arvata mitä paperille on tuherrettu.

Yllättävä ongelma – kuvien koko

Ratkaisussa on yksi kohta, joka tekee siitä käyttökelvottoman. Käsinkirjoitetun tekstin tunnistava API ottaa vastaan max 4MB ja 3200 x 3200 kokoisia kuvia. iPhonellani otetut kuvat ovat kooltaan suurempia, eikä niitä pysty pienentämään samalla kuin ne ladataan OneDriveen. Jouduinkin lähettämään ne ensin itselleni sähköpostilla (jolloin kuvat voi kätevästi pienentää).

Vanhalla iPadilla homma toimii sen huonomman kameran ansiosta.

Tästä ei kuitenkaan ole syytä olla huolissaan. Aina voi tehdä Azure Functionsin, joka pienentää liian suuret kuvat osana prosessia.

Raportointi

Palautteiden sävyn automaattinen analysointi mahdollistaa kiinnostavan raportoinnin rakentamisen.

  • Miten suuri osa kurssilaisista on jättänyt palautteen? Poikkeaako luku kursseittain tai kouluttajittain?
  • Palautteiden keskimääräinen sävy asteikolla 0-1. Poikkeaako luku kursseittain tai kouluttajittain?

Yhteenveto

Esimerkkitoteutus vain vahvisti käsitystäni. Azuren tarjoamia, varsin kehittyneitäkin, palveluja on helppo liittää osaksi omia ”no-code” ratkaisuja.

Kannattaa kokeilla.

 

Esimerkkipalautteet poimittu: https://theericegan.com/evidence-of-teaching-effectiveness/course-evaluation-comments/