Kokemuksia organisaation yhteisen chatbotin kehittämisestä

16.11.2020

Kuva mohamed Hassan Pixabaystä

Laureassa otettiin kuluneen vuoden aikana käyttöön Front AI -nimiseltä yritykseltä hankittu chatbot-palvelu. Conversational AI -kategorian chatbotin virittäminen vaati suurehkon määrän työtä ja sillä korvattiin aiemmin käytössä ollut kirjaston chat-palvelu. Tässä kirjoituksessa kuvaillaan Laurean bottiprojektia kirjaston näkökulmasta ja tarkastellaan kirjastossa ensimmäisten kuukausien aikana saatuja kokemuksia.

Koko organisaation chatbot

Kreodin marraskuun 2019 numerossa aiemmin esitellyistä kirjastojen chatbot-projekteista (Hamk, Haaga-Helia) Laurean projekti poikkeaa siinä, että bottia rakennetaan yhteistyössä useiden eri korkeakoulupalveluiden kanssa. Tavoitteena on luoda chatbot, joka osaa laajasti vastata korkeakoulun eri palveluihin liittyviin kysymyksiin. Kirjaston lisäksi bottia on toistaiseksi koulutettu vastaamaan hakijapalveluiden, opintotoimiston ja tietohallinnon hallinnoimiin asioihin.

Projektin päävastuu Laureassa on tietohallinnolla. Bot-ratkaisun valinta on tietohallinnon tekemä, he koordinoivat hanketta Laurean sisällä ja hoitavat keskeisen yhteydenpidon palveluntarjoajan suuntaan.  

Kirjaston roolina on tuottaa botille kirjastoaiheiset vastaukset ja kouluttaa botti ymmärtämään kirjastoaiheisia kysymyksiä. Vastaavasti muut mukana olevat palveluyksiköt tuottavat omat sisältönsä ja hoitavat botin kouluttamisen oman aihealueensa osalta.

Botin kouluttamisen työkalut (erittäin lyhyt oppimäärä)

Botin toiminta perustuu Front AI:n norjalaisen yhteistyökumppani Boost.ai:n ohjelmaan. Boost.ai:n tuote kuuluu ns. keskustelevan tekoälyn (conversational AI) chatbot-kategoriaan. Toisin kuin nappipotit (button bot), jotka toimivat hierarkkisten FAQ-listojen tapaan tai avainsanalistoihin perustuvat varhaisemmat bottiratkaisut, conversational AI -luokan botit pyrkivät mahdollistamaan keskusteluja, jotka muistuttavat mahdollisimman pitkälle ihmisten välistä kommunikaatiota.

Maaginen kirjainyhdistelmä AI ei Boost.ai:n botin kohdalla tarkoita sitä, että botti oppisi asioita suoraan asiakkaiden esittämistä kysymyksistä tai annetusta palautteesta. Käytössä on malli, jossa jokainen botin toimintaan vaikuttava lisäys on ihmisen tekemä.

Keskeisiä botin hallintaan liittyviä työkaluja, jotka ovat jokaisen botin kouluttamiseen osallistuvan käytössä, ovat treenidata (training data), testidata (test data) ja synonyymit. Näistä treenidata ja synonyymit liittyvät botin toiminnan säätämiseen ja testidata botin toiminnan arvioimiseen.

Treenidatalla tarkoitetaan botin ylläpitäjien syöttämiä lauseita tai lauseen kaltaisia sanayhdistelmiä, joiden halutaan johtavan tietyn vastauksen (intent) antamiseen. Tyypillisesti jokaista botin vastausta kohti on syötetty vähintään 20 eri tavalla muotoiltua treenilausetta. Treenilauseiden tulee olla eri pituisia, sanajärjestyksen tulee olla mahdollisimman luonnollinen, mutta mielellään vaihdella eri kysymysten välillä ja tärkeiden sanojen tulee esiintyä lauseissa riittävän usein. Turhat sanat, jotka saattavat johtaa botin tarjoamaan tiettyä vastausta väärään kysymykseen, pitää pyrkiä karsimaan treenidatasta pois. Olennaisia asioita treenilauseissa ovat tiiviys, vastauksen aiheeseen liittyvät tärkeät sanat sekä sanojen väliset suhteet, eli etäisyys toisista sanoista sekä sanojen järjestys.

Esimerkiksi kirjaston aukioloaikoihin liittyvään vastaukseen on liitetty seuravanlaisia treenilauseita.

Haluan tietää kirjaston aukioloajat, milloin kirjasto on avoinna, milloin kirjasto menee kiinni, onko kirjasto avoinna lauantaisin, onko kirjasto kiinni viikonloppuisin, library opening hours jne.

Synonyymilista on sanasto, jonka avulla botti ymmärtää tietyt sanat samaa tarkoittaviksi. Kustakin käsitteestä valitaan yksi englanninkielinen sana pääsynonyymiksi ja sen alle linkitetään muita sanoja. Synonyymilista on keskeisessä roolissa myös siinä, että botti saadaan operoimaan eri kielillä. Laureassa bottia on koulutettu tunnistamaan kysymyksiä ja vastaamaan suomeksi ja englanniksi.

Synonyymien hallintaan liittyy sanarunkoja tuottava työkalu (stemmer), jonka avulla botti saadaan tulkitsemaan mm. eri sijamuotoja. Stemmerin ansioista kaikkia mahdollisia sijamuotoja ei tarvitse syöttää botille erikseen. Sanarunkojen pelkistäminen auttaa osittain myös kirjoitusvirheiden tulkitsemisessa.

Esimerkiksi lainaamiseen liittyvät sanat on synonyymilistalla merkitty pääsynonyymin loan alle. Linkitettyinä synonyymeinä siihen liittyvät mm. borrow, book check out, check out books, laina, lainaam, lainauks jne. Synonyymilistan sanoja ei katkaista samalla logiikalla kuin kirjastohakuja tehneet ovat tottuneet tekemään, vaan oikeasta katkaisukohdasta päättää stemmer-työkalu. 

Boost.ai:n botin testaaminen tapahtuu testidatan eli testilauseiden avulla. Kuhunkin vastaukseen liitetään treenilauseiden lisäksi joukko testilauseita, joiden tulee mielellään olla hieman eri tavalla muotoiltuja kuin varsinaiset botin vastaamista ohjaavat treenilauseet. Testilauseiden on tarkoitus simuloida asiakkaiden käyttämää kieltä. Kun treenidataan tai synonyymeihin on tehty muutoksia, ajetaan treeniajo, joka siirtää muutokset tuotantoon. Treeniajon jälkeen nähdään, miten testidatan lauseet toimivat muuttuneessa tilanteessa.

Testilauseet luodaan yleensä samaan tahtiin vastausten ja treenidatan kanssa, joskin hyvänä käytäntönä pidetään sitä, että sama henkilö ei olisi luomassa sekä treenidataa että testidataa.

Botin kouluttamisen ensimmäinen vaihe

Kirjaston osalta botin kouluttaminen alkoi maaliskuun lopulla, noin kolme kuukautta Laurean projektin aloittamisen jälkeen. Kaksi kirjaston tietoasiantuntijaa suoritti Boost.ai:n pakolliset verkkokurssit sisällön tuottamiseen ja botin treenaamiseen liittyen, jonka jälkeen varsinainen työ saatiin käyntiin.

Aluksi luotiin kokonaisnäkemys asioista, joita kirjaston palveluihin liittyen arveltiin ja tiedettiin kysyttävän. Pohjana asialistan luonnissa käytettiin mm. aiempaan chat-palveluun tulleita kysymyksiä sekä jo aiemmin luotua kirjastopalveluiden FAQ-listaa. Asiat järjestettiin hierarkkiseksi listaksi, jonka ylin taso oli kirjasto ja sen alla seuraavalla tasolla mm. asiakkuus, painetut aineistot ja elektroniset aineistot ja sitä seuraavalla tasolla esim. painettujen aineistojen alla lainaaminen, palauttaminen, varaaminen jne.

Jo alkuvaiheessa puntarointia aiheutti kysymys siitä, kuinka yksityiskohtainen vastaushierarkia haluttaisiin rakentaa. Kannattaisiko esimerkiksi pyrkiä hahmottelemaan kaikki lainaamiseen liittyvät erityistilanteet omiksi vastauksikseen vai riittäisikö jokin yleisempi ylätason vastaus, jolla saataisiin kuitattua useita erilaisia asiakkaiden lainaamiseen liittyviä kysymyksiä.

Hienosyisen vastausarsenaalin rakentaminen vaatii enemmän työtä sekä vastausten sisällön luomisessa että botin kouluttamiseen liittyvien taustamuuttujien rakentamisessa, mutta parhaimmillaan se tuottaa tarkkoja vastauksia juuri siihen, mitä asiakas on kysynyt. Toisaalta taas, mitä enemmän erilaisia vastauksia on luotu, sitä enemmän (varsinkin heikosti koulutetulla) botilla on mahdollisuus valita väärä vastaus tai päätyä tilanteeseen, jossa se ei pysty päättämään kahdesta tai useammasta samanarvoiseksi arvioimastaan vastauksesta juuri sitä oikeaa.

Karkean ja hienosyisen rakenteen välillä emme kirjastossa tehneet tiukkaa linjausta suuntaan tai toiseen. Nykyistä toteutusta voi tämän osalta hyvin kutsua vaikkapa hybridiksi, jossa esiintyy vastauksia sekä hyvin yksityiskohtaisiin kysymyksiin (Miksei kirjastossa vastata puhelimeen) että karkeammalla otteella tehtyjä yleisemmän tason vastauksia (mm. kaikki aukiolo- ja palveluaikoja sekä osoite-, puhelinnumero-, sähköpostitietoja koskevat kysymykset ohjataan yhteen ja samaan vastaukseen). Yhteensä erilaisia vastauksia on tällä hetkellä 48.

Vastausten tarkkuuteen läheisesti liittyen jouduttiin myös pohtimaan erilaisia vastaamisen tapoja. Hienointa tietysti olisi, jos jokaiseen kysymykseen löytyisi täsmällinen ja tyhjentävä suora vastaus. Koska näin ei aina ole, voidaan täsmälliseen vastaukseen yrittää päästä kyselemällä asiakkaalta tarkentavia kysymyksiä, mikä tarkoittaa erilaisten keskusteluketjujen luomista. Tällaista vastausstrategiaa olemme käyttäneet mm. Finnan kirjautumisongelmiin liittyvissä kysymyksissä.

Yksi vastaamisen vaihtoehto on tarjota asiakkaalle varhaisempien chatbot-sukupolvien tapaan lista asioista, joihin botti osaa vastata. Tätä mallia olemme toteuttaneet vastaushierarkioiden ylimmillä tasoilla. Jos asiakas esimerkiksi kysyy suhteellisen epätarkasti lauseella ’Haluan tietää kirjaston e-kirjoista’, hänelle tarjotaan valittavaksi viisi erilaista e-kirja-aiheista vaihtoehtoa.

Vastauksen sisällön voi myös rakentaa yksinkertaisesti tarjoamalla linkki jonnekin toisaalle, jossa kysyttävästä asiasta on kerrottu laajemmin, kuten esimerkiksi Finnan ohjesivuihin tai LibGuide-oppaisiin. Laajemmat selostukset tai kuvalliset ohjeet on parempi avata jossain muualla kuin pienessä chat-ikkunassa. Myös ohjeistusten ylläpidettävyyden kannalta on helpointa, että tietyt asiat on ohjeistettu yhdessä paikassa. Tätä toimintatapaa olemme käyttäneet mm. varauksiin liittyvien kysymysten kohdalla.

Botin kouluttamisen toinen vaihe

Kirjaston palveluihin (Laurean Finnaan ja LibGuides-oppaisiin) botti laitettiin esille kesäkuun puolivälin jälkeen ja samalla sillä korvattiin ko. sivuilla aikaisemmin näkynyt chat-palvelu. Muutoksen myötä botin kehittämisessä alkoi kirjaston osalta uusi vaihe, kun aloimme saada oikeita asiakaskysymyksiä pelkkien itsekeksittyjen testilauseiden rinnalle ja pääsimme seuraamaan botin pärjäämistä niiden kanssa.  

Boost.ai:n järjestelmä tallentaa jokaisen käydyn keskustelun ja näyttää, mihin vastaukseen asiakas on kysymyksellään päätynyt. Kysymykseen liittyvä prosenttiluku kertoo, kuinka suurella varmuudella (osuvuudella) vastaukseen on päädytty. Prosenttiluvun jääminen liian alhaiseksi tai jopa nollaksi tarkoittaa sitä, että botti ei ole löytänyt vastausta kysymykseen. Analytiikka ilmoittaa myös, jos botti on löytänyt kysymykseen kilpailevia vastausvaihtoehtoja ja näyttää niihin liittyvät osuvuudet. Tämän lisäksi järjestelmä näyttää, miten se on prosessoinut (kääntänyt) asiakkaan esittämän kysymyksen oman käytettävissä olevan sanastonsa kautta ja mitkä sanat on tunnistettu ns. tärkeiksi sanoiksi.

Jos botti ei ole löytänyt vastausta esitettyyn kysymykseen, voi selityksenä yksinkertaisimmillaan olla se, että vastausta ko. kysymykseen ei yksinkertaisesti ole vielä olemassa. Näissä tilanteissa, jos järkeväksi niin katsotaan, korjaustoimenpiteenä on vastauksen ja siihen liittyvän treenidatan luominen. Myös testidataa kannattaa kirjoittaa, jotta toimivuus voidaan treeniajon jälkeen todentaa.

Jos vastaus kysymykseen on jo olemassa, mutta botti ei ole sitä pystynyt löytämään tai se on päätynyt väärään vastaukseen, tilanteen korjaaminen on usein monimutkaisempaa. Tällöin tarkasteltavaksi tulee haluttuun vastaukseen liittyvän treenidata, väärään vastaukseen liittyvän treenidata sekä synonyymeihin liittyvät asiat.  

Korjausten jälkeen ajetaan uusi treenikierros, joka vie treenidatan ja synonyymien muokkaukset tuotantoon. Treenikierroksen jälkeen (kaksivaiheinen ajo kestää yhteensä lähes tunnin) järjestelmästä nähdään, kuinka testilauseet ovat onnistuneet tuottamaan haluttuja vastauksia muuttuneessa tilanteessa. Kuvassa 1 näkyy kirjaston suomenkielisten testilauseiden (866 kpl) osuvuus 16.10. tehdyssä ajossa. Tulosta peilataan aina edellisen treenikierroksen tuottamaan tilanteeseen.

Kuva 1. Treeniajon tulokset 16.10.

Onnistumisia ja epäonnistumisia

Botin toimivuutta voidaan arvioida treenikierroksen tuottamien testilauseiden onnistumisesta kertovien lukemien pohjalta, mutta todellinen onnistumisen arvioiminen täytyy tehdä hallintajärjestelmään tallentuneiden keskustelujen pohjalta.

Syyskuun osalta Laurean koko bottijärjestelmään oli tilastoitunut yhteensä 363 keskustelua. Jokaiseen keskusteluun sisältyi yksi tai useampi kysymys ja sama määrä botin antamia vastauksia. Kuvasta 2 näkyy vastausten jakautuminen aihealueittain (root intents). Neljännekseen kysymyksistä (153 kpl) botti oli antanut kirjastoon liittyvän vastauksen. Lähes samansuuruiseen määrään kysymyksiä botti ei ollut osannut vastata (Unknown, 152 kpl). Reiluun viidesosa botin vastauksista liittyi ns. yleisimpiin kysymyksiin. Tähän sisältyvät mm. tervehdykset ja erilaiset arkipäiväiseen keskusteluun liittyvät fraasit. Muiden aihealueiden osuus jäi alle kymmenen prosentin.

Kuva 2. Syyskuussa botin antamien vastausten määrä aihealueittain: kirjasto 24.87 %, tuntematon 24.71 %, yleisimmät kysymykset 21.62 %, palvelut 6.66 %, dokumentit ja lomakkeet 4.39 %, opintojen kulku 4.06 % opiskelijapalvelut 1.62 %, tämän päivän lounas 0.97 %, KV-palvelu 0.81%

Edellä mainitut luvut eivät vielä kerro, miten usein botti oli onnistunut tai epäonnistunut vastaamaan kirjastoon liittyviin kysymyksiin. Tämän selvittäminen edellyttää keskustelujen manuaalista läpikäymistä.

Yhteensä kirjastoon liittyviä keskusteluita oli 148 kpl. Osuus syyskuun kaikista keskusteluista (363) oli 41 %. Keskustelujen onnistumisen arviointi ei ole kaikissa tapauksissa aivan suoraviivaista, joten alla olevaan taulukkoon on onnistumista tai epäonnistumista arvioitu kolmella eri kategorialla.

Täysin onnistunut keskustelu tarkoittaa sitä, että botti on osannut suoraan antaa asiakkaalle hänen tarvitsemansa tiedon tai ohjannut hänet asiasta tarkemmin kertovaan ohjeistukseen.

Täysin epäonnistunut keskustelu viittaa tilanteeseen, jossa botti ei ole osannut vastata koko keskustelun aikana asiakkaan kysymykseen tai on vastannut väärällä vastauksella.

Osittain onnistuneessa keskustelussa botti on jatkokysymysten jälkeen onnistunut vastaamaan asiakkaan kysymykseen. Botti on saattanut esimerkiksi antaa asiakkaalle kaksi tai kolme tasavahvaksi vastaukseksi tulkitsemaansa vastausvaihtoehtoa, joiden joukossa on ollut oikea vastaus.

 

Syyskuun kirjastoon liittyneiden keskusteluiden onnistuminen:

 

Lukumäärä

Osuus

Korjattu myöhemmin

Täysin onnistunut keskustelu

87

59 %

0

Osittain onnistunut keskustelu

31

21 %

7

Epäonnistunut keskustelu

30

20 %

12

Yhteensä

148

 

19

 

Olennainen osa botin kehittämistä on epäonnistuneiden keskusteluiden analyysi ja botin toiminnan korjaaminen. Syyskuun 61 epäonnistuneesta tai osittain onnistuneesta keskustelusta on onnistuttu tätä kirjoitettaessa korjaamaan hieman alle kolmannes eli yhteensä 19 keskustelua. Korjaaminen on tarkoittanut joko olemassa olevan vastauksen sisällön muokkaamista, treenidatan muokkaamista tai kokonaan uuden vastauksen luomista ja botin kouluttamista käyttämään sitä vastauksena aiemmin annetun kysymyksen kaltaisiin kysymyksiin.

 

Syyskuun kirjastoon liittyneet keskusteluiden onnistuminen korjausten jälkeen:

 

Lukumäärä

Osuus

Täysin onnistunut keskustelu

106

72 %

Osittain onnistunut keskustelu

24

16 %

Epäonnistunut keskustelu

18

12 %

Yhteensä

148

 

 

Korjaamatta jääneet keskustelut ovat saattaneet olla hankalia korjattavia monisanaisuutensa vuoksi tai siksi, että on kysytty jotain erityistä aineistoa.

”Porvoo campus, kirjasto. Varauksen nouto, onnistuuko vasta huomenna, vaikka erääntyy jo tänään”

”Hei, kyselisin sellaista, että onko teillä jotain sellaista kirjaa josta voisi harjoitella anatomian sanastoa englanniks”

Joidenkin kysymysten kohdalla jää epäselväksi, mitä asiakas tarkoittaa.

”Miten saan kirjastokortin lib guideen?”

Myös ao. kysymys on botille hankala, koska keskeinen sana, eli varaus, puuttuu kysymyksestä.

”Minulla oli kirja noudettavissa mutta en tarvitsekaan sitä. Miten perun sen?”

Botin toimintaa voi arvioida myös sen suhteen, kuinka monella erilaisella vastauksella se on onnistuneesti vastannut asiakkaiden kysymyksiin. Tarkastelujaksolla botti vastasi kirjastoaiheisiin kysymyksiin onnistuneesti 16 eri vastauksella. Noin puolet kaikista onnistuneista vastauksista liittyi varaamiseen, kirjastokortin hankkimiseen, aukioloaikoihin & yhteystietoihin sekä PIN-koodin vaihtamiseen. Korjausten jälkeen botti oli saatu sellaiseen kuntoon, että nykykunnossa se kykenisi vastaamaan onnistuneesti 20 eri vastauksella syyskuussa esitettyihin kysymyksiin.

Ruusut, risut ja käytetty työmäärä

Laurea on ensimmäinen korkeakoulu, joka on ottanut Front AI:n botin käyttöönsä. Aivan tyhjästä ei Laureassa lähdetty liikkeelle, vaan synonyymien kokonaisuus ja osa yleisistä keskusteluista sekä niihin liittyvää treeni- ja testidataa tuli valmiina mm. pankkimaailmasta, missä Front AI:n botti oli jo aiemmin otettu käyttöön.

Sillä, että botti on ’osannut pankkia’ ennen kuin se on ’oppinut korkeakoulua’, on ollut omat hyvät ja huonot puolensa. Laurean botin synonyymilistalla on edelleen paljon pankkialan termejä vaikkapa sijoittamiseen tai erilaisiin laina-asioihin liittyen. Tämä ei yleensä ole ongelma, mutta toisinaan sanastoa on jouduttu siivoamaan, kun jokin kysymys on prosessoitunut väärin ja tuloksena on ollut väärä vastaus. Toisaalta oman synonyymikokonaisuuden luominen täysin tyhjästä olisi varmasti ollut nyt tehtävää satunnaista siivoamista työläämpi vaihtoehto.

Kirjaston työpanoksesta ei ole tarkkaa mitattua tietoa, mutta kouluttautumiseen ja sen jälkeiseen työhön on todennäköisesti toistaiseksi kulunut jonkin verran yli 200 tuntia. Suurin puserrus on jo takana, mutta edelleen keskustelujen listaa käydään läpi lähes päivittäin ja tarvittaessa luodaan uusia tai viilataan olemassa olevia vastauksia tai säädetään treenidataa ja synonyymeja. Työn määrää voi arvioida myös kirjaston luomien vastausten (48 kpl), treenidatan (1703 lausetta) ja testidatan (1078 lausetta) lukumäärien pohjalta.

Tietohallinnon kantaessa päävastuun bottiprojektista kirjasto on voinut keskittyä botin kouluttamiseen ja omien sisältöjen luomiseen. Yhteistyötoteutuksen hyviä puolia on ollut myös mahdollisuus osaamisen jakamiseen tietohallinnon ja muiden korkeakoulupalveluiden botti-ihmisten kanssa. Työ on kohtalaisesta työläydestä huolimatta ollut mielenkiintoista ja se on avannut näköaloja bottien toimintalogiikkaan.

Yhteistyössä eri palveluiden kanssa toteutettavan botin huonot puolet rajoittuvat lähinnä tiettyihin eri palveluiden kesken päällekkäin meneviin asioihin. Esimerkiksi ’kirjautuminen ei onnistu’ -kysymykseen botti vastaa tällä hetkellä tietohallinnon kirjautumisongelmiin liittyvällä vastauksella. Kuitenkin jos asiakas on ollut Finnan sivuilla, on selvää, että hänellä on ongelmia Finnaan kirjautumisessa ja vastauksen pitäisi olla sen mukainen. Tämä asia tultaneen jatkossa ratkaisemaan siten, että jossain vaiheessa Finnan tai LibGuidesin sivuilta tulevat kysymykset filtteröidään ensin kirjaston vastausten läpi ja vasta sen jälkeen, jos kirjaston vastauksista ei löydy sopivaa, siirrytään tarkastelemaan muihin palveluihin liittyviä vastauksia.

Yhteiskäyttöisen botin ominaisuuksiin kuuluu myös se, että jokin aiemmin esim. kirjaston kohdalla toiminut asia saattaa mennä rikki jonkun toisen bottia ylläpitävän tahon treenidataan tai synonyymeihin tekemien muutosten vuoksi. Yhteiskäyttöisen botin virittäminen edellyttääkin oletettavasti hieman suurempaa tarkkuutta kuin jos bottia kehitettäisiin vain yhden palvelun omiin tarpeisiin.  

Jonkinlaisena pienenä negatiivisena yllätyksenä allekirjoittaneelle on tullut ehkä myös se, että niiden kysymysten osuus, joihin botti ei ole osannut vastata, on sitkeästi pysynyt koko Laurean tasolla noin 25 % paikkeilla.

Onko Laurean tekemä työ muiden hyödynnettävissä?

Front AI:n kanssa on sovittu, että Laurean luoma sisältö eli synonyymit, vastaukset sekä treeni- ja testidata ovat muiden Front AI:n toteutuksesta kiinnostuneiden tahojen hyödynnettävissä. Ilman paikallista muokkaamista Laureassa luotu sisältö ei tietenkään toimi muualla, mutta pohja korkeakoulupalveluihin vastaavalle botille on luotu.

Kirjoittajat

Hannu Jokiranta

tietoasiantuntija

Laurea-ammattikorkeakoulu

Kirjoittajan muut artikkelit

Kommentit

Jätä kommentti