  ̌      ̌    P 49 (2021/2022) 424 Tehnike predobdelave besedil v procesiranju naravnega jezika M B̌, J D Procesiranje naravnega jezika je v zadnjih ne- kaj letih postalo zelo prepoznavno področje raču- nalništva. Naravni jezik je jezik, ki ga ljudje upo- rabljamo za komunikacijo. Pojavilo se je veliko novih metod za obdelavo naravnega jezika v raz- ličnih oblikah, kot so, recimo, besedila in zvočni posnetki. Te metode so prav tako postale del na- šega vsakdana s pomočjo pametnih storitev, ki jih dnevno uporabljamo. Danes lahko z govornimi ukazi izvajamo opravila na mobilnih napravah, s pametnimi iskalniki lahko na podlagi našega vho- dnega besedila najdemo ustrezne vsebine, prav ta- ko pa lahko brez večjih težav strojno prevajamo besedila v skoraj vse jezike. Na spletu obstaja kar nekaj prosto dostopnih spletnih prevajalnikov, kot so Google Translate [2], Microsoft Bing [3], Amebis Presis [1] in PONS [5]. V tem prispevku se bomo osredotočili na sisteme, ki naravni jezik procesirajo v obliki besedila. Pri tem bomo podrobneje predstavili tehnike predobdelave besedil, ki navadno nastopijo kot prvi korak v ta- kšnih sistemih. Predobdelava besedil je ključnega pomena za vse nadaljnje korake sistemov procesi- ranja besedil, saj neposredno vpliva na kakovost re- zultatov. Vhodno besedilo je potrebno najprej ustrezno preoblikovati v obliko, ki je primerna za nadaljnjo obdelavo. V ta namen uporabljamo cevovod predob- delave besedil (angl. text preprocessing pipeline), ki ga sestavlja kombinacija različnih tehnik predobde- lave. V nadaljevanju si poglejmo zasnovo takšnega cevovoda in nekaj najpogostejših tehnik predobde- lave, ki se uporabljajo v praksi. Cevovod predobdelave besedil Predobdelava besedil je postopek, kjer v določenem zaporedju nad vhodnim besedilom izvajamo različ- ne tehnike predobdelave besedil. Gre za transforma- cije vhodnega besedila, kjer po vsaki izvedeni teh- Tokenizacija Preiševanje Lematizacija in krnenje Cevovod predobdelave besedila Vhodno besedilo Rezultat predobdelave SLIKA 1. Primer cevovoda predobdelave besedil.   ̌      ̌    P 49 (2021/2022) 4 25 niki predobdelave besedil kot rezultat dobimo obde- lano besedilo, ki je bolj primerno za nadaljnje po- stopke procesiranja besedil. Predobdelavo besedil si najlažje predstavljamo kot cevovod, kjer imamo na začetku neobdelano vhodno besedilo, na koncu pa dobimo obdelano izhodno besedilo. Slika 1 prika- zuje strukturo takšnega cevovoda z zaporedjem ne- kaj napogostejših tehnik predobdelave besedil. Tehnike, ki se v cevovodu predobdelave besedil najpogosteje uporabljajo, zajemajo (v tem vrstnem redu) tokenizacijo, prečiščevanje ter lematizacijo in krnjenje besedila. Vsaka izmed omenjenih tehnik predobdelave je samostojna enota znotraj cevovoda, ki nad besedilom na vhodu izvede ustrezno trans- formacijo in vrne izhodno obdelano besedilo. Zapo- redje tehnik predobdelave se lahko v cevovodu tudi spremeni. To je največkrat pogojeno z jezikom, ki ga obdelujemo. V tem prispevku se bomo omejili na slovenski jezik. Tokenizacija Prvi korak predobdelave besedil je tokenizacija. To je proces delitve celotnega vhodnega besedila na manjše dele – žetone (angl. token). Ponavadi govo- rimo o delitvi na besede, poznamo pa tudi druge de- litve, kot sta npr. delitvi na besedne zveze in bese- dne n-grame. Pri delitvi na besedne zveze kot žeton uporabimo več besed. Delitev na besedne n-grame je podobna delitvi na besedne zveze, le da s številom n določimo, koliko besed ostane v besedni zvezi. Si- cer n-grame uporabljamo tudi na nivoju besed, kjer ohranimo n črk v besedi. Slika 2 prikazuje razlike med različnimi delitvami na stavku Danes je lep dan. Sam postopek delitve poteka na podlagi vnaprej določenih pravil za delitev. Za delitev na besede, ki je najpogosteje uporabljen način delitve, pravi- loma uporabimo pravilo deljenja s pomočjo znakov za presledke. Pri tem odstranimo tudi ponavljajoče zaporedne presledke, tabulatorje in ločila. Rezultat tokenizacije je seznam besed, ki se pojavijo v vho- dnem besedilu. Prečiščevanje Naslednji korak predobdelave besedil je prečiščeva- nje. Besede iz seznama, pridobljenega s tokeniza- cijo, dodatno spreminjamo in odstranjujemo iz se- znama. Najprej vse črke v besedah iz seznama pre- tvorimo v male črke. Takoj zatem ponavadi odstra- nimo tudi besede, ki so krajše oz. daljše od dolo- čenega števila znakov. Primer takšnega odstranje- vanja je, recimo, odstranjevanje vseh besed krajših od treh znakov in daljših od petnajst znakov. Na- zadnje zelo pogosto odstranimo najpogosteje upo- rabljene besede našega izbranega jezika. Gre za t. i. blokirane besede (angl. stopwords), med katere spa- dajo vezniki, zaimki, prislovi, nekatere pridevniške besede in vse ostale besede, ki se v izbranem jeziku najpogosteje pojavijo. Z odstranjevanjem blokiranih besed odstranimo šum v besedilu, saj želimo ohra- niti le tiste besede, ki vhodnemu besedilu dajejo naj- več vsebine. Rezultat je torej seznam prečiščenih be- sed, ki vsebujejo vsebino vhodnega besedila. Lematizacija in krnjenje V zadnjem koraku cevovoda predobdelave besedil nad seznamom prečiščenih besed izvedemo posto- pek lematizacije ali postopek krnjenja. Lematizacija Danes je lep dan Tip delitve Rezultat delitve na besede danes, je, lep, dan na besedne zveze danes je, danes je lep, danes je lep dan, je lep, je lep dan, lep dan na n-grame (n = 2) da, an, ne, es, s_, _j, je, e_, _l, le, ep, p_, _d, da, an na besedne n-grame (n = 2) danes je, je lep, lep dan SLIKA 2. Primer razlǐcnih delitev pri tokeniza- ciji na stavku Danes je lep dan. Pod- črtaj pri delitvi na n-grame je upora- bljen kot znak za presledek.   ̌      ̌    P 49 (2021/2022) 426 Korak 1 Korak 2 Korak 3 Korak 4 Popili so bili ravnokar popoldansko kavo prazne steklenice so bile še na mizi pogrnjeni z nedeljskim prtom → popili bili ravnokar popoldansko kavo prazne steklenice bile mizi pogrnjeni nedeljskim prtom → popili ravnokar popoldansko kavo prazne steklenice mizi pogrnjeni nedeljskim prtom → popiti ravnokar popoldanski kava prazen steklenica miza pogrnjen nedeljski prt SLIKA 3. Potek delovanja cevovoda predobdelave besedil in krnjenje sta podobna postopka, vendar je med njima zelo pomembna razlika. Lematizacija besedo preoblikuje v njeno osnovno obliko, krnjenje pa be- sedi zgolj odreže končnico. Tako z lematizacijo do- bimo lemo, s krnjenjem pa krn besede. Dober pri- mer razlike je beseda boljši. S krnjenjem bomo be- sedo pretvorili v besedo bolj, z lematizacijo pa v njeno osnovno obliko – dober. To je zelo pomembno pri morfološko bogatih jezikih, kot je slovenščina, zato pri takšnih jezikih v tem koraku pogosteje upo- rabljamo lematizacija. Slovenščina je oblikoslovno (morfološko) izjemno bogat jezik, saj se veliko bese- dnih vrst pregiba (samostalniške in pridevniške be- sede, glagoli, zaimki, števniki). Tako s sklanjanjem, spreganjem in stopnjevanjem besede dobivajo raz- lične končnice (morfeme). Krnjenje tako bolj upo- rabljamo za manj morfološko bogate jezike, kot je npr. angleški jezik. Z lematizacijo torej vse besede iz seznama prečiščenih besed pretvorimo v njihove osnovne oblike. Izhod cevovoda je spremenjen se- znam besed in predstavlja rezultat celotne predob- delave vhodnega besedila. Primer Poglejmo si delovanje cevovoda predobdelave bese- dil na primeru (slika 3) dela besedila Cankarjevega romana Tujci: Popili so bili ravnokar popoldansko kavo: prazne steklenice so bile še na mizi, pogr- njeni z nedeljskim prtom. Najprej izvedemo tokenizacijo, kjer bomo vhodno besedilo razdelili na besede, izhod pa bo seznam be- sed. Pri tem bomo odstranili tudi ločila (korak 1). Nato sledi prečiščevanje, kjer bomo vse velike črke pretvorili v male črke, iz seznama pa bomo odstra- nilo vse besede krajše od treh znakov, vse besede daljše od petnajst znakov (korak 2) in vse blokirane besede (korak 3). Seznami blokiranih besed za naj- pogostejše jezike najdemo v prosto dostopni Python knjižnici NLTK [4]. Nekatere besede, ki spadajo v seznam blokiranih besed za slovenščino, so: ali, am- pak, bodisi, in, kajti, namreč, ne, niti, oziroma, pa.   ̌      ̌    P 49 (2021/2022) 4 27 Na spletu so še prosto dostopni seznami blokiranih besed za slovenščino na Wikiversity [8] in repozito- riju GitHub [7]. Na koncu izvedemo še lematizacijo, kjer vse besede iz seznama pretvorimo v osnovno obliko (korak 4). Rezultat koraka 4 je tudi izhod cevovoda. Kot je razvidno iz podanega primera, je izhodno besedilo krajše, hkrati pa ohranja vsebino originalnega besedila. S predobdelavo besedila smo uspeli izluščiti najpomembnejše besede oz. značilke, s katerimi lahko začnemo nadaljnje procesiranje. V tem prispevku predstavljen cevovod predobde- lave besedil je le eden izmed možnih načinov pred- obdelave besedil, saj lahko v cevovodu spreminjamo tehnike predobdelave besedil in njihovo zaporedje izvajanja. Postopek predobdelave je velikokrat po- gojen s postopkom nadaljnjega procesiranja besedil. Nekateri izmed teh postopkov zahtevajo točno dolo- čeno obliko besedila na vhodu, za kar seveda poskr- bimo že pri predobdelavi. Obstaja še nekaj tehnik predobdelave besedil, ki jih v tem prispevku nismo opisali, saj jih ponavadi uporabljamo v primeru spe- cifičnega procesiranja besedil. Med te tehnike pred- obdelave besedil spadata, recimo, normalizacija be- sedila in preverjanje črkovanja. Pri normalizaciji be- sedila se določene besede razširijo v bolj pomenljivo obliko. Dober primer normalizacije so kratice, ki jih razširimo v obliko pred krajšavo (npr. STA v Slo- venska tiskovna agencija). Pri preverjanju črkovanja vsako besedo preverimo za napake v črkovanju in jo nato ustrezno popravimo. Čeprav je večina orodij za predobdelavo besedil v osnovi razvitih za angleški jezik, je podpora zelo do- bra tudi za slovenski jezik. Na voljo je kar nekaj pro- stodostopnih orodij: za programski jezik Python je dobra izbira knjižnic Gensim [10], NLTK [4] in Clas- sla [9], s katerimi lahko le v nekaj vrsticah kode sami sprogramiramo cevovod predobdelave besedil. Pri- mer takšne implementacije v programskem jeziku Python je na voljo na javno dostopnem repozitoriju GitHub [6]. Kljub temu, da podpora za slovenski je- zik v teh orodjih še ni optimalna, se iz leta v leto stanje izboljšuje, saj se vztrajno veča število ljudi, ki se v Sloveniji ukvarjajo s področjem procesiranja naravnega jezika. www.dmfa-zaloznistvo.si Literatura [1] Amebis Presis, dostopno na presis.amebis.si/ prevajanje/, ogled 17. 1. 2022. [2] Google Translate, dostopno na translate. google.com, ogled 17. 1. 2022. [3] Microsoft Bing, dostopno na www.bing.com/ translator, ogled 17. 1. 2022. [4] NLTK – Natural Language Toolkit, dostopno na www.nltk.org/, ogled 17. 1. 2022. [5] PONS, dostopno na sl.pons.com/prevod- besedisca, ogled 17. 1. 2022. [6] Procesiranje naravnega jezika – GitHub, dostopno na github.com/procesiranje- naravnega-jezika, ogled 18. 1. 2022. [7] Seznam blokiranih besed za slovenščino – GitHub, dostopno na github.com/stopwords-iso/ stopwords-sl, ogled 17. 1. 2022. [8] Seznam blokiranih besed za slovenščino – Wi- kiversity, dostopno na sl.wikiversity.org/ wiki/Seznam_slovenskih_praznih_besed_ za_izdelavo_besednega_oblaka, ogled 17. 1. 2022. [9] N. Ljubešić in K. Dobrovoljc, What does Neu- ral Bring? Analysing Improvements in Morpho- syntactic Annotation and Lemmatisation of Slove- nian, Croatian and Serbian, Proceedings of the 7th Workshop on Balto-Slavic Natural Language Processing, Florence, Italy, 2019, Association for Computational Linguistics, 29–34. [10] R. Řehůřek in P. Sojka, Software Framework for Topic Modelling with Large Corpora, Proceedings of the LREC 2010 Workshop on New Challenges for NLP Frameworks, Valletta, Malta, 2010, ELRA, 45–50. ××× www.presek.si