  ̌      ̌    P 47 (2019/2020) 4 25 Ali lahko računalnik spiše esej? V K Za domačo nalogo moramo spisati esej o Prešer- novem Krstu pri Savici. Ker nam gresta matema- tika in programiranje bolje od slovenske književ- nosti, nas zanima, ali lahko spišemo program, ki bi namesto nas spisal esej o Krstu pri Savici. V tem članku si bomo ogledali markovske verige in nji- hovo uporabo za generiranje besedil. Markovska veriga Markovska veriga je matematični model za opisova- nje sistemov, kjer je verjetnost naslednjega dogodka v zaporedju odvisna zgolj od zadnjega dogodka v njem. Predstavimo ga kot množico stanj S in pove- zav med njimi P . Uteži na izhodnih povezavah iz vozlišča si ∈ S predstavljajo verjetnosti prehoda iz stanja si v druga stanja. Vsota vseh uteži na izho- dnih povezav iz nekega vozlišča se morajo tako se- šteti v 1. A B0.6 0.7 0.4 0.3 SLIKA 1. Preprosta markovska veriga z dvema stanjema. Preprost primer markovske verige lahko najdemo na sliki 1. Veriga je sestavljena iz dveh stanj S = {A,B} in štirih povezav pA,B = 0,6, pB,A = 0,7, pA,A = 0,4 in pB,B = 0,3. Naš cilj je ustvariti markovsko ve- rigo, kjer bodo vozlišča besede, povezave pa verje- tnosti, da v našem eseju ena beseda sledi drugi. Nato lahko spišemo program, ki bi se po omenjeni mar- kovski verigi sprehajal in pri tem ustvarjal esej. V vsakem stanju naključno izberemo naslednje stanje, sledeč verjetnostni porazdelitvi, ki jo podajajo uteži. Vzemimo markovsko verigo s slike 1. Če smo zadnjo izpisali črko A, pravimo, da smo v stanju A, bomo v naslednjem koraku z verjetnostjo 0,4 ponovno izpi- sali črko A, z verjetnostjo 0,6 pa bomo izpisali črko B. Podobno, če smo zadnjo izpisali črko B, pravimo, da smo v stanju B, bomo v naslednjem koraku z ver- jetnostjo 0,3 ponovno izpisali črko B, z verjetnostjo 0,7 pa naslednjo izpišemo črko A. Če simuliramo gibanje po omenjeni markovski ve- rigi, lahko dobimo besedilo, podobno sledečemu: BABABBBAABABABAABAAABABABBAABBAABBAAB ABBABABBAABAABABABABABBAABBAABBAABA. Kot vidimo, je v generiranem besedilu malo več črk A, kljub temu pa se črki A in B večinoma izmenjujeta. Pisanje besedil z markovskimi verigami Sestavljanje take verige na roko je seveda zahtevno, verjetno dosti bolj, kot pisanje samega eseja. Na srečo lahko na spletnem portalu dijaski.net/ naj- demo šest esejev o Krstu pri Savici. Uteži v marko- vski verigi lahko določimo s statistično analizo ome- njenih esejev. Spišemo program, ki prebere ome- njene eseje in za vsako unikatno besedo izračuna, katere besede so ji sledile in kako pogosto. Če je be- sedi rad v 23 % sledila beseda imam, bo od stanja Srad v stanje Simam vodila povezava s težo 0,23. Oglejmo si dejansko izsek verige, ustvarjene na ta način. V tabeli 1 lahko najdemo izsek iz ustvarjene verige, seznam besed, ki najpogosteje sledijo besedi je.   ̌      ̌    P 47 (2019/2020) 426 b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b črtomir 0,0222 tudi 0,0333 bila 0,0333 v 0,0389 to 0,0556 bil 0,0611 beseda verjetnost TABELA 1. Šest besed, ki najverjetneje sledijo besedi je in pripadajoče verjetnosti. Da poenostavimo zahtevnost besedil, iz njih izlo- čimo vsa ne-končna ločila, vse velike tiskane črke pa spremenimo v male. Pike, vejice in klicaje obravna- vamo kot samostojna stanja, poleg tega pa dodamo še dve stanji: in . Naš esej se začne s stanjem , ko dosežemo stanje pa z esejem zaključimo. Ti dve »besedi« dodamo na začetek in konec vsakega besedila. Omenjeni besedi nam bosta olajšali generiranje besedila. Naš sprehod po markovski verigi bomo začeli v stanju , ko dosežemo stanje , pa generiranje zaklju- čimo. Omenjeni besedi seveda izbrišemo iz besedila, preden ga izpišemo bralcu. Program, spisan po zgornjem kuharskem receptu, nam bo med drugim spisal sledečo umetnino: krst pa ga je zgrajen iz končnega dialoga jasno razviden značaj in poln besa vodi svoje patriotsko mi- šljenje in krvavega boja pa verjetno razočara marsi- katerega bralca. te zvrsti ki jih prešeren je čutil do iz- raza misel kot sem jaz saj izvemo da je čopova smrt matije čopa. . . Za tak esej verjetno ne bi dobili pozitivne ocene. Človeški jezik je prezapleten, da bi ga lahko opisali s preprosto markovsko verigo. Naslednja beseda v eseju je namreč bolj odvisna od širšega konteksta kot zgolj od zadnje besede. Naš model zato nadgra- dimo in uporabimo markovske verige drugega reda. Namesto, da bi naslednjo besedo izbirali glede na to, katera beseda je bila zadnja, jo izbiramo glede na zadnji dve besedi v eseju. Če imamo skupek besed »Krst pri Savici je« bomo opazovali, kako pogosto se posamezna beseda znajde za sosledjem besed »Sa- vici je«. Modelu jezika oz. jezikovnemu modelu, ki ga se- stavimo iz markovskih verig višjih redov, pravimo tudi n-gram jezikovni model. Definirajmo n-gram jezikovni model bolj formalno. Naj bo A zaporedje n − 1 besed, x ena beseda, in Ax zaporedje iz n besed, ki ga dobimo, če zlepimo A in x. Naj bo N(A) število pojavitev zaporedja A v analiziranih be- sedilih. Verjetnost, da beseda x sledi zaporedju A, P(x|A), definiramo kot P(x|A) = N(Ax) N(A) . Bralcu v premislek prepuščamo, ali je sledeča defi- nicija smiselna, torej, ali se vsota verjetnosti vseh besed, ki lahko sledijo zaporedju A, vedno seštejejo v 1. Markovska veriga prvega reda, ki smo jo ustvarili, tako ustreza ravno 2-gram, oz. bigram jezikovnemu modelu. Da pridobimo koherentnejše besedilo, po- stopek ponovimo s trigram jezikovnim modelom oz. z markovsko verigo drugega reda. Ponovimo analizo vseh esejev in generiramo sledeče besedilo: krst pri savici je zgrajen iz treh delov iz posvetil- nega soneta matiji čopu nato pa nekako klone in se noče podjarmiti. v uvodu je zgradba skoraj v celoti epska saj o dogodkih poroča jedrnato in poudarja le prvine. v celoti epska saj o dogodkih poroča jedrnato in poudarja le prvine.. . . To se zdi morda bolj podobno smiselnemu eseju, vendar bi za tak esej še vedno dobili negativno. Hkrati pa nas zmoti, da v generiranem besedilu za- čenjamo opažati sosledje besed iz esejev, na podlagi katerih smo zgradili markovsko verigo. To ni prese- netljivo, naš nabor esejev je relativno majhen, unika- tnih trojic besed, ki se v njem pojavijo, pa je veliko. Naš program bo tako pogosto generiral sosledje be- sed, ki so se pojavile v esejih. Tega si ne želimo, saj se plagiatorstvu želimo ogniti. Kaj pa, če povečamo nabor besedil, ki jih analizi- ramo? Zavržemo eseje o Krstu pri Savici in zberemo širši nabor literarnih del. Za potrebe tega članka je bila uporabljena večina proznih del s spletne strani lit.ijs.si/leposl.html. Trubarja, Janeza Sveto- kriškega in Brižinske spomenike odstranimo, saj se jezik v teh delih zelo razlikuje od današnje sloven- ščine. Nato ponovimo vajo, tokrat z naborom več kot   ̌      ̌    P 47 (2019/2020) 4 27 100 strnjenih besedil. Z markovsko verigo drugega reda lahko dobimo sledeče besedilo: že peti dan pijan prišel domov mu je samostanski vojak. svetin je začel praviti ali si pozabil kaj sem mord sam govoril ž njo pa jo strahuje da si človek oddahnil naslonil se je ozrl šepavec proti oknu skomi- gnila z rameni. bila je mokra. ko je drugo.. . . Z 4-gram jezikovnim modelom oz. z markovsko verigo tretjega reda pa bolj koherentno: že peti dan so bili zdoma. no z gradišča res ni daleč do belega dvora nemara se še nocoj vrneta na dru- žinski pomenek vsekakor pa jutri. domačini so goste pospremili do ceste kjer so ga obvezali. nic nevarnega samo praska! in petdeset kron mu je dal oče ker mu iz gozda ni mogel ničesar prinesti.. . . Oglejmo si izsek iz dobljenega 4-gram jezikovne- ga modela, ki ga lahko najdemo v tabeli 2. Kontekst treh besed je dovolj, da je ustvarjeno besedilo rela- tivno smiselno. Kljub temu pa je mnogo premalo, da bi program lahko pisal vsebinsko konsistentno be- sedilo, ki ima rdečo nit. Ali slepo povečevanje reda verige zares reši ta problem? b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b zdela 0,0114 tresel 0,0171 v 0,0210 bilo 0,0210 zdelo 0,0590 da 0,0705 beseda verjetnost TABELA 2. Šest besed, ki najverjetneje sledijo sosledju besed se mu je in pripadajoče verjetnosti. Pri 5-gram jezikovnem modelu se ponovno zata- kne, saj generirana besedila ponovno postanejo pre- podobna besedilom, ki smo jih statistično analizirali. Kje je meja? Ker število različnih n-teric eksponentno narašča glede na n, s povečevanjem reda markovske verige eksponentno narašča tudi potreba po količini bese- dila za analizo. S še večjim naborom podatkov lahko ustvarimo markovsko verigo četrtega reda, potem pa se znova zatakne. 5-gram jezikovni model velja za najkompleksnejši smiselni model, ki ga je moč zgra- diti s tako metodo. Tudi Google, dandanes verjetno eden od največjih zbirateljev podatkov, se ni trudil zbirati n-teric besed prek dolžine n = 51. Za boljše modeliranje jezika dandanes uporablja- mo močnejše metode, ki temeljijo na nevronskih mrežah in globokem učenju, kar pa presega obseg enega članka v Preseku. Če bralca zanima, kako se obnašajo trenutno najnaprednejši generatorji (angle- škega) jezika, se z njimi lahko pozabava na naslednji spletni strani: transformer.huggingface.co/. Koda in gradiva, uporabljena pri pisanju tega članka, so dostopna na github.com/vid-koci/presek\_ generiranje\_besedila. Ne glede na izjemne na- predke pri avtomatskem generiranju besedila, bral- cem priporočamo, da svoje eseje še naprej pišejo sami. SLIKA 2. France Prešeren (vir: Wikipedia) ××× 1Zbirka dostopna na ai.googleblog.com/2006/08/ all-our-n-gram-are-belong-to-you.html