/* Stemmer for Serbian language, based on: * * Ljubesic, Nikola. Pandzic, Ivan. Stemmer for Croatian * http://nlp.ffzg.hr/resources/tools/stemmer-for-croatian/ * * authors: Stefan Petkovic and Dragan Ivanovic * emails: petkovic8 at gmail.com and dragan.ivanovic at uns.ac.rs * version: 1.0 (20.04.2019) */ routines ( cyr_to_lat prelude mark_regions R1 Step_1 Step_2 Step_3 ) externals ( stem ) booleans ( no_diacritics ) integers ( p1 ) groupings ( v ca sa rg ) stringescapes {} /* special characters - Unicode codepoints */ /* serbian cyrillic */ stringdef cyrA '{U+0430}' stringdef cyrB '{U+0431}' stringdef cyrV '{U+0432}' stringdef cyrG '{U+0433}' stringdef cyrD '{U+0434}' stringdef cyrDx '{U+0452}' stringdef cyrE '{U+0435}' stringdef cyrZh '{U+0436}' stringdef cyrZ '{U+0437}' stringdef cyrI '{U+0438}' stringdef cyrJ '{U+0458}' stringdef cyrK '{U+043A}' stringdef cyrL '{U+043B}' stringdef cyrLJ '{U+0459}' stringdef cyrM '{U+043C}' stringdef cyrN '{U+043D}' stringdef cyrNJ '{U+045A}' stringdef cyrO '{U+043E}' stringdef cyrP '{U+043F}' stringdef cyrR '{U+0440}' stringdef cyrS '{U+0441}' stringdef cyrT '{U+0442}' stringdef cyrCy '{U+045B}' stringdef cyrU '{U+0443}' stringdef cyrF '{U+0444}' stringdef cyrH '{U+0445}' stringdef cyrC '{U+0446}' stringdef cyrCx '{U+0447}' stringdef cyrDzx '{U+045F}' stringdef cyrSx '{U+0448}' /* serbian latin with diacritics */ stringdef cv '{U+010D}' // small c with caron stringdef c' '{U+0107}' // small c with acute stringdef zv '{U+017E}' // small z with caron stringdef sv '{U+0161}' // small s with caron stringdef d/ '{U+0111}' // small d with stroke define v 'aeiou' define sa '{cv}{c'}{zv}{sv}{d/}' define ca 'bvgdzjklmnprstfhc' + sa define rg 'r' define cyr_to_lat as ( do repeat goto ( [substring] among ( '{cyrA}' (<- 'a') '{cyrB}' (<- 'b') '{cyrV}' (<- 'v') '{cyrG}' (<- 'g') '{cyrD}' (<- 'd') '{cyrDx}' (<- '{d/}') '{cyrE}' (<- 'e') '{cyrZh}' (<- '{zv}') '{cyrZ}' (<- 'z') '{cyrI}' (<- 'i') '{cyrJ}' (<- 'j') '{cyrK}' (<- 'k') '{cyrL}' (<- 'l') '{cyrLJ}' (<- 'lj') '{cyrM}' (<- 'm') '{cyrN}' (<- 'n') '{cyrNJ}' (<- 'nj') '{cyrO}' (<- 'o') '{cyrP}' (<- 'p') '{cyrR}' (<- 'r') '{cyrS}' (<- 's') '{cyrT}' (<- 't') '{cyrCy}' (<- '{c'}') '{cyrU}' (<- 'u') '{cyrF}' (<- 'f') '{cyrH}' (<- 'h') '{cyrC}' (<- 'c') '{cyrCx}' (<- '{cv}') '{cyrDzx}' (<- 'd{zv}') '{cyrSx}' (<- '{sv}') ) ) ) define prelude as ( do repeat goto ( ca ['ije'] ca <- 'e' ) do repeat goto ( ca ['je'] ca <- 'e' ) do repeat goto ( ['dj'] <- '{d/}' ) ) define mark_regions as ( set no_diacritics do ( gopast sa unset no_diacritics ) $p1 = limit do ( gopast v setmark p1 ($p1 < 2) ( gopast non-v setmark p1 ) ) do ( gopast 'r' $(cursor >= 2) or (gopast non-rg) $(p1 - cursor > 1) setmark p1 ) ) backwardmode ( define R1 as $p1 <= cursor define Step_1 as ( [substring] among ( 'lozi' 'lozima' (<-'loga') 'pesi' 'pesima' (<-'peh') 'vojci' (<-'vojka') 'bojci' (<-'bojka') 'jaci' 'jacima' (<-'jak') '{cv}ajan' (<-'{cv}ajni') 'cajan' (no_diacritics <-'cajni') 'eran' (<-'erni') 'laran' (<-'larni') 'esan' (<-'esni') 'anjac' (<-'anjca') 'ajac' 'ajaca' (<-'ajca') 'ljaca' 'ljac' (<-'ljca') 'ejac' 'ejaca' (<-'ejca') 'ojac' 'ojaca' (<-'ojca') 'ajaka' (<-'ajka') 'ojaka' (<-'ojka') '{sv}aca' '{sv}ac' (<-'{sv}ca') 'inzima' 'inzi' (<-'ing') 'tvenici' (<-'tvenik') 'tetici' 'teticima' (<-'tetika') 'nstava' (<-'nstva') 'nicima' (<-'nik') 'ticima' (<-'tik') 'zicima' (<-'zik') 'snici' (<-'snik') 'kuse' (<-'kusi') 'kusan' (<-'kusni') 'kustava' (<-'kustva') 'du{sv}an' (<-'du{sv}ni') 'dusan' (no_diacritics <-'dusni') 'antan' (<-'antni') 'bilan' (<-'bilni') 'tilan' (<-'tilni') 'avilan' (<-'avilni') 'silan' (<-'silni') 'gilan' (<-'gilni') 'rilan' (<-'rilni') 'nilan' (<-'nilni') 'alan' (<-'alni') 'ozan' (<-'ozni') 'rave' (<-'ravi') 'stavan' (<-'stavni') 'pravan' (<-'pravni') 'tivan' (<-'tivni') 'sivan' (<-'sivni') 'atan' (<-'atni') 'enat' (<-'enta') 'tetan' (<-'tetni') 'pletan' (<-'pletni') '{sv}ave' (<-'{sv}avi') 'save' (no_diacritics <-'savi') 'anata' (<-'anta') 'a{cv}ak' 'a{cv}aka' (<-'a{cv}ka') 'acak' 'acaka' (no_diacritics <-'acka') 'u{sv}ak' (<-'u{sv}ka') 'usak' (no_diacritics <-'uska') 'atak' 'ataka' 'atci' 'atcima' (<-'atka') 'etak' 'etaka' (<-'etka') 'itak' 'itaka' 'itci' (<-'itka') 'otak' 'otaka' (<-'otka') 'utak' 'utaka' 'utci' 'utcima' (<-'utka') 'eskan' (<-'eskna') 'ti{cv}an' (<-'ti{cv}ni') 'tican' (no_diacritics <-'ticni') 'ojsci' (<-'ojska') 'esama' (<-'esma') 'metar' 'metara' (<-'metra') 'centar' 'centara' (<-'centra') 'istar' 'istara' (<-'istra') 'o{sv}{c'}u' (<-'osti') 'oscu' (no_diacritics <-'osti') 'daba' (<-'dba') '{cv}cima' '{cv}ci' (<-'{cv}ka') 'mac' 'maca' (<-'mca') 'naca' 'nac' (<-'nca') 'voljan' (<-'voljni') 'anaka' (<-'anki') 'vac' 'vaca' (<-'vca') 'saca' 'sac' (<-'sca') 'raca' 'rac' (<-'rca') 'aoca' 'alaca' 'alac' (<-'alca') 'elaca' 'elac' (<-'elca') 'olaca' 'olac' 'olce' (<-'olca') 'njac' 'njaca' (<-'njca') 'ekata' 'ekat' (<-'ekta') 'izam' 'izama' (<-'izma') 'jebe' (<-'jebi') 'baci' (<-'baci') 'a{sv}an' (<-'a{sv}ni') 'asan' (no_diacritics <-'asni') ) ) define Step_2 as ( [substring] R1 among ( 'skijima' 'skijega' 'skijemu' 'skijem' 'skega' 'skemu' 'skem' 'skijim' 'skijih' 'skijoj' 'skijeg' 'skiji' 'skije' 'skija' 'skoga' 'skome' 'skomu' 'skima' 'skog' 'skom' 'skim' 'skih' 'skoj' 'ski' 'ske' 'sko' 'ska' 'sku' (<-'sk') '{sv}kijima' '{sv}kijega' '{sv}kijemu' '{sv}kijem' '{sv}kega' '{sv}kemu' '{sv}kem' '{sv}kijim' '{sv}kijih' '{sv}kijoj' '{sv}kijeg' '{sv}kiji' '{sv}kije' '{sv}kija' '{sv}koga' '{sv}kome' '{sv}komu' '{sv}kima' '{sv}kog' '{sv}kom' '{sv}kim' '{sv}kih' '{sv}koj' '{sv}ki' '{sv}ke' '{sv}ko' '{sv}ka' '{sv}ku' (<-'{sv}k') 'stvima' 'stvom' 'stvo' 'stva' 'stvu' (<-'stv') '{sv}tvima' '{sv}tvom' '{sv}tvo' '{sv}tva' '{sv}tvu' (<-'{sv}tv') 'tanijama' 'tanijima' 'tanijom' 'tanija' 'taniju' 'tanije' 'taniji' (<-'tanij') 'manijama' 'manijima' 'manijom' 'manija' 'maniju' 'manije' 'maniji' (<-'manij') 'panijama' 'panijima' 'panijom' 'panija' 'paniju' 'panije' 'paniji' (<-'panij') 'ranijama' 'ranijima' 'ranijom' 'ranija' 'raniju' 'ranije' 'raniji' (<-'ranij') 'ganijama' 'ganijima' 'ganijom' 'ganija' 'ganiju' 'ganije' 'ganiji' (<-'ganij') 'aninom' 'anina' 'aninu' 'anine' 'anima' 'anin' 'anom' 'anu' 'ani' 'ana' 'ane' (<-'an') 'inima' 'inama' 'inom' 'ina' 'ine' 'ini' 'inu' 'ino' (<-'in') 'onovima' 'onova' 'onove' 'onovi' 'onima' 'onom' 'ona' 'one' 'oni' 'onu' (<-'on') 'nijima' 'nijega' 'nijemu' 'nijeg' 'nijem' 'nega' 'nemu' 'neg' 'nem' 'nijim' 'nijih' 'nijoj' 'niji' 'nije' 'nija' 'niju' 'nima' 'nome' 'nomu' 'noga' 'noj' 'nom' 'nih' 'nim' 'nog' 'no' 'ne' 'na' 'nu' 'ni' (<-'n') 'a{c'}oga' 'a{c'}ome' 'a{c'}omu' 'a{c'}ega' 'a{c'}emu' 'a{c'}ima' 'a{c'}oj' 'a{c'}ih' 'a{c'}om' 'a{c'}eg' 'a{c'}em' 'a{c'}og' 'a{c'}uh' 'a{c'}im' 'a{c'}e' 'a{c'}a' (<-'a{c'}') 'e{c'}oga' 'e{c'}ome' 'e{c'}omu' 'e{c'}ega' 'e{c'}emu' 'e{c'}ima' 'e{c'}oj' 'e{c'}ih' 'e{c'}om' 'e{c'}eg' 'e{c'}em' 'e{c'}og' 'e{c'}uh' 'e{c'}im' 'e{c'}e' 'e{c'}a' (<-'e{c'}') 'u{c'}oga' 'u{c'}ome' 'u{c'}omu' 'u{c'}ega' 'u{c'}emu' 'u{c'}ima' 'u{c'}oj' 'u{c'}ih' 'u{c'}om' 'u{c'}eg' 'u{c'}em' 'u{c'}og' 'u{c'}uh' 'u{c'}im' 'u{c'}e' 'u{c'}a' (<-'u{c'}') 'ugovima' 'ugovi' 'ugove' 'ugova' (<-'ugov') 'ugama' 'ugom' 'uga' 'uge' 'ugi' 'ugu' 'ugo' (<-'ug') 'logama' 'logom' 'loga' 'logu' 'loge' (<-'log') 'govima' 'gama' 'govi' 'gove' 'gova' 'gom' 'ga' 'ge' 'gi' 'gu' 'go' (<-'g') 'rarijem' 'rarija' 'rariju' 'rario' (<-'rari') 'otijem' 'otija' 'otiju' 'otio' (<-'oti') 'sijem' 'sija' 'siju' 'sio' (<-'si') 'lijem' 'lija' 'liju' 'lio' (<-'li') 'uju{c'}i' 'ujemo' 'ujete' 'ujmo' 'ujem' 'uje{sv}' 'uje' 'uju' (<-'uj') 'cajevima' 'cajevi' 'cajeva' 'cajeve' 'cajama' 'cajima' 'cajem' 'caja' 'caje' 'caji' 'caju' (<-'caj') '{cv}ajevima' '{cv}ajevi' '{cv}ajeva' '{cv}ajeve' '{cv}ajama' '{cv}ajima' '{cv}ajem' '{cv}aja' '{cv}aje' '{cv}aji' '{cv}aju' (<-'{cv}aj') '{c'}ajevima' '{c'}ajevi' '{c'}ajeva' '{c'}ajeve' '{c'}ajama' '{c'}ajima' '{c'}ajem' '{c'}aja' '{c'}aje' '{c'}aji' '{c'}aju' (<-'{c'}aj') '{d/}ajevima' '{d/}ajevi' '{d/}ajeva' '{d/}ajeve' '{d/}ajama' '{d/}ajima' '{d/}ajem' '{d/}aja' '{d/}aje' '{d/}aji' '{d/}aju' (<-'{d/}aj') 'lajevima' 'lajevi' 'lajeva' 'lajeve' 'lajama' 'lajima' 'lajem' 'laja' 'laje' 'laji' 'laju' (<-'laj') 'rajevima' 'rajevi' 'rajeva' 'rajeve' 'rajama' 'rajima' 'rajem' 'raja' 'raje' 'raji' 'raju' (<-'raj') 'bijima' 'bijama' 'bijom' 'bija' 'bije' 'biji' 'biju' 'bijo' (<-'bij') 'cijima' 'cijama' 'cijom' 'cija' 'cije' 'ciji' 'ciju' 'cijo' (<-'cij') 'dijima' 'dijama' 'dijom' 'dija' 'dije' 'diji' 'diju' 'dijo' (<-'dij') 'lijima' 'lijama' 'lijom' 'lije' 'liji' 'lijo' (<-'lij') 'nijama' 'nijom' 'nijo' (<-'nij') 'mijima' 'mijama' 'mijom' 'mija' 'mije' 'miji' 'miju' 'mijo' (<-'mij') '{zv}ijima' '{zv}ijama' '{zv}ijom' '{zv}ija' '{zv}ije' '{zv}iji' '{zv}iju' '{zv}ijo' (<-'{zv}ij') 'gijima' 'gijama' 'gijom' 'gija' 'gije' 'giji' 'giju' 'gijo' (<-'gij') 'fijima' 'fijama' 'fijom' 'fija' 'fije' 'fiji' 'fiju' 'fijo' (<-'fij') 'pijima' 'pijama' 'pijom' 'pija' 'pije' 'piji' 'piju' 'pijo' (<-'pij') 'rijima' 'rijama' 'rijom' 'rija' 'rije' 'riji' 'riju' 'rijo' (<-'rij') 'sijima' 'sijama' 'sijom' 'sije' 'siji' 'sijo' (<-'sij') 'tijima' 'tijama' 'tijom' 'tija' 'tije' 'tiji' 'tiju' 'tijo' (<-'tij') 'zijima' 'zijama' 'zijom' 'zija' 'zije' 'ziji' 'ziju' 'zijo' (<-'zij') 'nalima' 'nalama' 'nalom' 'nala' 'nale' 'nali' 'nalu' 'nalo' (<-'nal') 'ijalima' 'ijalama' 'ijalom' 'ijala' 'ijale' 'ijali' 'ijalu' 'ijalo' (<-'ijal') 'ozilima' 'ozilom' 'ozila' 'ozile' 'ozilu' 'ozili' (<-'ozil') 'olovima' 'olovi' 'olova' 'olove' (<-'olov') 'olima' 'olom' 'ola' 'olu' 'ole' 'oli' (<-'ol') 'lemama' 'lemima' 'lemom' 'lema' 'leme' 'lemi' 'lemu' 'lemo' (<-'lem') 'ramama' 'ramom' 'rama' 'rame' 'rami' 'ramu' 'ramo' (<-'ram') 'arama' 'arima' 'arom' 'aru' 'ara' 'are' 'ari' (<-'ar') 'drama' 'drima' 'drom' 'dru' 'dra' 'dre' 'dri' (<-'dr') 'erama' 'erima' 'erom' 'eru' 'era' 'ere' 'eri' (<-'er') 'orama' 'orima' 'orom' 'oru' 'ora' 'ore' 'ori' (<-'or') 'esima' 'esom' 'ese' 'esa' 'esu' (<-'es') 'isima' 'isom' 'ise' 'isa' 'isu' (<-'is') 'ta{sv}ama' 'ta{sv}ima' 'ta{sv}om' 'ta{sv}em' 'ta{sv}a' 'ta{sv}u' 'ta{sv}i' 'ta{sv}e' (<-'ta{sv}') 'na{sv}ama' 'na{sv}ima' 'na{sv}om' 'na{sv}em' 'na{sv}a' 'na{sv}u' 'na{sv}i' 'na{sv}e' (<-'na{sv}') 'ja{sv}ama' 'ja{sv}ima' 'ja{sv}om' 'ja{sv}em' 'ja{sv}a' 'ja{sv}u' 'ja{sv}i' 'ja{sv}e' (<-'ja{sv}') 'ka{sv}ama' 'ka{sv}ima' 'ka{sv}om' 'ka{sv}em' 'ka{sv}a' 'ka{sv}u' 'ka{sv}i' 'ka{sv}e' (<-'ka{sv}') 'ba{sv}ama' 'ba{sv}ima' 'ba{sv}om' 'ba{sv}em' 'ba{sv}a' 'ba{sv}u' 'ba{sv}i' 'ba{sv}e' (<-'ba{sv}') 'ga{sv}ama' 'ga{sv}ima' 'ga{sv}om' 'ga{sv}em' 'ga{sv}a' 'ga{sv}u' 'ga{sv}i' 'ga{sv}e' (<-'ga{sv}') 'va{sv}ama' 'va{sv}ima' 'va{sv}om' 'va{sv}em' 'va{sv}a' 'va{sv}u' 'va{sv}i' 'va{sv}e' (<-'va{sv}') 'e{sv}ima' 'e{sv}ama' 'e{sv}om' 'e{sv}em' 'e{sv}i' 'e{sv}e' 'e{sv}a' 'e{sv}u' (<-'e{sv}') 'i{sv}ima' 'i{sv}ama' 'i{sv}om' 'i{sv}em' 'i{sv}i' 'i{sv}e' 'i{sv}a' 'i{sv}u' (<-'i{sv}') 'ikatima' 'ikatom' 'ikata' 'ikate' 'ikati' 'ikatu' 'ikato' (<-'ikat') 'latima' 'latom' 'lata' 'late' 'lati' 'latu' 'lato' (<-'lat') 'etama' 'etima' 'etom' 'eta' 'ete' 'eti' 'etu' 'eto' (<-'et') 'estima' 'estama' 'estom' 'esta' 'este' 'esti' 'estu' 'esto' (<-'est') 'istima' 'istama' 'istom' 'ista' 'iste' 'isti' 'istu' 'isto' (<-'ist') 'kstima' 'kstama' 'kstom' 'ksta' 'kste' 'ksti' 'kstu' 'ksto' (<-'kst') 'ostima' 'ostama' 'ostom' 'osta' 'oste' 'osti' 'ostu' 'osto' (<-'ost') 'i{sv}tima' 'i{sv}tem' 'i{sv}ta' 'i{sv}te' 'i{sv}tu' (<-'i{sv}t') 'ovasmo' 'ovaste' 'ovahu' 'ovati' 'ova{sv}e' 'ovali' 'ovala' 'ovale' 'ovalo' 'ovat' 'ovah' 'ovao' (<-'ova') 'avijemu' 'avijima' 'avijega' 'avijeg' 'avijem' 'avemu' 'avega' 'aveg' 'avem' 'avijim' 'avijih' 'avijoj' 'avoga' 'avome' 'avomu' 'avima' 'avama' 'aviji' 'avije' 'avija' 'aviju' 'avim' 'avih' 'avoj' 'avom' 'avog' 'avi' 'ava' 'avu' 'ave' 'avo' (<-'av') 'evijemu' 'evijima' 'evijega' 'evijeg' 'evijem' 'evemu' 'evega' 'eveg' 'evem' 'evijim' 'evijih' 'evijoj' 'evoga' 'evome' 'evomu' 'evima' 'evama' 'eviji' 'evije' 'evija' 'eviju' 'evim' 'evih' 'evoj' 'evom' 'evog' 'evi' 'eva' 'evu' 'eve' 'evo' (<-'ev') 'ivijemu' 'ivijima' 'ivijega' 'ivijeg' 'ivijem' 'ivemu' 'ivega' 'iveg' 'ivem' 'ivijim' 'ivijih' 'ivijoj' 'ivoga' 'ivome' 'ivomu' 'ivima' 'ivama' 'iviji' 'ivije' 'ivija' 'iviju' 'ivim' 'ivih' 'ivoj' 'ivom' 'ivog' 'ivi' 'iva' 'ivu' 'ive' 'ivo' (<-'iv') 'ovijemu' 'ovijima' 'ovijega' 'ovijeg' 'ovijem' 'ovemu' 'ovega' 'oveg' 'ovijim' 'ovijih' 'ovijoj' 'ovoga' 'ovome' 'ovomu' 'ovima' 'oviji' 'ovije' 'ovija' 'oviju' 'ovim' 'ovih' 'ovoj' 'ovom' 'ovog' 'ovi' 'ova' 'ovu' 'ove' 'ovo' (<-'ov') 'movima' 'movom' 'mova' 'movu' 'move' 'movi' (<-'mov') 'lovima' 'lovom' 'lova' 'lovu' 'love' 'lovi' (<-'lov') 'elijemu' 'elijima' 'elijega' 'elijeg' 'elijem' 'elemu' 'elega' 'eleg' 'elem' 'elijim' 'elijih' 'elijoj' 'eloga' 'elome' 'elomu' 'elima' 'eliji' 'elije' 'elija' 'eliju' 'elim' 'elih' 'eloj' 'elom' 'elog' 'eli' 'ela' 'elu' 'ele' 'elo' (<-'el') 'anjijemu' 'anjijima' 'anjijega' 'anjijeg' 'anjijem' 'anjemu' 'anjega' 'anjeg' 'anjem' 'anjijim' 'anjijih' 'anjijoj' 'anjoga' 'anjome' 'anjomu' 'anjima' 'anjiji' 'anjije' 'anjija' 'anjiju' 'anjim' 'anjih' 'anjoj' 'anjom' 'anjog' 'anja' 'anje' 'anji' 'anjo' 'anju' (<-'anj') 'enjijemu' 'enjijima' 'enjijega' 'enjijeg' 'enjijem' 'enjemu' 'enjega' 'enjeg' 'enjem' 'enjijim' 'enjijih' 'enjijoj' 'enjoga' 'enjome' 'enjomu' 'enjima' 'enjiji' 'enjije' 'enjija' 'enjiju' 'enjim' 'enjih' 'enjoj' 'enjom' 'enjog' 'enja' 'enje' 'enji' 'enjo' 'enju' (<-'enj') '{sv}njijemu' '{sv}njijima' '{sv}njijega' '{sv}njijeg' '{sv}njijem' '{sv}njemu' '{sv}njega' '{sv}njeg' '{sv}njem' '{sv}njijim' '{sv}njijih' '{sv}njijoj' '{sv}njoga' '{sv}njome' '{sv}njomu' '{sv}njima' '{sv}njiji' '{sv}njije' '{sv}njija' '{sv}njiju' '{sv}njim' '{sv}njih' '{sv}njoj' '{sv}njom' '{sv}njog' '{sv}nja' '{sv}nje' '{sv}nji' '{sv}njo' '{sv}nju' (<-'{sv}nj') 'anemu' 'anega' 'aneg' 'anem' (<-'an') 'enemu' 'enega' 'eneg' 'enem' (<-'en') '{sv}nemu' '{sv}nega' '{sv}neg' '{sv}nem' (<-'{sv}n') '{cv}inama' '{cv}inome' '{cv}inomu' '{cv}inoga' '{cv}inima' '{cv}inog' '{cv}inom' '{cv}inim' '{cv}inih' '{cv}inoj' '{cv}ina' '{cv}inu' '{cv}ini' '{cv}ino' '{cv}ine' (<-'{cv}in') 'ro{sv}iv{sv}i' 'ro{sv}ismo' 'ro{sv}iste' 'ro{sv}i{sv}e' 'ro{sv}imo' 'ro{sv}ite' 'ro{sv}iti' 'ro{sv}ili' 'ro{sv}ila' 'ro{sv}ilo' 'ro{sv}ile' 'ro{sv}im' 'ro{sv}i{sv}' 'ro{sv}it' 'ro{sv}ih' 'ro{sv}io' (<-'ro{sv}i') 'o{sv}ijemu' 'o{sv}ijima' 'o{sv}ijega' 'o{sv}ijeg' 'o{sv}ijem' 'o{sv}emu' 'o{sv}ega' 'o{sv}eg' 'o{sv}em' 'o{sv}ijim' 'o{sv}ijih' 'o{sv}ijoj' 'o{sv}oga' 'o{sv}ome' 'o{sv}omu' 'o{sv}ima' 'o{sv}iji' 'o{sv}ije' 'o{sv}ija' 'o{sv}iju' 'o{sv}im' 'o{sv}ih' 'o{sv}oj' 'o{sv}om' 'o{sv}og' 'o{sv}i' 'o{sv}a' 'o{sv}u' 'o{sv}e' (<-'o{sv}') 'evitijima' 'evitijega' 'evitijemu' 'evitijem' 'evitega' 'evitemu' 'evitem' 'evitijim' 'evitijih' 'evitijoj' 'evitijeg' 'evitiji' 'evitije' 'evitija' 'evitoga' 'evitome' 'evitomu' 'evitima' 'evitog' 'evitom' 'evitim' 'evitih' 'evitoj' 'eviti' 'evite' 'evito' 'evita' 'evitu' (<-'evit') 'ovitijima' 'ovitijega' 'ovitijemu' 'ovitijem' 'ovitega' 'ovitemu' 'ovitem' 'ovitijim' 'ovitijih' 'ovitijoj' 'ovitijeg' 'ovitiji' 'ovitije' 'ovitija' 'ovitoga' 'ovitome' 'ovitomu' 'ovitima' 'ovitog' 'ovitom' 'ovitim' 'ovitih' 'ovitoj' 'oviti' 'ovite' 'ovito' 'ovita' 'ovitu' (<-'ovit') 'astijima' 'astijega' 'astijemu' 'astijem' 'astega' 'astemu' 'astem' 'astijim' 'astijih' 'astijoj' 'astijeg' 'astiji' 'astije' 'astija' 'astoga' 'astome' 'astomu' 'astima' 'astog' 'astom' 'astim' 'astih' 'astoj' 'asti' 'aste' 'asto' 'asta' 'astu' (<-'ast') 'kijemu' 'kijima' 'kijega' 'kijeg' 'kijem' 'kemu' 'kega' 'keg' 'kem' 'kijim' 'kijih' 'kijoj' 'koga' 'kome' 'komu' 'kima' 'kiji' 'kije' 'kija' 'kiju' 'kim' 'kih' 'koj' 'kom' 'kog' 'kov' 'ki' 'ka' 'ku' 'ke' 'ko' (<-'k') 'evaju{c'}i' 'evasmo' 'evaste' 'evajmo' 'evajte' 'evaju' 'evala' 'evale' 'evali' 'evalo' 'evamo' 'evana' 'evane' 'evani' 'evano' 'evate' 'evati' 'eva{sv}e' 'evahu' 'evah' 'evaj' 'evam' 'evan' 'evao' 'evat' 'evav' 'eva{sv}' (<-'eva') 'avaju{c'}i' 'avasmo' 'avaste' 'avajmo' 'avajte' 'avaju' 'avala' 'avale' 'avali' 'avalo' 'avamo' 'avana' 'avane' 'avani' 'avano' 'avate' 'avati' 'ava{sv}e' 'avahu' 'avah' 'avaj' 'avam' 'avan' 'avao' 'avat' 'avav' 'ava{sv}' (<-'ava') 'ivaju{c'}i' 'ivasmo' 'ivaste' 'ivajmo' 'ivajte' 'ivaju' 'ivala' 'ivale' 'ivali' 'ivalo' 'ivamo' 'ivana' 'ivane' 'ivani' 'ivano' 'ivate' 'ivati' 'iva{sv}e' 'ivahu' 'ivah' 'ivaj' 'ivam' 'ivan' 'ivao' 'ivat' 'ivav' 'iva{sv}' (<-'iva') 'uvaju{c'}i' 'uvasmo' 'uvaste' 'uvajmo' 'uvajte' 'uvaju' 'uvala' 'uvale' 'uvali' 'uvalo' 'uvamo' 'uvana' 'uvane' 'uvani' 'uvano' 'uvate' 'uvati' 'uva{sv}e' 'uvahu' 'uvah' 'uvaj' 'uvam' 'uvan' 'uvao' 'uvat' 'uvav' 'uva{sv}' (<-'uva') 'irujemo' 'irujete' 'iruju{c'}i' 'iraju{c'}i' 'irivat' 'irujem' 'iruje{sv}' 'irujmo' 'irujte' 'irav{sv}i' 'irasmo' 'iraste' 'irati' 'iramo' 'irate' 'iraju' 'ira{sv}e' 'irahu' 'irala' 'iralo' 'irali' 'irale' 'iruje' 'iruju' 'iruj' 'iral' 'iran' 'iram' 'ira{sv}' 'irat' 'irah' 'irao' (<-'ir') 'a{cv}ismo' 'a{cv}iste' 'a{cv}iti' 'a{cv}imo' 'a{cv}ite' 'a{cv}i{sv}e' 'a{cv}e{c'}i' 'a{cv}ila' 'a{cv}ilo' 'a{cv}ili' 'a{cv}ile' 'a{cv}ena' 'a{cv}eno' 'a{cv}eni' 'a{cv}ene' 'a{cv}io' 'a{cv}im' 'a{cv}i{sv}' 'a{cv}it' 'a{cv}ih' 'a{cv}en' 'a{cv}i' 'a{cv}e' (<-'a{cv}') 'a{cv}av{sv}i' 'a{cv}asmo' 'a{cv}aste' 'a{cv}ahu' 'a{cv}ati' 'a{cv}amo' 'a{cv}ate' 'a{cv}a{sv}e' 'a{cv}ala' 'a{cv}alo' 'a{cv}ali' 'a{cv}ale' 'a{cv}aju' 'a{cv}ana' 'a{cv}ano' 'a{cv}ani' 'a{cv}ane' 'a{cv}ao' 'a{cv}am' 'a{cv}a{sv}' 'a{cv}at' 'a{cv}ah' 'a{cv}an' (<-'a{cv}a') 'nuv{sv}i' 'nusmo' 'nuste' 'nu{c'}i' 'nimo' 'nite' 'nemo' 'nete' 'nula' 'nulo' 'nule' 'nuli' 'nuto' 'nuti' 'nuta' 'ne{sv}' 'nuo' 'nut' (<-'n') 'niv{sv}i' 'nismo' 'niste' 'niti' 'nila' 'nilo' 'nile' 'nili' 'ni{sv}' 'nio' (<-'ni') 'aju{c'}i' 'av{sv}i' 'asmo' 'ajmo' 'ajte' 'ajem' 'aloj' 'amo' 'ate' 'aje' 'aju' 'ati' 'a{sv}e' 'ahu' 'ala' 'ali' 'ale' 'alo' 'ano' 'at' 'ah' 'ao' 'aj' 'an' 'am' 'a{sv}' (<-'a') 'uraju{c'}i' 'urasmo' 'uraste' 'urajmo' 'urajte' 'uramo' 'urate' 'uraju' 'urati' 'ura{sv}e' 'urahu' 'urala' 'urali' 'urale' 'uralo' 'urana' 'urano' 'urani' 'urane' 'ural' 'urat' 'urah' 'urao' 'uraj' 'uran' 'uram' 'ura{sv}' (<-'ur') 'astajasmo' 'astajaste' 'astajahu' 'astajati' 'astajemo' 'astajete' 'astaja{sv}e' 'astajali' 'astaju{c'}i' 'astajala' 'astajalo' 'astajale' 'astajmo' 'astajao' 'astajem' 'astaje{sv}' 'astajat' 'astajah' 'astajte' 'astaje' 'astaju' (<-'astaj') 'istajasmo' 'istajaste' 'istajahu' 'istajati' 'istajemo' 'istajete' 'istaja{sv}e' 'istajali' 'istaju{c'}i' 'istajala' 'istajalo' 'istajale' 'istajmo' 'istajao' 'istajem' 'istaje{sv}' 'istajat' 'istajah' 'istajte' 'istaje' 'istaju' (<-'istaj') 'ostajasmo' 'ostajaste' 'ostajahu' 'ostajati' 'ostajemo' 'ostajete' 'ostaja{sv}e' 'ostajali' 'ostaju{c'}i' 'ostajala' 'ostajalo' 'ostajale' 'ostajmo' 'ostajao' 'ostajem' 'ostaje{sv}' 'ostajat' 'ostajah' 'ostajte' 'ostaje' 'ostaju' (<-'ostaj') 'alama' 'alima' 'alom' 'alu' 'al' (<-'a') 'ajevima' 'ajevi' 'ajeva' 'ajeve' 'ajama' 'ajima' 'aja' 'aji' (<-'aj') 'astadosmo' 'astadoste' 'astado{sv}e' 'astanemo' 'astademo' 'astanete' 'astadete' 'astanimo' 'astanite' 'astanila' 'astav{sv}i' 'astanem' 'astadem' 'astane{sv}' 'astade{sv}' 'astadoh' 'astade' 'astati' 'astane' 'astanu' 'astadu' 'astala' 'astali' 'astalo' 'astale' 'astat' 'astao' (<-'asta') 'istadosmo' 'istadoste' 'istado{sv}e' 'istanemo' 'istademo' 'istanete' 'istadete' 'istanimo' 'istanite' 'istanila' 'istav{sv}i' 'istanem' 'istadem' 'istane{sv}' 'istade{sv}' 'istadoh' 'istade' 'istati' 'istane' 'istanu' 'istadu' 'istala' 'istali' 'istalo' 'istale' 'istat' 'istao' (<-'ista') 'ostadosmo' 'ostadoste' 'ostado{sv}e' 'ostanemo' 'ostademo' 'ostanete' 'ostadete' 'ostanimo' 'ostanite' 'ostanila' 'ostav{sv}i' 'ostanem' 'ostadem' 'ostane{sv}' 'ostade{sv}' 'ostadoh' 'ostade' 'ostati' 'ostane' 'ostanu' 'ostadu' 'ostala' 'ostali' 'ostalo' 'ostale' 'ostat' 'ostao' (<-'osta') 'tasmo' 'taste' 'tajmo' 'tajte' 'tav{sv}i' 'tati' 'tamo' 'tate' 'taju' 'tala' 'talo' 'tale' 'tali' 'tana' 'tano' 'tani' 'tane' 'tan' 'taj' 'tao' 'tam' 'ta{sv}' 'tat' 'tah' (<-'ta') 'injasmo' 'injaste' 'injati' 'injemo' 'injete' 'injali' 'injala' 'injalo' 'injale' 'inja{sv}e' 'injahu' 'injem' 'inje{sv}' 'injat' 'injah' 'injao' (<-'inj') 'astemo' 'astete' 'astimo' 'astite' 'astu{c'}i' 'aste{sv}' 'asli' 'asla' 'aslo' 'asle' (<-'as') 'iv{sv}i' 'ie{c'}i' 'ismo' 'imo' 'ite' 'iti' 'ili' 'ila' 'ilo' 'ile' 'im' 'i{sv}' 'it' 'ih' 'io' (<-'i') 'ijemo' 'ijete' 'ijem' 'ije{sv}' 'ijmo' 'ijte' 'iju' 'ije' 'ij' 'ilu' (<-'i') 'lu{cv}ujete' 'lu{cv}uju{c'}i' 'lu{cv}ujemo' 'lu{cv}ujem' 'lu{cv}uje{sv}' 'lu{cv}ismo' 'lu{cv}iste' 'lu{cv}ujmo' 'lu{cv}ujte' 'lu{cv}uje' 'lu{cv}uju' 'lu{cv}i{sv}e' 'lu{cv}iti' 'lu{cv}imo' 'lu{cv}ite' 'lu{cv}ila' 'lu{cv}ilo' 'lu{cv}ili' 'lu{cv}ile' 'lu{cv}ena' 'lu{cv}eno' 'lu{cv}eni' 'lu{cv}ene' 'lu{cv}uj' 'lu{cv}io' 'lu{cv}en' 'lu{cv}im' 'lu{cv}i{sv}' 'lu{cv}it' 'lu{cv}ih' 'lu{cv}e' 'lu{cv}i' (<-'lu{cv}') 'jetismo' 'jetiste' 'jeti{sv}e' 'jetimo' 'jetite' 'jetiti' 'jetili' 'jetila' 'jetilo' 'jetile' 'jetim' 'jeti{sv}' 'jetit' 'jetih' 'jetio' (<-'jeti') 'emo' 'em' 'e{sv}' 'elama' 'el' (<-'e') 'ilama' 'ilima' 'ilom' 'il' (<-'i') 'atijega' 'atijemu' 'atijima' 'atijeg' 'atijem' 'atega' 'atemu' 'ateg' 'atem' 'atijih' 'atijim' 'atima' 'atoga' 'atome' 'atomu' 'atiji' 'atije' 'atija' 'atiju' 'atoj' 'atog' 'atom' 'atim' 'atih' 'ata' 'atu' 'ato' (<-'at') 'etav{sv}i' 'etu{c'}i' 'etemo' 'etimo' 'etem' 'ete{sv}' (<-'et') 'lucujuci' 'lucujemo' 'lucujete' 'lucujem' 'lucujes' 'lucujmo' 'lucujte' 'lucismo' 'luciste' 'luciti' 'lucite' 'lucise' 'lucuje' 'lucuju' 'lucila' 'lucile' 'lucili' 'lucilo' 'lucena' 'luceni' 'lucene' 'luceno' 'lucimo' 'lucim' 'lucis' 'lucih' 'lucit' 'lucio' 'lucuj' 'lucen' 'luce' 'luci' (no_diacritics <-'luc') 'snjijima' 'snjijemu' 'snjijega' 'snjijim' 'snjijih' 'snjijeg' 'snjijoj' 'snjiji' 'snjija' 'snjije' 'snjiju' 'snjima' 'snjemu' 'snjomu' 'snjome' 'snjega' 'snjoga' 'snjih' 'snjim' 'snjem' 'snjom' 'snjeg' 'snjog' 'snjoj' 'snja' 'snje' 'snji' 'snjo' 'snju' (no_diacritics <-'snj') 'osijima' 'osijemu' 'osijega' 'snjijem' 'osijih' 'osijim' 'osijem' 'osijeg' 'osijoj' 'osima' 'osemu' 'osomu' 'osome' 'osega' 'osoga' 'osija' 'osije' 'osiji' 'osiju' 'osih' 'osim' 'osem' 'osom' 'oseg' 'osog' 'osoj' 'osa' 'ose' 'osi' 'osu' (no_diacritics <-'os') 'acismo' 'aciste' 'acima' 'acimo' 'acome' 'acomu' 'acite' 'aciti' 'acise' 'acila' 'acile' 'acili' 'acilo' 'acega' 'acene' 'aceci' 'aceni' 'acemu' 'acena' 'aceno' 'acoga' 'acoj' 'acih' 'acem' 'acom' 'acen' 'acog' 'acit' 'acio' 'aceg' 'acim' 'acuh' 'acis' 'ace' 'aca' 'aci' (no_diacritics <-'ac') 'ecome' 'ecoga' 'ecemu' 'ecima' 'ecega' 'ecomu' 'ecoj' 'ecuh' 'ecom' 'ecog' 'eceg' 'ecih' 'ecem' 'ecim' 'eca' 'ece' (no_diacritics <-'ec') 'ucomu' 'ucome' 'ucima' 'ucoga' 'ucega' 'ucemu' 'ucih' 'ucog' 'uceg' 'ucom' 'ucem' 'ucim' 'ucuh' 'ucoj' 'uca' 'uce' (no_diacritics <-'uc') 'rosismo' 'rosivsi' 'rosiste' 'rositi' 'rosili' 'rosise' 'rosite' 'rosilo' 'rosimo' 'rosile' 'rosila' 'rosit' 'rosis' 'rosio' 'rosim' 'rosih' (no_diacritics <-'rosi') 'acavsi' 'acaste' 'acasmo' 'acaju' 'acane' 'acate' 'acali' 'acani' 'acati' 'acale' 'acahu' 'acase' 'acano' 'acamo' 'acalo' 'acana' 'acala' 'acam' 'acan' 'acao' 'acas' 'acat' 'acah' (no_diacritics <-'aca') 'jasima' 'jasama' 'jasem' 'jasom' 'jase' 'jasi' 'jasa' 'jasu' (no_diacritics <-'jas') 'tasima' 'tasama' 'tasem' 'tasom' 'tase' 'tasa' 'tasu' 'tasi' (no_diacritics <-'tas') 'gasima' 'gasama' 'gasem' 'gasom' 'gasi' 'gasu' 'gase' 'gasa' (no_diacritics <-'gas') 'nasama' 'nasima' 'nasem' 'nasom' 'nasu' 'nasi' 'nase' 'nasa' (no_diacritics <-'nas') 'kasama' 'kasima' 'kasom' 'kasem' 'kasi' 'kasu' 'kase' 'kasa' (no_diacritics <-'kas') 'vasama' 'vasima' 'vasom' 'vasem' 'vasi' 'vase' 'vasa' 'vasu' (no_diacritics <-'vas') 'basama' 'basima' 'basom' 'basem' 'basi' 'base' 'basu' 'basa' (no_diacritics <-'bas') 'astuci' 'astes' (no_diacritics <-'as') 'cinima' 'cinome' 'cinama' 'cinomu' 'cinoga' 'cinom' 'cinih' 'cinim' 'cinog' 'cinoj' 'cino' 'cini' 'cinu' 'cine' 'cina' (no_diacritics <-'cin') 'astajase' 'astajuci' 'astajes' (no_diacritics <-'astaj') 'istajase' 'istajuci' 'istajes' (no_diacritics <-'istaj') 'ostajase' 'ostajuci' 'ostajes' (no_diacritics <-'ostaj') 'astadose' 'astades' 'astanes' 'astavsi' (no_diacritics <-'asta') 'istadose' 'istades' 'istanes' 'istavsi' (no_diacritics <-'ista') 'ostadose' 'ostades' 'ostanes' 'ostavsi' (no_diacritics <-'osta') 'avajuci' 'avase' 'avas' (no_diacritics <-'ava') 'evajuci' 'evase' 'evas' (no_diacritics <-'eva') 'ivajuci' 'ivase' 'ivas' (no_diacritics <-'iva') 'uvajuci' 'uvase' 'uvas' (no_diacritics <-'uva') 'ovase' (no_diacritics <-'ova') 'jetise' 'jetis' (no_diacritics <-'jeti') 'injase' 'injes' (no_diacritics <-'inj') 'istem' (no_diacritics <-'ist') 'esama' 'esem' 'esi' (no_diacritics <-'es') 'etavsi' 'etuci' 'etes' (no_diacritics <-'et') 'isama' 'isem' 'isi' (no_diacritics <-'is') 'irajuci' 'irujuci' 'irujes' 'iravsi' 'irase' 'iras' (no_diacritics <-'ir') 'urajuci' 'urase' 'uras' (no_diacritics <-'ur') 'ujuci' 'ujes' (no_diacritics <-'uj') 'nivsi' 'nis' (no_diacritics <-'ni') 'snega' 'snemu' 'snem' 'sneg' (no_diacritics <-'sn') 'tavsi' 'tas' (no_diacritics <-'ta') 'ajuci' 'avsi' 'ase' 'as' (no_diacritics <-'a') 'ijes' 'ivsi' 'ieci' 'is' (no_diacritics <-'i') 'es' (no_diacritics <-'e') 'nuvsi' 'nuci' 'nes' (no_diacritics <-'n') ) ) define Step_3 as ( [substring] R1 among ( 'enom' 'enoj' 'enog' 'enim' 'enih' 'anoj' 'anog' 'anim' 'anih' 'ost' 'eno' 'eni' 'oga' 'ima' 'enu' 'ena' 'ama' 'ano' 'ani' 'om' 'og' 'u' 'o' 'i' 'e' 'a' (<-'') ) ) ) define stem as ( do cyr_to_lat do prelude do mark_regions backwards ( do Step_1 do (Step_2 or Step_3) ) )