@orama/stemmers
Version:
Stemmers for Orama
1 lines • 6.23 kB
Source Map (JSON)
{"version":3,"sources":["<anon>"],"sourcesContent":["/*@\n\n Russian stemming algorithm provided by Dr Martin Porter (snowball.tartarus.org):\n http://snowball.tartarus.org/algorithms/russian/stemmer.html\n\n Algorithm implementation in PHP provided by Dmitry Koterov (dklab.ru):\n http://forum.dklab.ru/php/advises/HeuristicWithoutTheDictionaryExtractionOfARootFromRussianWord.html\n\n Algorithm implementation adopted for Drupal by Algenon (4algenon@gmail.com):\n https://drupal.org/project/ukstemmer\n\n Algorithm implementation in Node by Zakharov Kyrylo\n https://github.com/Amice13\n\n*/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: Object.getOwnPropertyDescriptor(all, name).get\n });\n}\n_export(exports, {\n get language () {\n return language;\n },\n get stemmer () {\n return stemmer;\n }\n});\nconst vowel = new RegExp('[аеиоуюяіїє]');\nconst perfectiveGround = new RegExp('(?:[иы]в(?:ши(?:сь)?)?|(?<=[ая])(?:в(?:ши(?:сь)?)?))$');\n// http://uk.wikipedia.org/wiki/Рефлексивне_дієслово\nconst reflexive = new RegExp('с[яьи]$');\n// http://uk.wikipedia.org/wiki/Прикметник + http://wapedia.mobi/uk/Прикметник\nconst adjective = new RegExp('(?:[аеєуюя]|еє|ем|єє|ий|их|іх|ів|ій|ім|їй|ім|им|ими|іми|йми|ої|ою|ова|ове|ого|ому)$');\n// http://uk.wikipedia.org/wiki/Дієприкметник\nconst participle = new RegExp('(?:[аіу]|ій|ий|им|ім|их|йми|ого|ому|ою)$');\n// http://uk.wikipedia.org/wiki/Дієслово\nconst verb = new RegExp('(?:[еєую]|ав|али|ати|вши|ив|ити|ме|сь|ся|ши|учи|яти|ячи|ать|ять)$', 'g');\n// http://uk.wikipedia.org/wiki/Іменник\nconst noun = new RegExp('(?:[аеєіїийоуыьюя]|ам|ах|ами|ев|еві|еи|ей|ем|ею|єм|єю|ів|їв|ий|ием|ию|ия|иям|иях|ов|ові|ой|ом|ою|ью|ья|ям|ями|ях)$', 'g');\nconst derivational = new RegExp('[^аеиоуюяіїє][аеиоуюяіїє]+[^аеиоуюяіїє]+[аеиоуюяіїє].*(?<=о)сть?$', 'g');\nconst step2 = new RegExp('и$');\nconst step3 = new RegExp('ость$');\nconst step41 = new RegExp('ь$');\nconst step42 = new RegExp('ейше$');\nconst step43 = new RegExp('нн$');\nconst alterations = new RegExp('([гджзкстхцчш]|ст|дж|ждж|ьц|сі|ці|зі|он|ін|ів|ев|ок|шк)$');\nlet thisString;\nconst ukrstemmer = (string, strict = false)=>{\n thisString = string.toLowerCase();\n let wordStartIndex = string.match(vowel);\n if (wordStartIndex === null) return string;\n wordStartIndex = wordStartIndex.index;\n let wordStart = thisString.slice(0, wordStartIndex + 1);\n thisString = thisString.slice(wordStartIndex + 1);\n if (thisString === '') return string;\n // Step 1\n if (!replaceAndCheck(thisString, perfectiveGround, '')) {\n replaceAndCheck(thisString, reflexive, '');\n if (replaceAndCheck(thisString, adjective, '')) {\n replaceAndCheck(thisString, participle, '');\n } else {\n if (!replaceAndCheck(thisString, verb, '')) {\n replaceAndCheck(thisString, noun, '');\n }\n }\n }\n // Step 2\n replaceAndCheck(thisString, step2, '');\n // Step 3\n if (derivational.test(thisString)) {\n replaceAndCheck(thisString, step3, '');\n }\n // Step 4\n if (!replaceAndCheck(thisString, step41, '')) {\n replaceAndCheck(thisString, step42, '');\n replaceAndCheck(thisString, step43, 'н');\n }\n if (strict) {\n replaceAndCheck(thisString, alterations, '');\n }\n return wordStart + thisString;\n};\nconst replaceAndCheck = (s, from, to)=>{\n let original = s;\n thisString = s.replace(from, to);\n return thisString !== original;\n};\nfunction stemmer(word) {\n return ukrstemmer(word);\n}\nconst language = 'ukrainian';\n"],"names":["thisString","_export","target","all","name","Object","defineProperty","enumerable","get","getOwnPropertyDescriptor","exports","value","language","stemmer","vowel","RegExp","perfectiveGround","reflexive","adjective","participle","verb","noun","derivational","step2","step3","step41","step42","step43","alterations","ukrstemmer","string","strict","toLowerCase","wordStartIndex","match","index","wordStart","slice","replaceAndCheck","test","s","from","to","replace","word"],"mappings":"AAcG,iBAqCCA,WAjCJ,SAASC,QAAQC,CAAM,CAAEC,CAAG,EACxB,IAAI,IAAIC,KAAQD,EAAIE,OAAOC,cAAc,CAACJ,EAAQE,EAAM,CACpDG,WAAY,CAAA,EACZC,IAAKH,OAAOI,wBAAwB,CAACN,EAAKC,GAAMI,GAAG,AACvD,EACJ,CARAH,OAAOC,cAAc,CAACI,QAAS,aAAc,CACzCC,MAAO,CAAA,CACX,GAOAV,QAAQS,QAAS,CACb,IAAIE,UAAY,CACZ,OAAOA,QACX,EACA,IAAIC,SAAW,CACX,OAAOA,OACX,CACJ,GACA,IAAMC,MAAQ,AAAIC,OAAO,gBACnBC,iBAAmB,AAAID,OAAO,yDAE9BE,UAAY,AAAIF,OAAO,WAEvBG,UAAY,AAAIH,OAAO,uFAEvBI,WAAa,AAAIJ,OAAO,4CAExBK,KAAO,AAAIL,OAAO,oEAAqE,KAEvFM,KAAO,AAAIN,OAAO,qHAAsH,KACxIO,aAAe,AAAIP,OAAO,oEAAqE,KAC/FQ,MAAQ,AAAIR,OAAO,MACnBS,MAAQ,AAAIT,OAAO,SACnBU,OAAS,AAAIV,OAAO,MACpBW,OAAS,AAAIX,OAAO,SACpBY,OAAS,AAAIZ,OAAO,OACpBa,YAAc,AAAIb,OAAO,4DAEzBc,WAAa,CAACC,EAAQC,EAAS,CAAA,CAAK,IACtC/B,WAAa8B,EAAOE,WAAW,GAC/B,IAAIC,EAAiBH,EAAOI,KAAK,CAACpB,OAClC,GAAImB,AAAmB,OAAnBA,EAAyB,OAAOH,EACpCG,EAAiBA,EAAeE,KAAK,CACrC,IAAIC,EAAYpC,WAAWqC,KAAK,CAAC,EAAGJ,EAAiB,SAErD,AAAIjC,AAAe,KADnBA,CAAAA,WAAaA,WAAWqC,KAAK,CAACJ,EAAiB,EAAC,EAClBH,GAE1B,CAACQ,gBAAgBtC,WAAYgB,iBAAkB,MAC/CsB,gBAAgBtC,WAAYiB,UAAW,IACnCqB,gBAAgBtC,WAAYkB,UAAW,IACvCoB,gBAAgBtC,WAAYmB,WAAY,IAEpC,AAACmB,gBAAgBtC,WAAYoB,KAAM,KACnCkB,gBAAgBtC,WAAYqB,KAAM,KAK9CiB,gBAAgBtC,WAAYuB,MAAO,IAE/BD,aAAaiB,IAAI,CAACvC,aAClBsC,gBAAgBtC,WAAYwB,MAAO,IAGlCc,gBAAgBtC,WAAYyB,OAAQ,MACrCa,gBAAgBtC,WAAY0B,OAAQ,IACpCY,gBAAgBtC,WAAY2B,OAAQ,MAEpCI,GACAO,gBAAgBtC,WAAY4B,YAAa,IAEtCQ,EAAYpC,WACvB,EACMsC,gBAAkB,CAACE,EAAGC,EAAMC,IAGvB1C,AADPA,CAAAA,WAAawC,EAAEG,OAAO,CAACF,EAAMC,EAAE,IADhBF,EAInB,SAAS3B,QAAQ+B,CAAI,EACjB,OAAOf,WAAWe,EACtB,CACA,IAAMhC,SAAW"}