Kategoriat
Yleinen

Ajankohtaisten kysymysten luokittelua: suuret kielimallit ja Suomi

Tekoälyn ympärillä pyörivä hype on lisääntynyt alkuvuodesta merkittävästi. Tämä johtuu pitkälti suurista kielimalleista, joiden keskusteluun optimoitu versio julkaistiin joulukuussa 2022 chatGPT -nimellä.

Kielimallit on opetettu valtavalla määrällä tekstidataa, ja eri kielisen datan määrä vaihtelee paljon. Esimerkiksi englanti, espanja ja kiina ovat määrällisesti aivan eri sarjassa kuin suomi, virosta nyt puhumattakaan. Suomen Turussa koulutetaan parhaillaan kotimaisia GPT3-malleja ja niitä odotellessa on hyvä testata miten hyvin ulkomailla koulutetu mallit osaavat kieltämme.

Xamkin data-analytiikkakoulutuksen ajankohtaisten kysymysten kurssilla kerättiin tekstiaineisto. Jokainen opiskelija linkkasi kurssin keskustelualueelle ajankohtaisen dataan liittyvän uutisartikkelin, minkä jälkeen artikkelien kokotekstejä haettiin verkkosivuilta niiden url-osoitteiden ja lyhyen koodinpätkän avulla. Opiskelijat saivat tehtäväksi analysoida aineistoa luokittelemalla uutistekstien teemoja. Lopputuloksena syntyi 35 artikkelin aineisto. Jokainen sai kylkeensä opiskelijoiden antamat teemat ja ne yhdistettiin samaan sarakkeeseen.

Miten tekoäly suoriutuisi luokittelutehtävästä? Tai mitä muita luokittelutehtäviä sille voisi antaa? Kokeilua varten otettiin käyttöön chatGPT-kielimallin ohjelmointirajapinta. Aineiston uutistekstit lähetettiin ”tekoälylle” ja niiden kanssa kokeiltiin erilaisia ”prompteja” eli kehotteita, jotka ovat tässä tapauksessa ohjeita siitä mitä teksteille pitäisi tehdä.

chatGPT:n rajapinta haluaa sisäänsä järjestelmäkehotteen ja käyttäjäkehotteen. Ensimmäinen määrittelee kontekstia jonka perusteella mallia ohjataan tuottamaan tietynlaista tekstiä. Uutisaineistomme kanssa käytettiin seuraavaa järjestelmäkehotetta:

”olet reipas ja tarkkaavainen tutkimusapulainen joka auttaa tekstidatan luokittelussa”

Sitten kokeiltiin erilaisia käyttäjäkehotteita joilla konetta pyydettiin luokittelemaan tekstiä tai kertomaan siitä asioita.

Käytetyt ”promptit” eli kehotteet

Ensimmäisellä kehotteella pyydettiin erottelemaan tekstistä ihmisten ja organisaatioiden nimet. Toisella pyydettiin laatimaan uutisen pohjalta pahin mahdollinen skenaario ja kolmannessa pyydettiin teemoittelua tarkasti määritellyin ehdoin.

Mutta ovatko tulokset mistään kotoisin? Ensimmäisen kehotteen kohdalla tulokset on kohtuullisen helppo tarkistaa. Lisäksi on olemassa suomen kielellä opetettuja malleja jotka on koulutettu juuri tällaisia tehtäviä varten. Ja tämän pienen aineiston kanssa vaikuttaa, että chatGPT suoriutuu tehtävästä todella hyvin. Toisen ja kolmannen kehotteen laatua on vaikeampi arvioida.

Voit tarkastella tuloksia itse lataamalla csv-tiedoston täältä: https://drive.google.com/file/d/1rgzOo1h9IwBeKBGf8kNw2UU4IeFdlPCF/view?usp=share_link

Kategoriat
Yleinen

Sankey-kaavion luominen Kouvolan ostolaskuista

Sankey-kaavio on virtakaavio, joka edustaa tietojen, resurssien tai energian virtausta yhdestä elementistä toiseen. Kaaviot koostuvat suorakaiteita, jotka edustavat kategorista dataa sekä nuolista, jotka edustavat virtauksia kategorioiden välillä. Nuolen leveys vastaa virtauksen määrää.

Kaavio Kouvolan kaupungin vuoden 2021 ostolaskuaineistosta

Yksi suosittu käyttökohde Sankey-kaavioille on oman talouden hallinta. Seuraamalla omia tuloja ja menoja ja merkitsemällä tiedot ylös exceliin luo hyvän aineiston visualisoitavaksi. Verkkopankissa tiedot ovat hyvin saatavissa ja menojen ja tulojen kategorisointi voi olla myös hyvin opettavainen kokemus.

Seuraavaksi luomme yksinkertaisen Sankey-kaavion käyttämällä ei minun, vaan kotikaupunkini Kouvolan ostolasku-aineistoa vuodelta 2021 joka on saatavilla osoitteessa https://www.kouvola.fi/kouvolankaupunki/kouvola-tietoa/avoin-data/ Kaavion luomiseen käytetään SankeyMATIC -työkalua joka puolestaan käyttää tehokasta JavaScriptin D3.js visualisointikirjastoa.

Data on Excel-tiedostossa joten lienee luontevaa käyttää datan muokkaukseen Exceliä. Ennen visualisointia data on muokattava oikeaan muotoon, joka tässä tapauksessa on seuraava:

Mistä [paljonko] Minne

Vasemmalle puolelle tulee kategoria ja oikealla toinen kategoria johon virtaus kohdistuu. Hakasuluissa esitetään virtauksen määrä, jonka täytyy olla numeerinen muuttuja.

Aluksi poimin ostolaskuexcelistä vain halutut sarakkeet. Tässä tapauksessa vasemmalle puolelle tulee pelkästään ”Kunnan nimi”, oikealle muuttuja nimeltä ”Tiliryhmä 1” sekä numeeriseksi muuttujaksi ”Laskun loppusumma” jolloin taulukon alku näyttää seuraavalta:

Seuraavaksi aineisto pivotoidaan. Tarkoitus on yksinkertaisesti ryhmitellä aineisto Tiliryhmä 1:n mukaan ja laskea jokaiselle ryhmän jäsenelle laskujen summa. Tätä varten luodaan pivot-taulukko painamalla (englanninkielisessä excelissä) Insert -> pivot table -> From Table/range.

Alueeksi valitaan sarakkeet joissa Tiliryhmä 1 ja Laskun loppusumma majailevat, eli tässä tapauksessa sarakkeet B ja C. Pivot-näkymässä Tiliryhmä raahataan hiiren avulla laatikkoon ”rows” ja laskujen eurot raahataan laatikkoon values, josta Excel oletuksena laskee summan.

Pivotoimalla valitut sarakkeet saadaan aikaan nk. GROUP BY toiminto

Seuraavaksi siirrän pivot-taulukon omalle välilehdelle, jossa suoritetaan viimeinen toimenpide ennen visualisointia. Se on datan muuttaminen sankeymaticin haluamaan mistä [paljonko] minne -muotoon.

Lisään pivot taulukon vasemmalle puolelle uuden sarakkeen A joka saa joka rivillä arvon ”kouvolan kaupunki” Edustamaan kaaviomme vasenta laitaa. Sarake B sisältää tiliryhmäluokittelut ja sarake C laskujen summat. Kätevimmin datan saa visualisoitavaan muotoon käyttämällä seuraavaa funktiota uuteen sarakkeeseen:

=CONCATENATE(A2, " [", C2, "] ", B2)

Tässä A-sarakkeen toisella rivillä oleva arvo (koska ensimmäisellä on sarakkeen nimi) tulee vasemmalle, sen väliin C-sarakkeen arvo hakasuluissa ja vasemmalle B-sarakkeen arvo. Concatenate tarkoittaa suurin pirtein toisiinsa kytkemistä tai yhteen liittämistä. Lopputuloksena on seuraavanlainen taulukko:

D-sarakkeessa on funktiolla muodostettu data muodossa mistä [paljonko] minne

D-sarakkeen sisällön voi kopioida sellaisenaan sankeyMATICin inputs-laatikkoon. Työkalu tarjoaa paljon vaihtoehtoja kaavion muokkaamiseen monipuolisella käyttöliittymällä. Esimerkiksi tässä tapauksessa virtaus lähtee yhdestä osoitteesta, mutta sen voi myös jakaa kategorioihin. Lisäksi kaavion ulkonäköä voi muokata todella monipuolisesti haluamansa näköiseksi. Lopputuloksena tiliryhmän visualisoinnista syntyi seuraava kuva, jonka voi kätevästi ladata png-muodossa: