UNPKG

@jnv/node-nlp

Version:

Library for NLU (Natural Language Understanding) done in Node.js

344 lines (332 loc) 8.94 kB
/* * Copyright (c) AXA Shared Services Spain S.A. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * 'Software'), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ const BaseStemmer = require('./base-stemmer'); const Among = require('./among'); class SloveneStemmer extends BaseStemmer { constructor(tokenizer) { super(tokenizer); this.I_p1 = 0; } stem() { let among_var; let v_1; let v_2; let v_3; let v_4; let v_5; let v_6; let v_7; let v_8; let v_9; let v_10; this.I_p1 = this.current.length(); this.limit_backward = this.cursor; this.cursor = this.limit; v_1 = this.limit - this.cursor; lab0: do { for (v_2 = 4; v_2 > 0; v_2--) { v_3 = this.limit - this.cursor; lab1: do { if (!(this.I_p1 > 8)) { this.cursor = this.limit - v_3; break lab1; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_0); if (among_var === 0) { this.cursor = this.limit - v_3; break lab1; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_3; break lab1; case 1: this.slice_del(); break; } } while (false); v_4 = this.limit - this.cursor; lab2: do { if (!(this.I_p1 > 7)) { this.cursor = this.limit - v_4; break lab2; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_1); if (among_var === 0) { this.cursor = this.limit - v_4; break lab2; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_4; break lab2; case 1: this.slice_del(); break; } } while (false); this.I_p1 = this.current.length(); v_5 = this.limit - this.cursor; lab3: do { if (!(this.I_p1 > 6)) { this.cursor = this.limit - v_5; break lab3; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_2); if (among_var === 0) { this.cursor = this.limit - v_5; break lab3; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_5; break lab3; case 1: this.slice_del(); break; } } while (false); this.I_p1 = this.current.length(); v_6 = this.limit - this.cursor; lab4: do { if (!(this.I_p1 > 6)) { this.cursor = this.limit - v_6; break lab4; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_3); if (among_var === 0) { this.cursor = this.limit - v_6; break lab4; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_6; break lab4; case 1: this.slice_del(); break; } } while (false); this.I_p1 = this.current.length(); v_7 = this.limit - this.cursor; lab5: do { if (!(this.I_p1 > 5)) { this.cursor = this.limit - v_7; break lab5; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_4); if (among_var === 0) { this.cursor = this.limit - v_7; break lab5; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_7; break lab5; case 1: this.slice_del(); break; } } while (false); this.I_p1 = this.current.length(); v_8 = this.limit - this.cursor; lab6: do { if (!(this.I_p1 > 6)) { this.cursor = this.limit - v_8; break lab6; } this.ket = this.cursor; if (!this.in_grouping_b(SloveneStemmer.g_soglasniki, 98, 382)) { this.cursor = this.limit - v_8; break lab6; } this.bra = this.cursor; v_9 = this.limit - this.cursor; if (!this.in_grouping_b(SloveneStemmer.g_soglasniki, 98, 382)) { this.cursor = this.limit - v_8; break lab6; } this.cursor = this.limit - v_9; this.slice_del(); } while (false); this.I_p1 = this.current.length(); v_10 = this.limit - this.cursor; lab7: do { if (!(this.I_p1 > 5)) { this.cursor = this.limit - v_10; break lab7; } this.ket = this.cursor; among_var = this.find_among_b(SloveneStemmer.a_5); if (among_var === 0) { this.cursor = this.limit - v_10; break lab7; } this.bra = this.cursor; switch (among_var) { case 0: this.cursor = this.limit - v_10; break lab7; case 1: this.slice_del(); break; } } while (false); } } while (false); this.cursor = this.limit - v_1; this.cursor = this.limit_backward; return true; } stem(...args) { switch (args.length) { case 0: return this.stem(...args); } return super.stem(...args); } } SloveneStemmer.a_0 = [ new Among('anski', -1, 1), new Among('evski', -1, 1), new Among('ovski', -1, 1) ]; SloveneStemmer.a_1 = [new Among('stvo', -1, 1), new Among('\u0161tvo', -1, 1)]; SloveneStemmer.a_2 = [ new Among('ega', -1, 1), new Among('ija', -1, 1), new Among('ila', -1, 1), new Among('ema', -1, 1), new Among('vna', -1, 1), new Among('ite', -1, 1), new Among('ste', -1, 1), new Among('\u0161\u010De', -1, 1), new Among('ski', -1, 1), new Among('\u0161ki', -1, 1), new Among('iti', -1, 1), new Among('ovi', -1, 1), new Among('\u010Dek', -1, 1), new Among('ovm', -1, 1), new Among('\u010Dan', -1, 1), new Among('len', -1, 1), new Among('ven', -1, 1), new Among('\u0161en', -1, 1), new Among('ejo', -1, 1), new Among('ijo', -1, 1), new Among('ast', -1, 1), new Among('ost', -1, 1) ]; SloveneStemmer.a_3 = [ new Among('ja', -1, 1), new Among('ka', -1, 1), new Among('ma', -1, 1), new Among('ec', -1, 1), new Among('je', -1, 1), new Among('eg', -1, 1), new Among('eh', -1, 1), new Among('ih', -1, 1), new Among('mi', -1, 1), new Among('ti', -1, 1), new Among('ij', -1, 1), new Among('al', -1, 1), new Among('il', -1, 1), new Among('em', -1, 1), new Among('om', -1, 1), new Among('an', -1, 1), new Among('en', -1, 1), new Among('in', -1, 1), new Among('do', -1, 1), new Among('jo', -1, 1), new Among('ir', -1, 1), new Among('at', -1, 1), new Among('ev', -1, 1), new Among('iv', -1, 1), new Among('ov', -1, 1), new Among('o\u010D', -1, 1) ]; SloveneStemmer.a_4 = [ new Among('a', -1, 1), new Among('c', -1, 1), new Among('e', -1, 1), new Among('i', -1, 1), new Among('m', -1, 1), new Among('o', -1, 1), new Among('u', -1, 1), new Among('\u0161', -1, 1) ]; SloveneStemmer.a_5 = [ new Among('a', -1, 1), new Among('e', -1, 1), new Among('i', -1, 1), new Among('o', -1, 1), new Among('u', -1, 1) ]; SloveneStemmer.g_soglasniki = [ 119, 95, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 16 ]; module.exports = SloveneStemmer;