UNPKG

1.67 kBJavaScriptView Raw
1"use strict";
2/**
3 * Created by user on 2018/8/18/018.
4 */
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.init = exports.ForeignOptimizer = void 0;
7const mod_1 = require("../mod");
8class ForeignOptimizer extends mod_1.SubSModuleOptimizer {
9 constructor() {
10 super(...arguments);
11 this.name = 'ForeignOptimizer';
12 }
13 _cache() {
14 super._cache();
15 this._TABLE = this.segment.getDict('TABLE');
16 this._POSTAG = this.segment.POSTAG;
17 }
18 doOptimize(words) {
19 const self = this;
20 const POSTAG = this._POSTAG;
21 const TABLE = this._TABLE;
22 let i = 0;
23 let len = words.length - 1;
24 while (i < len) {
25 let w0 = words[i - 1];
26 let w1 = words[i];
27 let w2 = words[i + 1];
28 if (!(w1.p === POSTAG.A_NX)) {
29 i++;
30 continue;
31 }
32 if (w2) {
33 let nw = w1.w + w2.w;
34 let mw = TABLE[nw];
35 if (mw) {
36 let new_w = self.debugToken({
37 ...mw,
38 w: nw,
39 m: [w1, w2],
40 }, {
41 [this.name]: 1,
42 }, true);
43 this.sliceToken(words, i, 2, new_w);
44 len--;
45 continue;
46 }
47 }
48 i++;
49 }
50 return words;
51 }
52}
53exports.ForeignOptimizer = ForeignOptimizer;
54exports.init = ForeignOptimizer.init.bind(ForeignOptimizer);
55exports.default = ForeignOptimizer;
56//# sourceMappingURL=ForeignOptimizer.js.map
\No newline at end of file