< eelmine | 5. OSA Keeletehnoloogia | järgmine > |
5.2 Meetodid autor: Mark Fišel
Meetodid
Selles peatükis anname ülevaate sellest, kuidas võib läheneda keeletehnoloogiliste ülesannete lahendamisele. Nagu ka mujal tehisintellektis, jagunevad lähenemised reeglipõhisteks ja masinõppel põhinevateks. Viimaseid võib jagada omaette “klassikaliseks” masinõppeks ning hiljuti väga edukaks osutunud sügavõppeks, ehk tehisnärvivõrkudel baseeruvaks masinõppeks. Igal lähenemisel on oma rakendusalad ja ülesanded, mille puhul nad sobivad paremini või halvemini.
Reeglid
Kui kooliõpetajaid ja keeleteadlasi kuulata, siis tundub, et keeles valitsevad reeglid (erandid on ka olemas, kuid need on samuti lihtsalt teistsugust tüüpi reeglid). Kuigi tegelikkuses ei kirjelda reeglid keelt 100% täpsusega, võib reeglipõhine keele kirjeldus siiski olla piisavalt hea , et selle põhjal loodud keeletehnoloogiline rakendus oleks kasulik. Osutub isegi, et mõnede ülesannete edukaimad lahendused ongi erinevatel põhjustel reeglipõhised. Selliseid reegleid võib väljendada igas programmeerimiskeeles, aga mõnikord eksisteerivad ka spetsiaalsed keskkonnad reeglite defineerimise jaoks. Selleks aga, et aru saada, mis tüüpi reeglitest me üldse räägime, toome paar näidet.
Näide
Olgu meie ülesandeks leida etteantud nimisõna mitmuse nimetav vorm: nt. “tudeng”→”tudengid”, “kursus”→”kursused”, jne. Tundes põhjalikult eesti keelt, võime kohe öelda, et mitmuse nimetava vormi saamiseks peame esialgse sõna panema ainsuse omastavasse käändesse (“tudengi”, “kursuse”) ning seejärel lisama sinna “d” lõppu. See lihtne järjend ongi üks reegel:
- leia sõna vorm ainsuse omastavas käändes
- lisa ‘d’ lõppu
Kuidas aga lahendada ainsuse omastava vormi leidmist? Ka selle jaoks võib kirjutada reegleid, kuid nüüd sõltub tulemus sellest, mis sõnaga on tegu, või täpsemalt selle sõna muuttüübist. Mõnede sõnade omastava käände genereerimise reeglid on lihtsad: nt. sõnade puhul, mille lõpp on “-ne”, piisab sellest, et asendada see “-se”-ga (“tihane”→”tihase”, “eestlane”→”eestlase”). Teiste sõnade puhul lisatakse omastava vormi saamiseks lõppu “-i” (“tudeng”→“tudengi”), või “-e” (“kursus”→“kursuse”), vahel muutub sõna tüvi (“käsi”→”käe”, “tuba”→”toa”), ning veel on sõnu, mis ei muutu omastavas üldse (“maja”, “ema”), jne. Selleks, et sõnade ainsuse omastava vormi leidmist lahendada, peab järelikult tegema esmalt muuttüübi tuvastamise ning seejärel panema igale muuttüübile vastama omaette reegli. Seda tehes pole lahendus ikka veel käeulatuses, sest kohtume kohe paljususega käänete tasemel: nt. sõna “palk” omastav ja muuttüüp sõltub sellest, kas räägime regulaarselt saadavast rahatasust (omastav “palga”) või langetatud puu tüvest (omastav: “palgi”).
Nagu näeme võib reeglite põhjal sõnade käänamine tunduda intuitiivselt lihtne ja loogiline lähenemine, aga praktikas avastame, et see muutub ruttu väga keeruliseks ja nõuab väga palju reegleid, et kõik juhud kaetud saaks. Näide kõikide käänete automaatsest genereerimisest on kättesaadav veebist aadressil www.filosoft.ee/gene_et ning morfoloogilise analüüsi näide - aadressil www.filosoft.ee/html_morf_et.
Teiseks näiteks on masintõlge. Me võime üritada kirjeldada tõlkimise protsessi leksikonireeglitega:
võta kahekeelne sõnastik ning asenda tekstis olevad eestikeelsed sõnad ükshaaval inglisekeelsetega (nt. “leib”→“bread”, “tudeng”→“student”, jne).
Kui me tegusõnade ja muude muutuvate sõnadeni jõuame, läheb asi raskemaks: nimelt, selle asemel, et lisada sõnastikku eraldi kirjeid nt. “viska”, “viskan”, “viskasin”, “viskaks”, “visatud” jne, oleks ilmselt otstarbekam defineerida reegleid nagu:
leia sõna algvorm ja morfoloogiline info (nt. “viskaks” → “viskama”, tingiv+olevik), tõlgi algvorm inglise keelde sõnastiku abil (nt. “viskama” → “throw”) ning pane seda algse sõna vormi (“throw” → “would throw”)
Nagu me nägime aga esimeses näites, ei ole morfoloogilised reeglid sugugi lihtsad ning lisab meie tõlkesüsteemi keerukust. Me võime lisada oma sõnastikku ka fraase (nt. “muidugi”→“of course”) ja ka keerulisemaid reegleid, nt.
kohanimed sisseütlevas käändes (Inglismaale) tõstetakse nimetavasse (Inglismaa), tõlgitakse sõnastiku abil (England) ning nende ette lisatakse "to" (to England).
Puhta grammatika ja leksikoni kirjeldamisest siiski ei piisa, nt. me võime küll kirjeldada, kuidas tõlgitakse sõna “mine” (go) ning sõna “metsa” (to forest), kuid kokku need ei tähenda “go to the forest”.
Selleks, et selline tõlkesüsteem “oskaks” piisavalt suurt leksikoni ja tuleks toime piisavalt laia valiku tekstidega, on sinna vaja panustada inimkuid või -aastaid keeleteadlaste tööd, et vajaliku reeglistiku luua. Isegi siis on sellisel süsteemil mitu puudust, kuna reeglitega on väga raske kirjeldada sõnade omavahelisi sõltuvusi, eriti kui need sõnad või fraasid paiknevad tekstis üksteisest kaugel. Selliseid sõltuvusi on aga vaja arvesse võtta, nt. kui tahame korrektselt tõlkida lauses “Jaak mõtles natuke ning ütles, et tal on kopp ees” sõna “tal” ingliskeelseks sõnaks “he”, mitte sõnaks “she”.
Kokkuvõteks: reeglite defineerimine oli põhiliseks lähenemiseks keeletehnoloogiliste ülesannete lahendamisel kuni 80ndate aastate keskpaigani, ning mõnedes ülesannetes kasutatakse neid ka tänapäeval. Järgnevalt võtame kokku reeglipõhise lähenemise eelised ja puudujäägid.
Eelised:
- reeglid sobivad hästi siis, kui süsteemi arendajal on konkreetne ettekujutus selle kohta, kuidas täpselt töötab modelleeritav nähtus. Nt, morfoloogilised teisendused (algvormi või teiste käänete leidmine)
- reeglid sobivad ka sellistel juhtudel, kus ei saa rakendada masinõpet (nt. kui treeningandmeid pole)
- reeglipõhised süsteemid on üsna läbipaistvad ning neid on kergem kontrollida või parendada. Teiste sõnadega teab selle looja, mida süsteem teeb, ning mida sellelt oodata. Kui see süsteem eksib mõnel konkreetsel juhul, on tihti võimalik täiendada reeglite hulka, et viga kõrvaldada.
Puudujäägid:
- reeglipõhiste süsteemide loomine on aeganõudev ja kallis (inimeste ajakulu suhtes) protsess ning see nõuab keeleteadlastelt spetsiifilisi teadmisi
- ei meie ise ega ka keeleteadlased ei tea alati, kuidas me igat keeletehnoloogilist ülesannet inimestena lahendame, seega ei saa seda ka reeglitena kirja panna, et ülesannet automatiseerida
- reeglipõhised lahendused on ülesandespetsiifilised, st. neid ei saa üldistada ning taaskasutada mõne teise ülesande lahendamiseks
- ideaalseid lahendusi reeglite abil teha ei saa, kuna tegelikkuses ei tea me mitte kunagi 100% täpsusega, kuidas me mõnda ülesannet täpselt lahendame
Masinõpe
Masinõpet tutvustas käesoleva kursuse 2. loeng, ning see on põhimeetodiks peaaegu igas kaasaegses tehisintellekti valdkonnas. Antud teema kontekstis ning reeglitega kõrvutatuna on selle mõte järgmine: ärme ürita programmile ülesande lahenduskäiku selgitada, näitame hoopis, kuidas inimesed seda ülesannet lahendanud on. Teiste sõnadega, korjame kokku piisavalt palju näiteid sellest, kuidas inimesed on tekste tõlkinud, sõnu käänanud või teksti hääldanud ning treenime nende näidete abil masinõppe mudeli, et see antud ülesande lahendamist imiteeriks. Need näited moodustavad andmestiku, mida keeletehnoloogias nimetatakse korpuseks. Näiteks joonisel 7 ja joonisel 8:
Kogutud korpus peab tüüpiliselt sisaldama näiteid ülesande sisendist ja väljundist: (ehk tunnustest ja märgenditest, juhendatud õpe)1
- algvormi leidmisel on sisendiks mõni sõnavorm ning väljundiks selle algvorm
- masintõlke puhul on sisendiks lähtekeelne lause ning väljundiks sihtkeelne lause, mis sellele tähenduse ja stiili poolest vastab
- kõnesünteesi puhul on sisendiks lause tekst ning väljundiks selle häälduse lindistus
- mõnede ülesannete jaoks on tarvis lihtsalt toorteksti ilma märgenduseta
Selliste andmete abil on võimalik automaatselt luua masinõppe mudel, mis suudaks umbkaudselt lahendada korpuses esindatud ülesande. Peamine on muidugi see, et loodud mudelit saab kasutada väljundi ennustamiseks ka selliste sisendite puhul, mida treeningandmetes nähtud ei ole - teiste sõnadega, ei piisa lihtsalt näidete meeldejätmisest, mudel peab üldistuma uutele näidetele.
Masinõppe puhul kasutatakse matemaatilisi mudeleid, mille väljund sõltub nii sisendist kui ka hulgast vabadest (muudetavatest, treenitevatest) parameetritest (nt. tehisnärvivõrgu kaalud). Mudelite õpetamine seisneb nende vabadele parameetritele selliste väärtuste leidmises (optimeerimises), et mudeli väljund oleks võimalikult sarnane korpuses olemasolevate etalonväljunditega (märgenditega). Kuna masinõppe mudelite tüübid ja algoritmid on tüüpiliselt väga üldised ning peavad sobima ükskõik milliste andmete jaoks (nii keele-, pilt-, finants- kui kõik teised andmed), on vaja esmalt leida keelelise sisendi jaoks sobiv esitusviis ehk tunnuste komplekt (vt. 2. loengut). See, milliseid tunnused valitakse, sõltub tugevalt lahendatavast ülesandest: nt. teksti liigitamisel rämpspostiks või mitte-rämpspostiks on kasulikeks tunnusteks tekstis sisalduvate sõnade loetelu (nominaalne nimekiri, vt 2. loengut) ja tõenäoliselt ka e-kirja saatja, kuid nt. teksti pikkus ei pruugi olla väga kasulik tunnus, kuna nii kasulike kirju kui ka rämpsposti tuleb igas pikkuses. Teisest küljest, kui me liigitame lauseid stiili järgi, võib pikkus olla kasulik tunnus, sest otsekõne lausungid on tüüpiliselt lühidad ning ilukirjanduslike või juriidiliste tekstide laused on palju pikemad. Tunnuste valik ja esitusviis on seega väga olulised, kuna see määrab, millist infot saab masinõppe mudel õppimisel ja rakendamisel kasutada.
Masinõppe rakendamine põhineb paljudel eeldustel: et võetud üldine mudeli kuju (mudeli tüüp) sobib etteantud keeletöötluse ülesande lahendamiseks, et selle treenimise ehk õpetamise viis suudab leida head vabade parameetrite väärtused ülesande lahendamiseks, et võetud korpus on piisavalt suur ja esinduslik kirjeldamaks etteantud ülesannet. Konkreetseid näiteid üldistest ja spetsiifilisematest masinõppe mudelitest keeletöötluses toome järgmises peatükis, siin aga võtame üldiselt kokku masinõppe lähenemise eeldused ja puudujäägid:
Eelised:
- masinõpe on paindlik ja võimaldab mudelite taaskasutamist. Sama masinõppe mudeli implementatsioon sobib paljude ülesannete lahendamiseks ega sõltu keelest jm. eripäradest, vaja on ainult õpetada uus mudel (mudel uuesti optimeerida) kasutades erinevaid treeningkorpuseid. Õpetamine pole inimesele töömahukas, selle teeb ära arvuti.
- masinõpe ei eelda, et me teame, kuidas inimesed etteantud ülesannet lahendavad: selle asemel eeldab see, et valitud matemaatiline mudel koos oma vabade parameetritega on piisavalt sobiv, et lahendada lähteülesannet
- mudelite treenimine nõuab oluliselt vähem inimtööaega, võrreldes reeglipõhiste süsteemide loomisega
Puudujäägid:
- masinõppe mudelid on tihti raskesti mõistetavad, st. on raske või võimatu aru saada, miks nad ühe või teise sisendi puhul just teatud viisil käituvad. See aga tähendab, et vigade parandamine on raskem, sest me ei tea, miks mudel eksis.
- masinõpe sõltub andmete olemasolust - kuigi olemasolevaid korpusi saab taaskasutada, kui etteantud ülesande jaoks korpused puuduvad, siis tekstikorpuste märgendamine õigete vastustega on samuti kallis ja aeganõudev protsess
- selleks, et mudelid hästi töötaks, peab mõnikord hästi hoolikalt kavandama sisendi esitusviisi, mis samuti, nagu reeglite loomine, nõuab tihti valdkonna (ehk keele) põhjalikku tundmist. Ilma selleta on keelenähtuste käsitlemine tihti naiivne: nt. ei pruugi naiivsel sisendil õpitud mudel mõista, et mõned sõnad on omavahel rohkem või vähem seotud vms.
- kui lähteülesanne on piisavalt keeruline (nt. juturobot, masintõlge jt), siis hea lahenduse leidmiseks on tihti vaja mitut masinõppepõhist komponenti ning mitmest etapist koosneva töövoo defineerimist, mis aga tähendab, et iga vaheetapi vead propageeruvad edasi ning terve süsteemi efektiivsus kannatab kogunevate vigade tõttu
- ideaalseid lahendusi masinõppe abil luua ei saa, kuna lahendused on umbkaudsed ning iga valitud mudel on lähend, mitte täpne vastus
Sügavõpe
Sügavõpe (ingl deep learning) on tegelikult üks masinõppe liik, kuid sellel on oma eripärad, mistõttu on mõtet sellest rääkida eraldi. Viimase 5-6 aasta jooksul on just selle lähenemise abil saavutatud märkimisväärne edasiminek paljude keeletehnoloogiliste ülesannete lahendamisel, sh. nii lõppkasutaja rakendustes nagu kõnetuvastus, kõnesüntees, masintõlge, kui ka tavainimesele mitte nii tuttavad keeletehnoloogilised komponendid nagu morfoloogiline ja süntaktiline analüüs, meelsusanalüüs jt.
Sügavõpe seisneb tehisnärvivõrkude kasutamises masinõppe mudelina. Tehisnärvivõrke tutvustavad käesoleva kursuse 2. ning 3. loeng (peatükid 2.5 ja 3.2), seega nende töötamise printsiipidel me ei peatu. Küll on aga keeletehnoloogia kontekstis nende järgmised eripärad väga olulised:
- Tehisnärvivõrkude abil on võimalik kavandada lahendusi mh. keerulistele ülesannetele (nagu masintõlge, kõnesüntees) ilma keerulist töövoogu üles seadmata, otse algusest lõpuni (ingl end-to-end) ühe tehisnärvivõrguga. See tähendab ühest küljest, et vigade propageerimist nagu klassikalises masinõppes ei saa juhtuda. Teisest küljest aga muutub terve lahendus veelgi läbipaistmatumaks ning valmis treenitud tehisnärvivõrkude analüüs või parendamine on veelgi raskem.
- Tehisnärvivõrgud saavad sisendiks vektori, õpivad väljundit samuti vektorina andma ning koosnevad mitmest “kihist” või etapist, kus iga etapp õpib teisendama endale sisendiks antud vektori teiseks vektoriks. Teiste sõnadega õpivad närvivõrgud tegema vektoresituste “ahelteisendusi”. Selle tulemusena ei ole algne sisendi esitusviis (algsed tunnused) enam nii oluline nagu klassikalise masinõppe puhul, kuna närvivõrk õpib ise automaatselt leidma sisendi optimaalse esitusviisi (optimaalse lahendamaks vastavas korpuses esitatud ülesannet). Näiteks võib sõnu otse närvivõrku “sööta” ning võrk leiab õppimise käigus sõnadele sellise esituse, mis kajastab nende omavahelisi seoseid, tähenduse sarnasust jne.
Sügavõpet kasutades:
- ei pea enam kavandama nii hoolikalt tunnuste ekstraheerimist, andmete optimaalse esituse leidmist õpib närvivõrk ise. Sügavõppe mudelid saavad hakkama ka “toor”-sisendiga: pilditöötluse puhul pikslitega, keeletöötluses aga sõnade või isegi tähtede loenditega. Üksik sõna (ja eriti üksik täht) omab tähendust ainult muude sõnade või tähtede kontekstis, kuid ka konteksti saab tehisnärvivõrgus õppida esitama tänu sügavale teisenduste ahelale ning terve lause või teksti korraga töötlemisele.
- Leitud andmete esitusviis on taaskasutatav ka väljaspool treenimisel kasutatavat korpust ning lubab sama tehisnärvivõrku kasutada teisteks eesmärkideks. See punkt on illustreeritud järgmises peatükis ning ühes praktilises ülesandes.
Eelised:
- algusest lõpuni (end-to-end) ülesande lahendamise õppimine, ilma, et oleks tarvis keerulist, mitmest sammust koosnevat töövoogu
- mitu teisendust üksteise järel ühes närvivõrgus - seetõttu sisaldab see automaatset esituste õppimist esimeses teisenduses: seega, ei pea enam sisendtunnuseid nii hoolikalt valima, võib lihtsalt anda toorsisendit (nagu sõnu)
- konteksti arvestamise automaatne õppimine: tervele lausele või tekstile (vm. sisendile) leitakse ka oma vektoresitus, mida võtab närvivõrk arvesse lõpliku väljundi arvutamisel
Puudujäägid:
- sügavõppe lahendused on väga ahned andmete suhtes, ning eduka lahenduse treenimiseks on tihti vaja 5-20 korda rohkem andmeid võrreldes teiste masinõppe mudelitega
- tehisnärvivõrgud on suures osa läbipaistmatu -- mõned selle osad (nagu õpitud vektoresitused) on küll tõlgendatavad, kuid enamasti puudub arendajail arusaam selle kohta, miks täpselt ennustab närvivõrk ühte või teist väljundit
- sügavõppe mudelite treenimine nõuab erilist riistvara (suuremahulisteks arvutusteks sobivat graafikakaarti), ning isegi selle olemasolul võib mudeli õppimine tihti võtta mitu nädalat aega
- ideaalseid lahendusi sügavõpe ei anna, samal põhjusel nagu masinõpe: selle mudelid on ainult lähendid, mitte täpsed vasted inimese peas toimuvale
Peatüki kokkuvõtteks: nii reeglipõhisel, masinõppel kui ka sügavõppel põhinevatel lähenemistel keeletehnoloogia ülesannete lahendamisele on oma eelised ja puudujäägid. Reeglipõhised lähenemised ei sõltu andmetest ning annavad läbipaistvaid arusaadavaid lahendusi, kuid nõuavad palju inimtööd, et koostada häid reeglistikke. Masinõppe kasutamine sõltub andmete olemasolust ning vajab hoolt konkreetse mudeli tüübi ja selle parameetrite valimisel, kuid võimaldab paindlikult arendada lahendusi ilma keelt või valdkonda tundmata. Sügavõpe läheb veel kaugemale ning võimaldab luua nn. algusest lõpuni lahendusi ning leiab õppimise käigus ise kasuliku ja kompaktse esitusviisi sisendsõnadele. Siiski nõuab sügavõpe veel palju rohkem andmeid ning enamasti annab täiesti läbipaistmatuid tulemusi. Lõpuks ei anna ükski lähenemine ideaalseid tulemusi; tsiteerime kuulsat statistika aforismi: “kõik mudelid on valed, kuid mõned neist on ikkagi kasulikud”.2
1 Sisendit ja väljundit on vaja eeskätt juhendatud masinõppe jaoks; mõne ülesande puhul kasutatakse nt. juhendamata masinõpet või siirdeõpet, ning siis on andmete iseloom teistsugune. Juhendamata masinõppe jaoks on abi isegi suurest hulgast märgendamata tekstist.
2 https://en.wikipedia.org/wiki/All_models_are_wrong
< eelmine | 5. OSA Keeletehnoloogia | järgmine > |