Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. externals ( stem )
  2. // escape symbols for substituting lithuanian characters
  3. stringescapes { }
  4. /* Special characters in Unicode Latin Extended-A */
  5. // ' nosine
  6. stringdef a' '{U+0105}' // ą a + ogonek
  7. stringdef e' '{U+0119}' // ę e + ogonek
  8. stringdef i' '{U+012F}' // į i + ogonek
  9. stringdef u' '{U+0173}' // ų u + ogonek
  10. // . taskas
  11. stringdef e. '{U+0117}' // ė e + dot
  12. // - ilgoji
  13. stringdef u- '{U+016B}' // ū u + macron
  14. // * varnele
  15. stringdef c* '{U+010D}' // č c + caron (haček)
  16. stringdef s* '{U+0161}' // š s + caron (haček)
  17. stringdef z* '{U+017E}' // ž z + caron (haček)
  18. // [C](VC)^m[V|C]
  19. // definitions of variables for
  20. // p1 - position of m = 0
  21. integers ( p1 )
  22. // groupings
  23. // v - lithuanian vowels
  24. groupings ( v )
  25. // v - all lithuanian vowels
  26. define v 'aeiyou{a'}{e'}{i'}{u'}{e.}{u-}'
  27. // all lithuanian stemmer routines: 4 steps
  28. routines (
  29. step2 R1 step1 fix_chdz fix_gd fix_conflicts
  30. )
  31. backwardmode (
  32. define R1 as $p1 <= cursor
  33. define step1 as (
  34. setlimit tomark p1 for ([substring]) R1 among (
  35. // Daiktavardžiai (Nouns)
  36. // I linksniuotė (declension I)
  37. 'as' 'ias' 'is' 'ys' // vyras, kelias, brolis, gaidys
  38. 'o' 'io' // vyro, kelio
  39. 'ui' 'iui' // vyrui, keliui
  40. '{a'}' 'i{a'}' '{i'}' // vyrą, kelią, brolį
  41. 'u' 'iu' // vyru, keliu
  42. 'e' 'yje' // vyre, kelyje
  43. 'y' 'au' 'i' // kely, brolau, broli,
  44. 'an' // nusižengiman
  45. 'ai' 'iai' // vyrai, keliai
  46. '{u'}' 'i{u'}' // vyrų, kelių
  47. 'ams' 'am' // vyrams, vyram
  48. 'iams' 'iam' // broliams, broliam
  49. 'us' 'ius' // vyrus, brolius
  50. 'ais' 'iais' // vyrais, keliais
  51. 'uose' 'iuose' 'uos' 'iuos' // vyruose, keliuose, vyruos, keliuos
  52. 'uosna' 'iuosna' // vyruosna, keliuosna
  53. 'ysna' // žutysna
  54. 'asis' 'aisi' // sukimasis, sukimaisi
  55. 'osi' '{u'}si' // sukimosi, sukimųsi
  56. 'uisi' // sukimuisi
  57. '{a'}si' // sukimąsi
  58. 'usi' // sukimusi
  59. 'esi' // sukimesi
  60. 'uo' // mėnuo
  61. // II linksniuote (declension II)
  62. 'a' 'ia' // galva, vysnios
  63. 'os' 'ios' // galvos, vysnios
  64. 'oj' 'oje' 'ioje' // galvoje, vysnioje
  65. 'osna' 'iosna' // galvosna, vyšniosna
  66. 'om' 'oms' 'ioms' // galvoms, vysnioms
  67. 'omis' 'iomis' // galvomis, vysniomis
  68. 'ose' 'iose' // galvose, vysniose
  69. 'on' 'ion' // galvon, vyšnion
  70. // III linksniuote (declension III)
  71. '{e.}' // gervė
  72. '{e.}s' // gervės
  73. 'ei' // gervei
  74. '{e'}' // gervę
  75. '{e.}j' '{e.}je' // gervėj, gervėje
  76. '{e.}ms' // gervėms
  77. 'es' // gerves
  78. '{e.}mis' // gervėmis
  79. '{e.}se' // gervėse
  80. '{e.}sna' // gervėsna
  81. '{e.}n' // žydaitėn
  82. // IV linksniuote (declension IV)
  83. 'aus' 'iaus' // sūnaus, skaičiaus
  84. 'umi' 'iumi' // sūnumi, skaičiumi
  85. 'uje' 'iuje' // sūnuje, skaičiuje
  86. 'iau' // skaičiau
  87. '{u-}s' // sūnūs
  88. 'ums' // sūnums
  89. 'umis' // sūnumis
  90. 'un' 'iun' // sūnun, administratoriun
  91. // V linksniuote (declension V)
  92. 'ies' 'ens' 'enio' 'ers' // avies, vandens, sesers
  93. 'eniui' 'eriai' // vandeniui, eriai
  94. 'en{i'}' 'er{i'}' // vandenį, seserį
  95. 'imi' 'eniu' 'erimi' 'eria' // avimi, vandeniu, seserimi, seseria
  96. 'enyje' 'eryje' // vandenyje, seseryje
  97. 'ie' 'enie' 'erie' // avie, vandenie, seserie
  98. 'enys' 'erys' // vandenys, seserys
  99. // 'en{u'}' konfliktas su 'žandenų' 'antenų'
  100. 'er{u'}' // seserų
  101. 'ims' 'enims' 'erims' // avims, vandemins, seserims
  102. 'enis' // vandenis
  103. 'imis' // žebenkštimis
  104. 'enimis' // vandenimis
  105. 'yse' 'enyse' 'eryse' // avyse, vandenyse, seseryse
  106. // Būdvardžiai (Adjectives)
  107. // (i)a linksniuotė
  108. 'iem' 'iems' // geriem, geriems
  109. 'ame' 'iame' // naujame, mediniame
  110. // Veiksmažodžiai (Verbs)
  111. // Tiesioginė nuosaka (indicative mood)
  112. // esamasis laikas (present tense)
  113. // (i)a asmenuotė (declension (i)a)
  114. 'uosi' 'iuosi' // dirbuosi, traukiuosi
  115. 'iesi' // dirbiesi
  116. 'asi' 'iasi' // dirbasi, traukiasi
  117. 'am{e.}s' 'iam{e.}s' // dirbamės, traukiamės
  118. 'at' 'ate' 'iat' 'iate' // dirbat, dirbate, ariat, traukiate
  119. 'at{e.}s' 'iat{e.}s' // dirbatės, traukiatės
  120. // i asmenuotė (declension i)
  121. 'isi' // tikisi
  122. 'im' // mylim
  123. // 'ime' konfliktassu daiktavardžiu vietininku, pvz. 'gėrime'
  124. 'im{e.}s' // tikimės
  125. 'it' 'ite' // mylit, mylite, tikitės
  126. // 'it{e.}s' konfliktas su priesaga ir dgs. vardininko galūne -ait-ės pvz. žydaitės
  127. // o asmenuotė (declension o)
  128. 'ome' // mokome
  129. 'ot' 'ote' // mokot, mokote
  130. // būtasis laikas
  131. // o asmenuotė (declension o)
  132. '{e.}jo' '{e.}josi' // tikėjo, tikėjosi
  133. 'ot{e.}s' // tikėjotės/bijotės
  134. // ė asmenuotė (declension ė)
  135. 'eisi' // mokeisi
  136. '{e.}si' // mokėsi
  137. '{e.}m' '{e.}me' // mokėm, mokėme
  138. '{e.}m{e.}s' // mokėmės
  139. '{e.}t' '{e.}te' // mokėt, mokėte
  140. '{e.}t{e.}s' // mokėtės
  141. // būtasis dažninis laikas (frequentative past tense)
  142. 'ausi' // mokydavausi
  143. 'om{e.}s' // mokydavomės/bijomės
  144. // būsimasis laikas (future tense)
  145. 'siu' 'siuosi' // dirbsiu, mokysiuosi
  146. 'si' 'siesi' // dirbsi, dirbsiesi
  147. 's' 'ysis' // dirbs, mokysis
  148. 'sim' 'sime' // dirbsim, dirbsime
  149. 'sit' 'site' // gersit, gersite
  150. // tariamoji nuosaka (subjunctive mood)
  151. '{c*}iau' '{c*}iausi' // dirbčiau
  152. 'tum' 'tumei' // dirbtum, dirbtumei
  153. 'tumeis' 'tumeisi' // mokytumeis, mokytumeisi
  154. // 't{u'}' nes blogai batutų -> batų
  155. 't{u'}si' // mokytųsi
  156. // 'tume' konfliktas su 'šventume'
  157. 'tum{e.}m' // dirbtumėm
  158. 'tum{e.}me' // dirbtumėme
  159. 'tum{e.}m{e.}s' // mokytumėmės
  160. 'tute' 'tum{e.}t' // dirbtute, dirbtumėt
  161. 'tum{e.}te' // dirbtumėte
  162. 'tum{e.}t{e.}s' // mokytumėtės
  163. // liepiamoji nuosaka (imperative mood)
  164. 'k' 'ki' // dirbk, dirbki, mokykis
  165. // 'kis' konfliktas viln-išk-is
  166. // 'kime' konfliktas, nes pirkime
  167. 'kim{e.}s' // mokykimės
  168. // bendratis (infinitive)
  169. 'uoti' 'iuoti' // meluoti, dygsniuoti
  170. 'auti' 'iauti' // draugauti, girtuokliauti
  171. 'oti' 'ioti' // dovanoti, meškerioti
  172. '{e.}ti' // auklėti
  173. 'yti' // akyti
  174. 'inti' // auginti
  175. 'in{e.}ti' // blusinėti
  176. 'enti' // gyventi
  177. 'tel{e.}ti' // bumbtelėti
  178. 'ter{e.}ti' // bumbterėti
  179. 'ti' // skalbti
  180. // 'tis' konfliktas, nes rytme-tis -> rytme
  181. // dalyviai (participles)
  182. '{a'}s' 'i{a'}s' '{i'}s' // dirbąs, žaidžiąs, gulįs
  183. 't{u'}s' // suktųs -> suk
  184. 'sim{e.}s' // suksimės
  185. 'sit{e.}s' // suksitės
  186. 'kite' // supkite
  187. )
  188. delete
  189. )
  190. define step2 as repeat (
  191. setlimit tomark p1 for ([substring]) among (
  192. // daiktavardziu priesagos (Noun suffixes)
  193. // budvardziu priesagos (Adjective suffixes)
  194. // 'in' // konfliktas su 'augintinis' ir 'akiniais' // lauk-in-is
  195. 'ing' // tvark-ing-as
  196. 'i{s*}k' // lenk-išk-as
  197. '{e.}t' // dem-ėt-as
  198. 'ot' // garban-ot-as
  199. 'uot' 'iuot' // lang-uot-as, akin-iuot-as
  200. // 'tin', nes augintinis // dirb-tin-is
  201. // 'ut', nes batutas, degutas etc. // maž-ut-is
  202. 'yt' // maž-yt-is
  203. 'iuk' // maž-iuk-as
  204. 'iul' // maž-ul-is
  205. '{e.}l' // maž-ėl-is
  206. 'yl' // maž-yl-is
  207. 'u{c*}iuk' // maž-učiuk-as
  208. 'uliuk' // maž-uliuk-as
  209. 'ut{e.}ait' // maž-utėlait-is
  210. 'ok' // did-ok-as
  211. 'iok' // višč-iok-as
  212. 'sv' '{s*}v' 'zgan' // sal-sv-as, pilk-šv-as, bal-zgan-as
  213. 'op' 'iop' // dvej-op-as, viener-iop-as
  214. 'ain' // apval-ain-as
  215. 'yk{s*}t' 'yk{s*}{c*}' // ten-ykšt-is, vakar-ykšč-ias
  216. // laisniai
  217. 'esn' // did-esn-is
  218. 'aus' 'iaus' // nauj-aus-ias, ger-iaus-ias
  219. // ivardziuotiniai budvardziai (Pronominal adjectives)
  220. // vyriska gimine (Male gender)
  221. 'ias' // žaliasis
  222. 'oj' 'ioj' // gerojo, žaliojo
  223. 'aj' 'iaj' // gerajam, žaliajam
  224. '{a'}j' 'i{a'}j' // garąjį, žaliąjį
  225. 'uoj' 'iuoj' // geruoju, žaliuoju
  226. 'iej' // gerieji
  227. '{u'}j' 'i{u'}j' // gerųjų, žaliųjų
  228. 'ies' // geriesiems
  229. 'uos' 'iuos' // geruosius, žaliuosius
  230. 'ais' 'iais' // geraisiais, žaliaisiais
  231. // moteriska gimine (Female gender)
  232. 'os' 'ios' // gerosios, žaliosios
  233. '{a'}s' 'i{a'}s' // gerąsios, žaliąsias
  234. // būtasis dažninis laikas (frequentative past tense)
  235. 'dav' // ei-dav-o
  236. // dalyvių priesagos (particple suffix)
  237. 'ant' 'iant'
  238. 'int' // tur-int-is
  239. '{e.}j' // tur-ėj-o
  240. '{e'}' //
  241. '{e.}j{e'}'
  242. '{e'}s' // dirb-ęs-is
  243. 'siant' // dirb-siant
  244. // pusdalyviai (participle)
  245. 'dam' // bėg-dam-as
  246. 'auj' // ūkinink-auj-a
  247. 'jam'
  248. 'iau'
  249. 'am' // baiminim-ams-i
  250. )
  251. delete
  252. )
  253. define fix_conflicts as (
  254. [substring] among (
  255. // 'lietuvaite' -> 'lietuvaitė', konfliktas su 'myl-ite'
  256. 'aite' (<-'ait{e.}')
  257. // 'lietuvaitės' -> 'lietuvaitė', konfliktas su 'myl-itės'
  258. 'ait{e.}s' (<-'ait{e.}')
  259. // ''ūs-uotės' -> 'ūs-uotė', konfliktas 'mokotės'
  260. 'uot{e.}s' (<-'uot{e.}')
  261. // ''ūs-uote' -> 'ūs-uotė', konfliktas 'mokote'
  262. 'uote' (<-'uot{e.}')
  263. // 'žerėjime' -> 'žėrėjimas', konfliktas su 'žais-ime'
  264. '{e.}jime' (<-'{e.}jimas')
  265. // 'žvilgesiu' -> 'žvilgesys', konfliktas su 'dirb-siu'
  266. 'esiu' (<-'esys')
  267. // 'duobkasiu' -> 'duobkasys', konfliktas su 'pakasiu'
  268. 'asius' (<-'asys')
  269. // 'žioravime' -> 'žioravimas', konfliktas su 'myl-ime'
  270. 'avime' (<-'avimas')
  271. 'ojime' (<-'ojimas')
  272. // 'advokatės' -> 'advokatė', konfliktas su 'dirb-atės'
  273. 'okat{e.}s' (<-'okat{e.}')
  274. // 'advokate' -> 'advokatė', konfliktas su 'dirb-ate'
  275. 'okate' (<-'okat{e.}')
  276. )
  277. )
  278. define fix_chdz as (
  279. [substring] among (
  280. '{c*}' (<-'t')
  281. 'd{z*}' (<-'d')
  282. )
  283. )
  284. define fix_gd as (
  285. [substring] among (
  286. 'gd' (<-'g')
  287. // '{e.}k' (<-'{e.}g')
  288. )
  289. )
  290. )
  291. define stem as (
  292. $p1 = limit
  293. do (
  294. // priešdėlis 'a' ilgeniuose nei 6 raidės žodžiuose, pvz. 'a-liejus'.
  295. try (test 'a' $(len > 6) hop 1)
  296. gopast v gopast non-v setmark p1
  297. )
  298. backwards (
  299. do fix_conflicts
  300. do step1
  301. do fix_chdz
  302. do step2
  303. do fix_chdz
  304. do fix_gd
  305. )
  306. )