Sanaston synty (Osa 4)

Written by

in

Tämä luku kertoo sanastogeneraattorin rakentamisen vaiheista, ongelmista ja ratkaisuista. Siitä, miten hanke muuttui oppimateriaalin tuottamisesta ohjelmoinniksi luonnollisella kielellä. Tämä on suunnattu erityisesti tekoälyn aktiivisille käyttäjille. Kielenopettajaa saattaa kiinnostaa lopun liitteenä oleva sanojen luokitus, mutta kielenopiskelijan kannattaa ihan oikeasti jättää tämä luku väliin.

Versiohistoriaa

Spesifikaatio kasvoi aluksi nopeasti, mutta myöhemmin sitä myös yksinkertaistaa. Tarkoituksena oli erottaa toisistaan dokumentointiin, tiedostonhallintaan ja varsinaiseen sanaston muodostamiseen liittyvät tehtävät. Uusimmissa versioissa painopiste siirtyi pedagogisiin ja kielellisiin ratkaisuihin. Seuraava taulukko antaa yleiskuvan versiokehityksestä:

VersioPääosioita / alakohtiaTärkeimmät muutoksetToimivuus
0.11 / 6Sanastoentryn rakenne, kolmen merkitystason selitys, selitettävä sana perusmuodossatesti
0.24 / 15ulkoasun muotoiluja, lyric form ja taivutuksettesti
0.34 / 18Tuotti kokonaisen sanaston. Dokumentin muoto ja rakenne vakiintuvat, mallina painetut sanakirjat.toimiva ja hidas
0.57 / 30Mukaan How to Use, tulostus docx-tiedostoon, tiedoston nimeäminen ja metadata.epävakaa
0.68 / 34Generation Assurance Rules lisätään. Pitkien ajojen ja keskeytysten hallinta.epävakaa
0.79 / 38Ihmisohjeet poistuvat. Sisältösäännöt tarkentuvat, mutta Assurance säilyy.epävakaa
0.89 / 39Lyric Glossary Spec nimettiin uudelleen Glossary Generation Speciksi, sillä ei ole käytännön syytä rajoittaa käyttöä pelkkiin laululyriikoihin.vakaa ja hidas
0.815 / 39Säännöt ryhmitellään (Formatting, Content, Heading, Metadata…). Dokumenttirakenne selkeytyy.vakaa ja hidas
0.8213 / 32Suuri pelkistys. Completeness Check, automaattinen regenerointi ja AI-keskeinen prosessi.vakaa ja hidas
0.8314 / 34Output Header, Final Section ja Excluded-lista. Konjugaatiosääntö tarkentuu.vakaa ja hidas
0.8414 / 34Semanttiset kerrokset ja prosessi hioutuvat, rakenne vakiintuu.vakaa ja hidas
0.8514 / 35Romanisointi ja kielikohtaiset säännöt tarkentuvat.vakaa ja hidas
0.8614 / 36Lyric Form muuttuu ehdolliseksi. Romanisointi (macronit) vakiintuu.vakaa ja hidas
0.8715 / 38Quality Principle, GD-ajattelu, Ignore Metadata ja tuotannon tilastointi.vakaa
0.9014 / 31Content Word Glossary. Partikkelit ja funktiosanat poistuvat, fraasit erotellaan.vakaa
0.9115 / 33Word Boundary Rule.vakaa
0.9215 / 35Sanaluokittelua tarkennetaan (mm. laskusanat, prefiksit, suffiksit).vakaa
0.9315 / 38Merkityskerrokset nimetään (literal / abstract / poetic), Lyric Form uudistuu.vakaa
0.9415 / 38Lyric Form yksinkertaistuu nykyiseen muotoon, glossary-entryjen puhtaus varmistetaan.vakaa ja nopea
0.9517 / 50Luovuttiin vaatimasta ylitarkkoja sana- ja alaluokkia, Otettiin käyttöön pehmeäreunainen neljän ish-korin malli.vakaa ja nopea
0.9617 / 50Lisättiin sanaston ylätunnistetiedotvakaa ja nopea
0.9717 / 50Development Releasevakaa ja nopea

Hankkeessa oli myös kriisivaihe, kun sanastojen luominen muuttui epävakaaksi. Jouduin umpikujaan, sillä en halunnut menettää tehtyä työtä ja uskoin tekoälyn ehdotuksiin  lisäsääntöjen hyödystä. Laitoin hankkeen tauolle maaliskuussa, enkä tiennyt miten jatkaa.

Loppukevään työruuhkan vuoksi pääsin palaamaan hankkeeseen vasta kesällä. Puolen vuoden hanke oli siis tauolla lähes neljä kuukautta. Tauon aikana aloin ymmärtää, että tekoälyyn täytyy alkaa suhtautua aiempaa kriittisemmin. 

Kehittäminen muutti tasapainoiluksi ominaisuuksien lisäämisen ja yksinkertaistamisen välillä. Osa säännöistä poistui kokonaan, osa yhdistettiin ja osa korvattiin myöhemmin tarkemmilla periaatteilla. Lopputuloksena syntyi yksinkertaisempi mutta samalla käsitteellisesti vahvempi spesifikaatio.

Version 0.95 suuri alakohtien määrä (50 kpl) selittyy sillä, että määrityksessä piti luetella ne 17 mahdollista sana- ja alauokkaa, joita luokiteltiin lempeämmin neljään koriin. Esim. ”nounish” = substantiivit ja substantiivin tapaan käyttäytyvät.


Ongelmia ja ratkaisuja

Testattaessa havaittiin, että tekoäly on altis monenlaisille toimintahäiriöille.

  • Tekoäly tuottaa pienen näytteen ja kysyy, halutaanko käsitellä koko aineisto. Vaikka siihen vastaa myöntävästi, tekoäly jää jumiin.
  • Tekoäly tuottaa muutaman GE:n ja ilmoittaa, että tehtävä on suoritettu. Sillä ei näytä olevan aavistustakaan, että tehtävä jäi kesken.
  • Tekoäly alkaa keskeyttää generoimista varmistaakseen käyttäjältä, kummalla tavalla toimitaan. Tämä häiriö on helppo jäljittää monitulkintaisiin sääntöihin

Tekoäly voi epäonnistua tehtävän suorittamisessa:

  • jos tekoälylle annettava lähdeteksti sisältää jotain yllättävää, mitä ei ole otettu huomioon.
  • jos tehtävään kuuluu tekoälyn mielestä liikaa aikaa
  • jos sääntöjä on liikaa, ne ovat monimutkaisia tai ovat ehdottomia
  • jos tekoäly suorittaa yhtä aikaa erilaisia, monivaiheista ja raskasta tehtäviä
  • jos sanastosta on tulossa niin laaja, että se ylittäisi tekoälylle asetetun ruudulle tuotettavan vastauksen pituusrajan

Yritettäessä ratkaista versio 0.5:n keskeytymisongelmia, kysyttiin siitä myös tekoälyltä. Tämä oli suuri virhe, sillä tekoäly on hyvä generoimaan uusia sääntöjä, mutta kovin huono arvioimaan, ovatko säännöt ja tehtävät sille liian monimutkaisia.

Yksi kehittämistyön perusongelma on, että tekoäly ei anna selkeitä virheilmoituksia. Jos siltä kysyy, mikä meni pieleen, se alkaa generoida mahdollisia selityksiä. Vaikuttaa siltä, että se ei tiedä itsekään. Olen kohdannut tämän useasti.

Fraasit ovat sanaston kannalta hankalia: Fraasin merkitys on erilainen kuin sen osien summa. Ongelma ratkaistiin ohittamalla fraasit sanastosta ja luomalla niiden kääntäminen erillisen työkalun tehtäväksi. Tästä tarkemmin seitsemännessä luvussa.

On hyvä huomata, että speksin laatu ja generoinnin vakaus ovat eri asioita. Hyväkin määritys voi epäonnistua yksittäisessä ajossa. Ja toisin päin: heikkokin määritys saattaa toimia vakaasti.


Parhaat opit

Nyt kun jälkikäteen palauttaa mieleen GGS:n kehittämisestä saatuja kokemuksia, ymmärtää aiempaa paremmin tekoälyn tuotantokäytön rajoituksia ja ylipäänsä sitä, miten nykyiset keskustelubotit toimivat. Esimerkiksi sääntöjen kohdalla on löydettävä tarkka tasapaino:

  • Jos tärkeitä sääntöjä puuttuu, tekoäly joutuu päättelemään, mitä pitää tehdä. Paljon toistuvassa silmukassa tämä hidastaa tehtävän suoritusta ja kuluttaa turhaan laskentatehoa,
  • Jos säännöt ovat tulkinnanvaraisia, tekoäly saattaa tuottaa tuloksia, jotka eivät ole sisällöltään sitä tai siinä muodossa kuin käyttäjä ne olisi halunnut.
  • Jos sääntöjä on liikaa, tehtävän suoritus hidastuu ja saattaa jumiutua.
  • Jos säännöt ovat ehdottomia, normaalista poikkeava lähdeteksti keskeyttää tehtävän suorituksen

Tekoäly ei kerro, milloin käytettävissä oleva kapasiteetti ylittyy. En välitä, onko häiriön syy token-budjetti vai hetkellinen käyttäjäkuorma, mutta yritys-ja-erehdys-periaatteella tapahtuvalta kehittämistyöltä puuttuu laskentapohja. Se on kuin lähtisi vielä huhtikuussa pilkille ja toivoisi, että jäät edelleen kantavat.

Tärkein oppi: tekoälyä ei kannata yrittää laittaa tekemään kaikkea ihmisen puolesta. Parempi työnjako on kolmikohtainen:

  1. Tekoälylle annetaan yksi selkeä tehtävä, jossa se on hyvä: tuottaa sanaston sisältötekstit.
  2. Ihminen hoitaa tehtävät, jotka vaativat harkintaa. Sanaston viimeistely julkaisukuntoon. sisältötekstin siivoaminen, merkkien ja kappaleiden muotoileminen, linkin ja metadatan lisääminen, pdf-viennin tekeminen ja tiedoston nimeäminen
  3. Päätehtävästä irrotettiin osatehtäviä, joita tekoäly suorittaa vain pyydettäessä. Tällaisia ovat sanaston tarkastaminen ja fraasien kääntäminen.

Juttusarjan seuraavan, eli viidennen osan aiheita ovat sanaston generoiminen käytännössä, muokkaaminen dokumenttitiedostoksi ja sanastojen tiedonhallinta.