UNPKG

6.04 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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9yZWlnbk9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZvcmVpZ25PcHRpbWl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxnQ0FBeUQ7QUFTekQsTUFBYSxnQkFBaUIsU0FBUSx5QkFBbUI7SUFBekQ7O1FBRUMsU0FBSSxHQUFHLGtCQUFrQixDQUFDO0lBNEQzQixDQUFDO0lBeERBLE1BQU07UUFFTCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBdUIsS0FBVTtRQUUxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFDZDtZQUNDLElBQUksRUFBRSxHQUFlLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxFQUFFLEdBQWUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksRUFBRSxHQUFlLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzNCO2dCQUNDLENBQUMsRUFBRSxDQUFDO2dCQUNKLFNBQVM7YUFDVDtZQUVELElBQUksRUFBRSxFQUNOO2dCQUNDLElBQUksRUFBRSxHQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxFQUFFLEdBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLEVBQUUsRUFDTjtvQkFDQyxJQUFJLEtBQUssR0FBZSxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxHQUFHLEVBQUU7d0JBQ0wsQ0FBQyxFQUFFLEVBQUU7d0JBQ0wsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztxQkFDWCxFQUFFO3dCQUNGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7cUJBQ2QsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFVCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUVwQyxHQUFHLEVBQUUsQ0FBQztvQkFDTixTQUFTO2lCQUNUO2FBQ0Q7WUFFRCxDQUFDLEVBQUUsQ0FBQztTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0NBQ0Q7QUE5REQsNENBOERDO0FBRVksUUFBQSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBaUMsQ0FBQztBQUVqRyxrQkFBZSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlZCBieSB1c2VyIG9uIDIwMTgvOC8xOC8wMTguXG4gKi9cblxuaW1wb3J0IHsgU3ViU01vZHVsZSwgU3ViU01vZHVsZU9wdGltaXplciB9IGZyb20gJy4uL21vZCc7XG5pbXBvcnQgUE9TVEFHIGZyb20gJy4uL1BPU1RBRyc7XG5pbXBvcnQgU2VnbWVudCwgeyBJRElDVCwgSURJQ1RfU1lOT05ZTSwgSVdvcmQgfSBmcm9tICcuLi9TZWdtZW50JztcbmltcG9ydCB7IElXb3JkRGVidWcgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IGhleEFuZEFueSB9IGZyb20gJy4uL3V0aWwvaW5kZXgnO1xuaW1wb3J0IHsgQ09MT1JfQUxMLCBDT0xPUl9IQUlSIH0gZnJvbSAnLi4vbW9kL0NPTE9SUyc7XG5cbmltcG9ydCBVU3RyaW5nIGZyb20gJ3VuaS1zdHJpbmcnO1xuXG5leHBvcnQgY2xhc3MgRm9yZWlnbk9wdGltaXplciBleHRlbmRzIFN1YlNNb2R1bGVPcHRpbWl6ZXJcbntcblx0bmFtZSA9ICdGb3JlaWduT3B0aW1pemVyJztcblxuXHRwcm90ZWN0ZWQgX1RBQkxFOiBJRElDVDxJV29yZD47XG5cblx0X2NhY2hlKClcblx0e1xuXHRcdHN1cGVyLl9jYWNoZSgpO1xuXG5cdFx0dGhpcy5fVEFCTEUgPSB0aGlzLnNlZ21lbnQuZ2V0RGljdCgnVEFCTEUnKTtcblx0XHR0aGlzLl9QT1NUQUcgPSB0aGlzLnNlZ21lbnQuUE9TVEFHO1xuXHR9XG5cblx0ZG9PcHRpbWl6ZTxUIGV4dGVuZHMgSVdvcmREZWJ1Zz4od29yZHM6IFRbXSk6IFRbXVxuXHR7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cdFx0Y29uc3QgUE9TVEFHID0gdGhpcy5fUE9TVEFHO1xuXHRcdGNvbnN0IFRBQkxFID0gdGhpcy5fVEFCTEU7XG5cblx0XHRsZXQgaSA9IDA7XG5cdFx0bGV0IGxlbiA9IHdvcmRzLmxlbmd0aCAtIDE7XG5cblx0XHR3aGlsZSAoaSA8IGxlbilcblx0XHR7XG5cdFx0XHRsZXQgdzA6IElXb3JkRGVidWcgPSB3b3Jkc1tpIC0gMV07XG5cdFx0XHRsZXQgdzE6IElXb3JkRGVidWcgPSB3b3Jkc1tpXTtcblx0XHRcdGxldCB3MjogSVdvcmREZWJ1ZyA9IHdvcmRzW2kgKyAxXTtcblxuXHRcdFx0aWYgKCEodzEucCA9PT0gUE9TVEFHLkFfTlgpKVxuXHRcdFx0e1xuXHRcdFx0XHRpKys7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodzIpXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBudzogc3RyaW5nID0gdzEudyArIHcyLnc7XG5cdFx0XHRcdGxldCBtdzogSVdvcmREZWJ1ZyA9IFRBQkxFW253XTtcblxuXHRcdFx0XHRpZiAobXcpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsZXQgbmV3X3c6IElXb3JkRGVidWcgPSBzZWxmLmRlYnVnVG9rZW4oe1xuXHRcdFx0XHRcdFx0Li4ubXcsXG5cdFx0XHRcdFx0XHR3OiBudyxcblx0XHRcdFx0XHRcdG06IFt3MSwgdzJdLFxuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFt0aGlzLm5hbWVdOiAxLFxuXHRcdFx0XHRcdH0sIHRydWUpO1xuXG5cdFx0XHRcdFx0dGhpcy5zbGljZVRva2VuKHdvcmRzLCBpLCAyLCBuZXdfdyk7XG5cblx0XHRcdFx0XHRsZW4tLTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdvcmRzO1xuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBpbml0ID0gRm9yZWlnbk9wdGltaXplci5pbml0LmJpbmQoRm9yZWlnbk9wdGltaXplcikgYXMgdHlwZW9mIEZvcmVpZ25PcHRpbWl6ZXIuaW5pdDtcblxuZXhwb3J0IGRlZmF1bHQgRm9yZWlnbk9wdGltaXplcjtcbiJdfQ==
\No newline at end of file