| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| externals ( stem ) |
| /* Special characters in Unicode Latin-1 and Latin Extended-A */ |
| // ' nosine |
| stringdef a' decimal '261' // ą a + ogonek |
| stringdef e' decimal '281' // ę e + ogonek |
| stringdef i' decimal '303' // į i + ogonek |
| stringdef u' decimal '371' // ų u + ogonek |
| |
| // . taskas |
| stringdef e. decimal '279' // ė e + dot |
| |
| // - ilgoji |
| stringdef u- decimal '363' // ū u + macron |
| |
| // * varnele |
| stringdef c* decimal '269' // č c + caron (haček) |
| stringdef s* decimal '353' // š s + caron (haček) |
| stringdef z* decimal '382' // ž z + caron (haček) |
| |
| // [C](VC)^m[V|C] |
| // definitions of variables for |
| // p1 - position of m = 0 |
| // p2 - position of m = 1 |
| integers ( p1 p2 s) |
| |
| // booleans - to be commented |
| // CHANGE |
| booleans ( CHANGE ) |
| |
| // escape symbols for substituting lithuanian characters |
| stringescapes { } |
| |
| // groupings |
| // v - lithuanian vowels |
| groupings ( v ) |
| |
| // v - all lithuanian vowels |
| define v 'aeiyou{a'}{e'}{i'}{u'}{e.}{u-}' |
| |
| // all lithuanian stemmer routines: 4 steps |
| routines ( |
| step2 R1 step1 fix_chdz fix_gd fix_conflicts |
| ) |
| |
| backwardmode( |
| |
| define R1 as $p1 <= cursor |
| define step1 as ( |
| setlimit tomark p1 for ([substring]) R1 among( |
| // Daiktavardžiai |
| // I linksniuotė |
| 'as' 'ias' 'is' 'ys' // vyras, kelias, brolis, gaidys |
| 'o' 'io' // vyro, kelio |
| 'ui' 'iui' // vyrui, keliui |
| '{a'}' 'i{a'}' '{i'}' // vyrą, kelią, brolį |
| 'u' 'iu' // vyru, keliu |
| 'e' 'yje' // vyre, kelyje |
| 'y' 'au' 'i' // kely, brolau, broli, |
| 'an' // nusižengiman |
| |
| 'ai' 'iai' // vyrai, keliai |
| '{u'}' 'i{u'}' // vyrų, kelių |
| 'ams' 'am' // vyrams, vyram |
| 'iams' 'iam' // broliams, broliam |
| 'us' 'ius' // vyrus, brolius |
| 'ais' 'iais' // vyrais, keliais |
| 'uose' 'iuose' 'uos' 'iuos' // vyruose, keliuose, vyruos, keliuos |
| 'uosna' 'iuosna' // vyruosna, keliuosna |
| 'ysna' // žutysna |
| |
| 'asis' 'aisi' // sukimasis, sukimaisi |
| 'osi' '{u'}si' // sukimosi, sukimųsi |
| 'uisi' // sukimuisi |
| '{a'}si' // sukimąsi |
| 'usi' // sukimusi |
| 'esi' // sukimesi |
| |
| 'uo' // mėnuo |
| |
| |
| // II linksniuote |
| 'a' 'ia' // galva, vysnios |
| 'os' 'ios' // galvos, vysnios |
| 'oj' 'oje' 'ioje' // galvoje, vysnioje |
| 'osna' 'iosna' // galvosna, vyšniosna |
| 'om' 'oms' 'ioms' // galvoms, vysnioms |
| 'omis' 'iomis' // galvomis, vysniomis |
| 'ose' 'iose' // galvose, vysniose |
| 'on' 'ion' // galvon, vyšnion |
| |
| |
| // III linksniuote |
| '{e.}' // gervė |
| '{e.}s' // gervės |
| 'ei' // gervei |
| '{e'}' // gervę |
| '{e.}j' '{e.}je' // gervėj, gervėje |
| '{e.}ms' // gervėms |
| 'es' // gerves |
| '{e.}mis' // gervėmis |
| '{e.}se' // gervėse |
| '{e.}sna' // gervėsna |
| '{e.}n' // žydaitėn |
| |
| |
| // IV linksniuote |
| 'aus' 'iaus' // sūnaus, skaičiaus |
| 'umi' 'iumi' // sūnumi, skaičiumi |
| 'uje' 'iuje' // sūnuje, skaičiuje |
| 'iau' // skaičiau |
| |
| '{u-}s' // sūnūs |
| 'ums' // sūnums |
| 'umis' // sūnumis |
| 'un' 'iun' // sūnun, administratoriun |
| |
| |
| // V linksniuote |
| 'ies' 'ens' 'enio' 'ers' // avies, vandens, sesers |
| 'eniui' 'eriai' // vandeniui, eriai |
| 'en{i'}' 'er{i'}' // vandenį, seserį |
| 'imi' 'eniu' 'erimi' 'eria' // avimi, vandeniu, seserimi, seseria |
| 'enyje' 'eryje' // vandenyje, seseryje |
| 'ie' 'enie' 'erie' // avie, vandenie, seserie |
| |
| 'enys' 'erys' // vandenys, seserys |
| // 'en{u'}' konfliktas su 'žandenų' 'antenų' |
| 'er{u'}' // seserų |
| 'ims' 'enims' 'erims' // avims, vandemins, seserims |
| 'enis' // vandenis |
| 'imis' // žebenkštimis |
| 'enimis' // vandenimis |
| 'yse' 'enyse' 'eryse' // avyse, vandenyse, seseryse |
| |
| |
| // Būdvardžiai |
| // (i)a linksniuotė |
| 'iem' 'iems' // geriem, geriems |
| 'ame' 'iame' // naujame, mediniame |
| |
| |
| // Veiksmažodžiai |
| // Tiesioginė nuosaka |
| // esamasis laikas |
| // (i)a asmenuotė |
| 'uosi' 'iuosi' // dirbuosi, traukiuosi |
| 'iesi' // dirbiesi |
| 'asi' 'iasi' // dirbasi, traukiasi |
| 'am{e.}s' 'iam{e.}s' // dirbamės, traukiamės |
| 'at' 'ate' 'iat' 'iate' // dirbat, dirbate, ariat, traukiate |
| 'at{e.}s' 'iat{e.}s' // dirbatės, traukiatės |
| |
| // i asmenuotė |
| 'isi' // tikisi |
| 'im' // mylim |
| //'ime' konfliktassu daiktavardžiu vietininku, pvz. 'gėrime' |
| 'im{e.}s' // tikimės |
| 'it' 'ite' // mylit, mylite, tikitės |
| // 'it{e.}s' konfliktas su priesaga ir dgs. vardininko galūne -ait-ės pvz. žydaitės |
| |
| // o asmenuotė |
| 'ome' 'omės' // mokome, bijomės |
| 'ot' 'ote' 'otės' // mokot, mokote, bijotės |
| |
| // būtasis laikas |
| // o asmenuotė |
| '{e.}jo' '{e.}josi' // tikėjo, tikėjosi |
| 'ot{e.}s' // tikėjotės |
| |
| // ė asmenuotė |
| 'eisi' // mokeisi |
| '{e.}si' // mokėsi |
| '{e.}m' '{e.}me' // mokėm, mokėme |
| '{e.}m{e.}s' // mokėmės |
| '{e.}t' '{e.}te' // mokėt, mokėte |
| '{e.}t{e.}s' // mokėtės |
| |
| // būtasis dažninis laikas |
| 'ausi' // mokydavausi |
| 'om{e.}s' // mokydavomės |
| |
| |
| // būsimasis laikas |
| 'siu' 'siuosi' // dirbsiu, mokysiuosi |
| 'si' 'siesi' // dirbsi, dirbsiesi |
| 's' 'ysis' // dirbs, mokysis |
| 'sim' 'sime' // dirbsim, dirbsime |
| 'sit' 'site' // gersit, gersite |
| |
| // tariamoji nuosaka |
| '{c*}iau' '{c*}iausi' // dirbčiau |
| 'tum' 'tumei' // dirbtum, dirbtumei |
| 'tumeis' 'tumeisi' // mokytumeis, mokytumeisi |
| // 't{u'}' nes blogai batutų -> batų |
| 't{u'}si' // mokytųsi |
| // 'tume' konfliktas su 'šventume' |
| 'tum{e.}m' // dirbtumėm |
| 'tum{e.}me' // dirbtumėme |
| 'tum{e.}m{e.}s' // mokytumėmės |
| 'tute' 'tum{e.}t' // dirbtute, dirbtumėt |
| 'tum{e.}te' // dirbtumėte |
| 'tum{e.}t{e.}s' // mokytumėtės |
| |
| // liepiamoji nuosaka |
| 'k' 'ki' // dirbk, dirbki, mokykis |
| // 'kis' konfliktas viln-išk-is |
| // 'kime' konfliktas, nes pirkime |
| 'kim{e.}s' // mokykimės |
| |
| // bendratis |
| 'uoti' 'iuoti' // meluoti, dygsniuoti |
| 'auti' 'iauti' // draugauti, girtuokliauti |
| 'oti' 'ioti' // dovanoti, meškerioti |
| '{e.}ti' // auklėti |
| 'yti' // akyti |
| 'inti' // auginti |
| 'in{e.}ti' // blusinėti |
| 'enti' // gyventi |
| 'tel{e.}ti' // bumbtelėti |
| 'ter{e.}ti' // bumbterėti |
| |
| 'ti' // skalbti |
| // 'tis' konfliktas, nes rytme-tis -> rytme |
| |
| // dalyviai |
| '{a'}s' 'i{a'}s' '{i'}s' // dirbąs, žaidžiąs, gulįs |
| 't{u'}s' // suktųs -> suk |
| 'sim{e.}s' // suksimės |
| 'sit{e.}s' // suksitės |
| 'kite' // supkite |
| ) |
| |
| delete |
| ) |
| |
| define step2 as repeat ( |
| setlimit tomark p1 for ([substring]) among( |
| // daiktavardziu priesagos |
| |
| // budvardziu priesagos |
| // 'in' // konfliktas su 'augintinis' ir 'akiniais' // lauk-in-is |
| 'ing' // tvark-ing-as |
| 'i{s*}k' // lenk-išk-as |
| '{e.}t' // dem-ėt-as |
| 'ot' // garban-ot-as |
| 'uot' 'iuot' // lang-uot-as, akin-iuot-as |
| // 'tin', nes augintinis // dirb-tin-is |
| // 'ut', nes batutas, degutas etc. // maž-ut-is |
| 'yt' // maž-yt-is |
| 'iuk' // maž-iuk-as |
| 'iul' // maž-ul-is |
| '{e.}l' // maž-ėl-is |
| 'yl' // maž-yl-is |
| 'u{c*}iuk' // maž-učiuk-as |
| 'uliuk' // maž-uliuk-as |
| 'ut{e.}ait' // maž-utėlait-is |
| 'ok' // did-ok-as |
| 'iok' // višč-iok-as |
| 'sv' '{s*}v' 'zgan' // sal-sv-as, pilk-šv-as, bal-zgan-as |
| 'op' 'iop' // dvej-op-as, viener-iop-as |
| 'ain' // apval-ain-as |
| 'yk{s*}t' 'yk{s*}{c*}' // ten-ykšt-is, vakar-ykšč-ias |
| |
| // laisniai |
| 'esn' // did-esn-is |
| 'aus' 'iaus' // nauj-aus-ias, ger-iaus-ias |
| |
| // ivardziuotiniai budvardziai |
| // vyriska gimine |
| 'ias' // žaliasis |
| 'oj' 'ioj' // gerojo, žaliojo |
| 'aj' 'iaj' // gerajam, žaliajam |
| '{a'}j' 'i{a'}j' // garąjį, žaliąjį |
| 'uoj' 'iuoj' // geruoju, žaliuoju |
| 'iej' // gerieji |
| '{u'}j' 'i{u'}j' // gerųjų, žaliųjų |
| 'ies' // geriesiems |
| 'uos' 'iuos' // geruosius, žaliuosius |
| 'ais' 'iais' // geraisiais, žaliaisiais |
| |
| // moteriska gimine |
| 'os' 'ios' // gerosios, žaliosios |
| '{a'}s' 'i{a'}s' // gerąsios, žaliąsias |
| |
| // būtasis dažninis laikas |
| 'dav' // ei-dav-o |
| |
| // dalyvių priesagos |
| 'ant' 'iant' |
| 'int' // tur-int-is |
| '{e.}j' // tur-ėj-o |
| '{e'}' // |
| '{e.}j{e'}' |
| '{e'}s' // dirb-ęs-is |
| |
| 'siant' // dirb-siant |
| |
| // pusdalyviai |
| 'dam' // bėg-dam-as |
| |
| 'auj' // ūkinink-auj-a |
| 'jam' |
| 'iau' |
| 'am' // baiminim-ams-i |
| ) |
| |
| delete |
| ) |
| |
| define fix_conflicts as ( |
| [substring] among ( |
| // 'lietuvaite' -> 'lietuvaitė', konfliktas su 'myl-ite' |
| 'aite' (<-'ait{e.}' set CHANGE) |
| // 'lietuvaitės' -> 'lietuvaitė', konfliktas su 'myl-itės' |
| 'ait{e.}s' (<-'ait{e.}' set CHANGE) |
| |
| // ''ūs-uotės' -> 'ūs-uotė', konfliktas 'mokotės' |
| 'uot{e.}s' (<-'uot{e.}' set CHANGE) |
| // ''ūs-uote' -> 'ūs-uotė', konfliktas 'mokote' |
| 'uote' (<-'uot{e.}' set CHANGE) |
| |
| // 'žerėjime' -> 'žėrėjimas', konfliktas su 'žais-ime' |
| '{e.}jime' (<-'{e.}jimas' set CHANGE) |
| |
| // 'žvilgesiu' -> 'žvilgesys', konfliktas su 'dirb-siu' |
| 'esiu' (<-'esys' set CHANGE) |
| // 'duobkasiu' -> 'duobkasys', konfliktas su 'pakasiu' |
| 'asius' (<-'asys' set CHANGE) |
| |
| // 'žioravime' -> 'žioravimas', konfliktas su 'myl-ime' |
| 'avime' (<-'avimas' set CHANGE) |
| 'ojime' (<-'ojimas' set CHANGE) |
| |
| // 'advokatės' -> 'advokatė', konfliktas su 'dirb-atės' |
| 'okat{e.}s' (<-'okat{e.}' set CHANGE) |
| // 'advokate' -> 'advokatė', konfliktas su 'dirb-ate' |
| 'okate' (<-'okat{e.}' set CHANGE) |
| ) |
| ) |
| |
| define fix_chdz as ( |
| [substring] among ( |
| '{c*}' (<-'t' set CHANGE) |
| 'd{z*}' (<-'d' set CHANGE) |
| ) |
| ) |
| |
| define fix_gd as ( |
| [substring] among ( |
| 'gd' (<-'g' set CHANGE) |
| //'{e.}k' (<-'{e.}g' set CHANGE) |
| ) |
| ) |
| |
| ) |
| |
| define stem as ( |
| |
| $p1 = limit |
| $p2 = limit |
| $s = size |
| |
| do ( |
| // priešdėlis 'a' ilgeniuose nei 6 raidės žodžiuose, pvz. 'a-liejus'. |
| try (test 'a' $s > 6 hop 1) |
| |
| gopast v gopast non-v setmark p1 |
| gopast v gopast non-v setmark p2 |
| ) |
| |
| backwards ( |
| do fix_conflicts |
| do step1 |
| do fix_chdz |
| do step2 |
| do fix_chdz |
| do fix_gd |
| ) |
| |
| ) |