Created
July 30, 2020 14:20
-
-
Save jusurb/156ae634a2a1c8196eab7b6754839a33 to your computer and use it in GitHub Desktop.
lithuanian stemmer snowball
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Generated by Snowball 2.0.0 - https://snowballstem.org/ | |
| /**@constructor*/ | |
| var Lithuanian = function() { | |
| var base = new BaseStemmer(); | |
| /** @const */ var a_0 = [ | |
| ["a", -1, -1], | |
| ["ia", 0, -1], | |
| ["eria", 1, -1], | |
| ["osna", 0, -1], | |
| ["iosna", 3, -1], | |
| ["uosna", 3, -1], | |
| ["iuosna", 5, -1], | |
| ["ysna", 0, -1], | |
| ["\u0117sna", 0, -1], | |
| ["e", -1, -1], | |
| ["ie", 9, -1], | |
| ["enie", 10, -1], | |
| ["erie", 10, -1], | |
| ["oje", 9, -1], | |
| ["ioje", 13, -1], | |
| ["uje", 9, -1], | |
| ["iuje", 15, -1], | |
| ["yje", 9, -1], | |
| ["enyje", 17, -1], | |
| ["eryje", 17, -1], | |
| ["\u0117je", 9, -1], | |
| ["ame", 9, -1], | |
| ["iame", 21, -1], | |
| ["sime", 9, -1], | |
| ["ome", 9, -1], | |
| ["\u0117me", 9, -1], | |
| ["tum\u0117me", 25, -1], | |
| ["ose", 9, -1], | |
| ["iose", 27, -1], | |
| ["uose", 27, -1], | |
| ["iuose", 29, -1], | |
| ["yse", 9, -1], | |
| ["enyse", 31, -1], | |
| ["eryse", 31, -1], | |
| ["\u0117se", 9, -1], | |
| ["ate", 9, -1], | |
| ["iate", 35, -1], | |
| ["ite", 9, -1], | |
| ["kite", 37, -1], | |
| ["site", 37, -1], | |
| ["ote", 9, -1], | |
| ["tute", 9, -1], | |
| ["\u0117te", 9, -1], | |
| ["tum\u0117te", 42, -1], | |
| ["i", -1, -1], | |
| ["ai", 44, -1], | |
| ["iai", 45, -1], | |
| ["eriai", 46, -1], | |
| ["ei", 44, -1], | |
| ["tumei", 48, -1], | |
| ["ki", 44, -1], | |
| ["imi", 44, -1], | |
| ["erimi", 51, -1], | |
| ["umi", 44, -1], | |
| ["iumi", 53, -1], | |
| ["si", 44, -1], | |
| ["asi", 55, -1], | |
| ["iasi", 56, -1], | |
| ["esi", 55, -1], | |
| ["iesi", 58, -1], | |
| ["siesi", 59, -1], | |
| ["isi", 55, -1], | |
| ["aisi", 61, -1], | |
| ["eisi", 61, -1], | |
| ["tumeisi", 63, -1], | |
| ["uisi", 61, -1], | |
| ["osi", 55, -1], | |
| ["\u0117josi", 66, -1], | |
| ["uosi", 66, -1], | |
| ["iuosi", 68, -1], | |
| ["siuosi", 69, -1], | |
| ["usi", 55, -1], | |
| ["ausi", 71, -1], | |
| ["\u010Diausi", 72, -1], | |
| ["\u0105si", 55, -1], | |
| ["\u0117si", 55, -1], | |
| ["\u0173si", 55, -1], | |
| ["t\u0173si", 76, -1], | |
| ["ti", 44, -1], | |
| ["enti", 78, -1], | |
| ["inti", 78, -1], | |
| ["oti", 78, -1], | |
| ["ioti", 81, -1], | |
| ["uoti", 81, -1], | |
| ["iuoti", 83, -1], | |
| ["auti", 78, -1], | |
| ["iauti", 85, -1], | |
| ["yti", 78, -1], | |
| ["\u0117ti", 78, -1], | |
| ["tel\u0117ti", 88, -1], | |
| ["in\u0117ti", 88, -1], | |
| ["ter\u0117ti", 88, -1], | |
| ["ui", 44, -1], | |
| ["iui", 92, -1], | |
| ["eniui", 93, -1], | |
| ["oj", -1, -1], | |
| ["\u0117j", -1, -1], | |
| ["k", -1, -1], | |
| ["am", -1, -1], | |
| ["iam", 98, -1], | |
| ["iem", -1, -1], | |
| ["im", -1, -1], | |
| ["sim", 101, -1], | |
| ["om", -1, -1], | |
| ["tum", -1, -1], | |
| ["\u0117m", -1, -1], | |
| ["tum\u0117m", 105, -1], | |
| ["an", -1, -1], | |
| ["on", -1, -1], | |
| ["ion", 108, -1], | |
| ["un", -1, -1], | |
| ["iun", 110, -1], | |
| ["\u0117n", -1, -1], | |
| ["o", -1, -1], | |
| ["io", 113, -1], | |
| ["enio", 114, -1], | |
| ["\u0117jo", 113, -1], | |
| ["uo", 113, -1], | |
| ["s", -1, -1], | |
| ["as", 118, -1], | |
| ["ias", 119, -1], | |
| ["es", 118, -1], | |
| ["ies", 121, -1], | |
| ["is", 118, -1], | |
| ["ais", 123, -1], | |
| ["iais", 124, -1], | |
| ["tumeis", 123, -1], | |
| ["imis", 123, -1], | |
| ["enimis", 127, -1], | |
| ["omis", 123, -1], | |
| ["iomis", 129, -1], | |
| ["umis", 123, -1], | |
| ["\u0117mis", 123, -1], | |
| ["enis", 123, -1], | |
| ["asis", 123, -1], | |
| ["ysis", 123, -1], | |
| ["ams", 118, -1], | |
| ["iams", 136, -1], | |
| ["iems", 118, -1], | |
| ["ims", 118, -1], | |
| ["enims", 139, -1], | |
| ["erims", 139, -1], | |
| ["oms", 118, -1], | |
| ["ioms", 142, -1], | |
| ["ums", 118, -1], | |
| ["\u0117ms", 118, -1], | |
| ["ens", 118, -1], | |
| ["os", 118, -1], | |
| ["ios", 147, -1], | |
| ["uos", 147, -1], | |
| ["iuos", 149, -1], | |
| ["ers", 118, -1], | |
| ["us", 118, -1], | |
| ["aus", 152, -1], | |
| ["iaus", 153, -1], | |
| ["ius", 152, -1], | |
| ["ys", 118, -1], | |
| ["enys", 156, -1], | |
| ["erys", 156, -1], | |
| ["\u0105s", 118, -1], | |
| ["i\u0105s", 159, -1], | |
| ["\u0117s", 118, -1], | |
| ["am\u0117s", 161, -1], | |
| ["iam\u0117s", 162, -1], | |
| ["im\u0117s", 161, -1], | |
| ["kim\u0117s", 164, -1], | |
| ["sim\u0117s", 164, -1], | |
| ["om\u0117s", 161, -1], | |
| ["\u0117m\u0117s", 161, -1], | |
| ["tum\u0117m\u0117s", 168, -1], | |
| ["at\u0117s", 161, -1], | |
| ["iat\u0117s", 170, -1], | |
| ["sit\u0117s", 161, -1], | |
| ["ot\u0117s", 161, -1], | |
| ["\u0117t\u0117s", 161, -1], | |
| ["tum\u0117t\u0117s", 174, -1], | |
| ["\u012Fs", 118, -1], | |
| ["\u016Bs", 118, -1], | |
| ["t\u0173s", 118, -1], | |
| ["at", -1, -1], | |
| ["iat", 179, -1], | |
| ["it", -1, -1], | |
| ["sit", 181, -1], | |
| ["ot", -1, -1], | |
| ["\u0117t", -1, -1], | |
| ["tum\u0117t", 184, -1], | |
| ["u", -1, -1], | |
| ["au", 186, -1], | |
| ["iau", 187, -1], | |
| ["\u010Diau", 188, -1], | |
| ["iu", 186, -1], | |
| ["eniu", 190, -1], | |
| ["siu", 190, -1], | |
| ["y", -1, -1], | |
| ["\u0105", -1, -1], | |
| ["i\u0105", 194, -1], | |
| ["\u0117", -1, -1], | |
| ["\u0119", -1, -1], | |
| ["\u012F", -1, -1], | |
| ["en\u012F", 198, -1], | |
| ["er\u012F", 198, -1], | |
| ["\u0173", -1, -1], | |
| ["i\u0173", 201, -1], | |
| ["er\u0173", 201, -1] | |
| ]; | |
| /** @const */ var a_1 = [ | |
| ["ing", -1, -1], | |
| ["aj", -1, -1], | |
| ["iaj", 1, -1], | |
| ["iej", -1, -1], | |
| ["oj", -1, -1], | |
| ["ioj", 4, -1], | |
| ["uoj", 4, -1], | |
| ["iuoj", 6, -1], | |
| ["auj", -1, -1], | |
| ["\u0105j", -1, -1], | |
| ["i\u0105j", 9, -1], | |
| ["\u0117j", -1, -1], | |
| ["\u0173j", -1, -1], | |
| ["i\u0173j", 12, -1], | |
| ["ok", -1, -1], | |
| ["iok", 14, -1], | |
| ["iuk", -1, -1], | |
| ["uliuk", 16, -1], | |
| ["u\u010Diuk", 16, -1], | |
| ["i\u0161k", -1, -1], | |
| ["iul", -1, -1], | |
| ["yl", -1, -1], | |
| ["\u0117l", -1, -1], | |
| ["am", -1, -1], | |
| ["dam", 23, -1], | |
| ["jam", 23, -1], | |
| ["zgan", -1, -1], | |
| ["ain", -1, -1], | |
| ["esn", -1, -1], | |
| ["op", -1, -1], | |
| ["iop", 29, -1], | |
| ["ias", -1, -1], | |
| ["ies", -1, -1], | |
| ["ais", -1, -1], | |
| ["iais", 33, -1], | |
| ["os", -1, -1], | |
| ["ios", 35, -1], | |
| ["uos", 35, -1], | |
| ["iuos", 37, -1], | |
| ["aus", -1, -1], | |
| ["iaus", 39, -1], | |
| ["\u0105s", -1, -1], | |
| ["i\u0105s", 41, -1], | |
| ["\u0119s", -1, -1], | |
| ["ut\u0117ait", -1, -1], | |
| ["ant", -1, -1], | |
| ["iant", 45, -1], | |
| ["siant", 46, -1], | |
| ["int", -1, -1], | |
| ["ot", -1, -1], | |
| ["uot", 49, -1], | |
| ["iuot", 50, -1], | |
| ["yt", -1, -1], | |
| ["\u0117t", -1, -1], | |
| ["yk\u0161t", -1, -1], | |
| ["iau", -1, -1], | |
| ["dav", -1, -1], | |
| ["sv", -1, -1], | |
| ["\u0161v", -1, -1], | |
| ["yk\u0161\u010D", -1, -1], | |
| ["\u0119", -1, -1], | |
| ["\u0117j\u0119", 60, -1] | |
| ]; | |
| /** @const */ var a_2 = [ | |
| ["ojime", -1, 7], | |
| ["\u0117jime", -1, 3], | |
| ["avime", -1, 6], | |
| ["okate", -1, 8], | |
| ["aite", -1, 1], | |
| ["uote", -1, 2], | |
| ["asius", -1, 5], | |
| ["okat\u0117s", -1, 8], | |
| ["ait\u0117s", -1, 1], | |
| ["uot\u0117s", -1, 2], | |
| ["esiu", -1, 4] | |
| ]; | |
| /** @const */ var a_3 = [ | |
| ["\u010D", -1, 1], | |
| ["d\u017E", -1, 2] | |
| ]; | |
| /** @const */ var a_4 = [ | |
| ["gd", -1, 1] | |
| ]; | |
| /** @const */ var /** Array<int> */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 64, 1, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 4]; | |
| var /** number */ I_p1 = 0; | |
| /** @return {boolean} */ | |
| function r_R1() { | |
| if (!(I_p1 <= base.cursor)) | |
| { | |
| return false; | |
| } | |
| return true; | |
| }; | |
| /** @return {boolean} */ | |
| function r_step1() { | |
| if (base.cursor < I_p1) | |
| { | |
| return false; | |
| } | |
| var /** number */ v_2 = base.limit_backward; | |
| base.limit_backward = I_p1; | |
| base.ket = base.cursor; | |
| if (base.find_among_b(a_0) == 0) | |
| { | |
| base.limit_backward = v_2; | |
| return false; | |
| } | |
| base.bra = base.cursor; | |
| base.limit_backward = v_2; | |
| if (!r_R1()) | |
| { | |
| return false; | |
| } | |
| if (!base.slice_del()) | |
| { | |
| return false; | |
| } | |
| return true; | |
| }; | |
| /** @return {boolean} */ | |
| function r_step2() { | |
| while(true) | |
| { | |
| var /** number */ v_1 = base.limit - base.cursor; | |
| lab0: { | |
| if (base.cursor < I_p1) | |
| { | |
| break lab0; | |
| } | |
| var /** number */ v_3 = base.limit_backward; | |
| base.limit_backward = I_p1; | |
| base.ket = base.cursor; | |
| if (base.find_among_b(a_1) == 0) | |
| { | |
| base.limit_backward = v_3; | |
| break lab0; | |
| } | |
| base.bra = base.cursor; | |
| base.limit_backward = v_3; | |
| if (!base.slice_del()) | |
| { | |
| return false; | |
| } | |
| continue; | |
| } | |
| base.cursor = base.limit - v_1; | |
| break; | |
| } | |
| return true; | |
| }; | |
| /** @return {boolean} */ | |
| function r_fix_conflicts() { | |
| var /** number */ among_var; | |
| base.ket = base.cursor; | |
| among_var = base.find_among_b(a_2); | |
| if (among_var == 0) | |
| { | |
| return false; | |
| } | |
| base.bra = base.cursor; | |
| switch (among_var) { | |
| case 1: | |
| if (!base.slice_from("ait\u0117")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 2: | |
| if (!base.slice_from("uot\u0117")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 3: | |
| if (!base.slice_from("\u0117jimas")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 4: | |
| if (!base.slice_from("esys")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 5: | |
| if (!base.slice_from("asys")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 6: | |
| if (!base.slice_from("avimas")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 7: | |
| if (!base.slice_from("ojimas")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 8: | |
| if (!base.slice_from("okat\u0117")) | |
| { | |
| return false; | |
| } | |
| break; | |
| } | |
| return true; | |
| }; | |
| /** @return {boolean} */ | |
| function r_fix_chdz() { | |
| var /** number */ among_var; | |
| base.ket = base.cursor; | |
| among_var = base.find_among_b(a_3); | |
| if (among_var == 0) | |
| { | |
| return false; | |
| } | |
| base.bra = base.cursor; | |
| switch (among_var) { | |
| case 1: | |
| if (!base.slice_from("t")) | |
| { | |
| return false; | |
| } | |
| break; | |
| case 2: | |
| if (!base.slice_from("d")) | |
| { | |
| return false; | |
| } | |
| break; | |
| } | |
| return true; | |
| }; | |
| /** @return {boolean} */ | |
| function r_fix_gd() { | |
| base.ket = base.cursor; | |
| if (base.find_among_b(a_4) == 0) | |
| { | |
| return false; | |
| } | |
| base.bra = base.cursor; | |
| if (!base.slice_from("g")) | |
| { | |
| return false; | |
| } | |
| return true; | |
| }; | |
| this.stem = /** @return {boolean} */ function() { | |
| I_p1 = base.limit; | |
| var /** number */ v_1 = base.cursor; | |
| lab0: { | |
| var /** number */ v_2 = base.cursor; | |
| lab1: { | |
| var /** number */ v_3 = base.cursor; | |
| if (!(base.eq_s("a"))) | |
| { | |
| base.cursor = v_2; | |
| break lab1; | |
| } | |
| base.cursor = v_3; | |
| if (!(base.current.length > 6)) | |
| { | |
| base.cursor = v_2; | |
| break lab1; | |
| } | |
| { | |
| var /** number */ c1 = base.cursor + 1; | |
| if (0 > c1 || c1 > base.limit) | |
| { | |
| base.cursor = v_2; | |
| break lab1; | |
| } | |
| base.cursor = c1; | |
| } | |
| } | |
| golab2: while(true) | |
| { | |
| lab3: { | |
| if (!(base.in_grouping(g_v, 97, 371))) | |
| { | |
| break lab3; | |
| } | |
| break golab2; | |
| } | |
| if (base.cursor >= base.limit) | |
| { | |
| break lab0; | |
| } | |
| base.cursor++; | |
| } | |
| golab4: while(true) | |
| { | |
| lab5: { | |
| if (!(base.out_grouping(g_v, 97, 371))) | |
| { | |
| break lab5; | |
| } | |
| break golab4; | |
| } | |
| if (base.cursor >= base.limit) | |
| { | |
| break lab0; | |
| } | |
| base.cursor++; | |
| } | |
| I_p1 = base.cursor; | |
| } | |
| base.cursor = v_1; | |
| base.limit_backward = base.cursor; base.cursor = base.limit; | |
| var /** number */ v_6 = base.limit - base.cursor; | |
| r_fix_conflicts(); | |
| base.cursor = base.limit - v_6; | |
| var /** number */ v_7 = base.limit - base.cursor; | |
| r_step1(); | |
| base.cursor = base.limit - v_7; | |
| var /** number */ v_8 = base.limit - base.cursor; | |
| r_fix_chdz(); | |
| base.cursor = base.limit - v_8; | |
| var /** number */ v_9 = base.limit - base.cursor; | |
| r_step2(); | |
| base.cursor = base.limit - v_9; | |
| var /** number */ v_10 = base.limit - base.cursor; | |
| r_fix_chdz(); | |
| base.cursor = base.limit - v_10; | |
| var /** number */ v_11 = base.limit - base.cursor; | |
| r_fix_gd(); | |
| base.cursor = base.limit - v_11; | |
| base.cursor = base.limit_backward; | |
| return true; | |
| }; | |
| /**@return{string}*/ | |
| this['stemWord'] = function(/**string*/word) { | |
| base.setCurrent(word); | |
| this.stem(); | |
| return base.getCurrent(); | |
| }; | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment