Eestikeelse teksti genereerimine keelemudelitega Projekt Kaido Lepik Arvutiteaduste Instituut, Tartu Ülikool 1 Töö eesmärk Viimastel aastatel on välja töötatud terve hulk erinevaid keelemudeleid, mida on peamiselt rakendatud ingliskeelsetel tekstidel. Eesti keel on mitme aspekti poolest veidi keerulisem kui inglise keel: esinevad käänded, tähestik on suurem. Seetõttu ei ole peamiselt inglise keele jaoks välja töötatud mudelite edukas rakendamine eestikeelsetel tekstidel garanteeritud. Projekti eesmärgiks on kasutada rekurrentse (närvi)võrgu mudelit, et genereerida eestikeelset teksti. Idee pärineb Andrej Karpathy blogipostitust ([1]), kus närvivõrke on erinevate ingliskeelsete tekstide genereerimiseks väga edukalt kasutatud. Antud juhul püüame tema tehtud tööd replikeerida eestikeelsetel andmetel. Teksti genereeritakse tähthaaval. 2 Andmed Andmetena kasutame doktoritööde segakorpust ([2]). Andmeallikas on doktoritööd esitatud erinevate.xml failidena. Nendest failidest on kogu info eraldatud (sh pealkirjad, autorid jmt teave), jättes paika lausevahe- ja kirjamärgid. Seejärel on doktoritööd pandud kokku ühte faili, kasutades kahe doktoritöö vahelise eraldajana paari reavahetust. Korpuses on kokku 19 556 988 tähte, korpuses on kokku 128 erinevat sümbolit. 3 Mudel Projektis on teksti genereerimiseks kasutatud rekurrentse võrgu mudelit, mis oma kõige lihtsamal kujul on esitatud joonisel 1. Matemaatiliselt on mudel kirja pandav järgmisel kujul. [3] Oletame, et iga t = 1,..., n korral x t R d, y t R d, h t R m. Seega on maatriksite W hx, W hh, W hy dimensioonid järgmised: W hx R m d,
W hh R m m, W hy R m d. Varjatud kihi vektor sammul t arvutatakse h t = f (W hh h t 1 + W hx x t + b h ), kus f( ) on mittelineaarne funktsioon, nt tanh(z) = ez e z e z + e z, b h R m on vabaliige. Ennustus sammul t arvutatakse ŷ = softmax (W hy h t + b y ), kus e z j softmax(z) j = z, i=1 ez i b y R d on vabaliige. Kaofunktsiooniks on entroopia: J(Θ) = d i=1 y i log(ŷ i ), kus Θ on kõikide parameetrite vektor. Kaofunktsiooni minimiseeritakse gradientmeetodiga. Joonis 1. Rekurrentse võrgu mudel. Igal ajasammul t püütakse treeningandmestikus esineva vastava sisendi x t ja eelmisel ajasammul leitud varjatud kihi vektori h t 1 abil ennustada väljundit y t. Meie ülesandes on x t ja y t tähtede vektorid. Sisuliselt püüame iga tähe ja sellele eelnevate tähtede pealt ennustada järgmist tähte. Vastav visualisatsioon on esitatud joonisel 2.
Joonis 2. Rekurrentse võrgu mudel. Igal ajasammul t püütakse treeningandmestiku vastava tähe x t ja eelmisel ajasammul leitud varjatud kihi h t 1 abil ennustada järgmist tähte y t. Allikas: [1] Olgu meie tähestik V, V = d. Kui t. täht meie treeningandmestikus on i. täht tähestikus V, siis x t = (0,..., 0, 1, 0,..., 0) T, kus 1 esineb i. positsioonil. Ajahetkel t tahame, et meie mudel ennustaks tähte t + 1 meie treeningandmetes. Oletame, et see on tähestikus j. positsioonil, siis y t = (0,..., 0, 1, 0,..., 0) T, kus 1 esineb j. positsioonil. Antud ülesanne ei vaja andmete jaotamist treening- ja testandmeteks, st saame genereerida teksti juba treenimise käigus. Siinkohal saame muuta ka n-ö temperatuuri parameetrit, millega modifitseeritakse mudeli poolt väljastatavaid tõenäosusi. Olgu z = W hy h t + b y, siis z = z, temp (0, ). Kui temperatuur on väike, siis muutub mudel igavamaks, temp väljastades pärast softmax-faasi pigem kindlamaid (suurema tõenäosusega) väärtusi; suurema temperatuuri korral teeb mudel riskantsemaid otsuseid. 4 Tulemused Eelmises peatükis kirjeldatud mudeli Pythoni kood on avaldatud Andrej Karpathy blogipostituses antud projektis on kasutatud selle veidi modifitseeritud varianti. Ühtlasi on realiseeritud veidi keerulisem mudel, mille jaoks on kasutatud Pythoni teeki keras [4]. Keerulisem mudel põhineb kerase githubi lehel toodud näidetel ning sisaldab endas kahte peidetud kihti. Kõikidel juhtudel on peidetud kihi vektori suuruseks 100. Kaofunktsiooni minimiseerimisel kasutatakse adagradi. Enne treenima asumist väljastab mudel suvalisi sümboleid ( - tähistab antud juhul sümbolit, mida muidu niisama lihtsalt väljastada ei saaks).
8vr-i--,-2;{-Í-if--*--7-@---b";_y f-i:hu< Pärast 2 500 000 treeningtähte on tulemus alljärgnev. Juba suudame õigesti kasutada tühikuid. ted v~olgekn j~oäreklist segikteedalv onktevat on b ksil~oigt ) Pärast 20 000 000 treeningtähte (kõik treeningandmed on korra läbitud) on tulemus alljärgnev: ikohud kantsed, tasvulteerutes /raatliseid raosam sellate doodid ingiga 0000 Pärast 5-kordset treeningandmete läbimist on tulemus alljärgnev: on agaga ületavad näid on väitsuse isimisel minnosaasi talmenda vaab külgimise vaal Tegelikult tulemus edaspidi enam väga palju ei muutu. Pärast pea poole miljardi tähe nägemist (treeningandmestik on läbitud juba ca 28 korral), on kaofunktsiooni väärtus ligilähedane ja tulemus endiselt üsna kehv: ulavaa-ribataaleele test suurituumite ja kasvuse seeb ) Olukord on tegelikult natuke parem, kui kasutame madalamat temperatuuri. Kuigi sõnade järjekord ei ole kõige loogilisem, on vähemalt sõnad enamasti grammatiliselt korrektsed. TEMP 0,2: korral, mis on k~oige korral kasutatakse ka sellest koos on teise tegemise kohta. teisest kohaliselt kasutatakse koos on konsti vastus m~oju teiste kohtu v~oimalik korral. m~oju teise suurema ka selle konteksti m~oistes. see on selle kasutatakse kasutatakse koos on selle korral, kui sellest, mis korral, mis on ka selle selle m~oju Keerulisema mudeli korral on tulemus pärast 14. epohhi alljärgnev. Tulemus on ikkagi kehvavõitu, kuigi madala temperatuuri korral on sõnad vähemalt grammatiliselt korrektsed. TEMP 0,2: kasutatud ka sellest tähenduse korral on kasutatud ka kohaliku kohaliku kohtu, mis ka kasutatud ka sellest kohtuse kasutatud ka selle kohtu. kui ka ka teaduse tähenduse selle tagava tegemine, seisust. ka selle kasutamise ka selle ka selle kasutatud ka teaduse ka kasutatud ka selles ka selle korraldatud ka ka selle ka selle kasutatud ka teene kasutatud ka selle teiste sellest p~ohjal TEMP 1,0: jalugu oli emamaal populataja tuhtluse pingratsiooni kasutavad tulepadast cambopatsioganb l~ohka liidevatuvad tüüpi aga eelk~oige kastukratelised kormaginivaaltssoos he juhond, miselistasteks ki kondruujust, mis p~ohjusüütiuku velganud liikutakse viitid. k~oigu tärvastega ( hestastule luuta alas ). selle olel olemisturite drastileetile ; 2-251. 81 ale instiuste prouuste palkonvalistus seega sead.
5 Vähem andmeid, rohkem neuroneid Eelnevalt esitatud tulemused ei olnud kuigi kenad. Proovime, kas genereeritud tekst on mõistlikkum, kui kasutame vähem andmeid ja rohkem neuroneid ning treenime kauem. Põhimõtteliselt uurime, kas suudame treeningandmestikku piisavalt hästi meelde jätta, et normaalseid sõnu genereerida. Mudelina on kasutatud 2-kihilist LSTM-i (veidi keerulisem mudel kui ülalkirjeldatud lihtne rekurrentne võrk, kuid põhimõttelt sama), mille mõlema kihi neuronite arv on 300 (ülaltoodud näites oli 100). Andmetena kasutame vaid ühte doktoritööd (tähti kokku 246073), kuid eristame ka suur- ja väiketähti (unikaalsete tähtede arv on 95). Püüame iga tähe ennustamisel arvesse võtta 50 eelmist tähte ja läbime treeningandmed 60 korda (seega vaadeldakse treenimisel kokku 60 246023 = 14761380 vaatlust). Sedapuhku on arvutused tehtud GPU peal. Lõpptulemused on esitatud järgnevalt. TEMP 0,2: Kui ka kasumiaruande panga tegevuse kohta. Selle suurem on kasutatud kasumiaruande korral panga tegevuse panga tegevuse korral on kasutatavate suurema korral panga tegevuse tulemuste kogumisele. Kui selle suurem on täheleks on kasumi kohta. Kui selle suurem on selle tulemuste kuuluvad on kasumi kasumi korma. Selle näitaja on kasutatud v~oib teenuste kasumit. TEMP 0,5: See suhte mitte v~oimalik arvutamise on siis tegemuse p~ohipanga kliendid on k~oik konkreetse panga klientide laenude labeliks. Selle rahulolema analüüsida neid erinevate matamise kohta. See näitaja maanud poolete arvutamisel siha, kui analüüsi analüüsiliselt kasutatud korma hinnangute suuremiseks on k~oige panga panga trenenisule. Näeme, et tulemused on veidi paremad kui eelnevalt. Kasutatud on keerukamaid ja pikemaid sõnu ning laused lõpevad ning algavad korrektselt. Siiski ei ole genereeritud tekst kuigi loogiline. 6 Kokkuvõte Teksti genereerimise tulemused ei olnud kõige paremad. Samas suutsid mudelid õppida genereerima grammatiliselt enam-vähem korrektset teksti. Rohkem edu võiksime saavutada mudelites olevate mitmete hüperparameetrite tuunimisega: nt varjatud kihtide suurused või ka tuletiste võtmisel learning rate. Kõik mudelid treenivad paraku väga kaua aega ja seetõttu paremini sobivate parameetrite otsingut ei teostatud. Näitena võib tuua Andrej Karpathy mudeli poolt genereeritud ingliskeelset teksti. Tema kasutas oluliselt suuremaid varjatud kihtide väärtusi (mis tähendab oluliselt rohkem parameetreid ja aeglasemat protsessi). Ka siin ei ole tulemus sugugi loogiline, kuigi parem kui ülaltoodud näidetes. TEMP small: is that they were all the same thing that was a startup is that they were all the same thing that was a startup is that they were all the same thing that was a startup is that they were all the same TEMP normal: The surprised in investors weren t going to raise money. I m not the company with the time there are all interesting quickly, don t have to get off the same programmers. There s a super-angel round fundraising, why do you can do.
Viited 1. Karpathy, A. The Unreasonable Effectiveness of Recurrent Neural Networks. http://karpathy.github.io/2015/05/21/rnn-effectiveness/ 2. Arvutilingvistika uurimisrühm. Segakorpus: Doktoritööd. http://www.cl.ut.ee/korpused/ segakorpus/doktoritood/index.php?lang=et 3. Socher, R. et al. CS 224D: Deep Learning for NLP1 Lecture Notes: Part IV2. http://cs224d.stanford.edu/lecture notes/lecturenotes4.pdf 4. Chollet, F. Keras. http://keras.io