1 | ;
|
2 | /**
|
3 | * Created by user on 2018/8/18/018.
|
4 | */
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.init = exports.ForeignOptimizer = void 0;
|
7 | const mod_1 = require("../mod");
|
8 | class 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 | }
|
53 | exports.ForeignOptimizer = ForeignOptimizer;
|
54 | exports.init = ForeignOptimizer.init.bind(ForeignOptimizer);
|
55 | exports.default = ForeignOptimizer;
|
56 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9yZWlnbk9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZvcmVpZ25PcHRpbWl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxnQ0FBeUQ7QUFTekQsTUFBYSxnQkFBaUIsU0FBUSx5QkFBbUI7SUFBekQ7O1FBRUMsU0FBSSxHQUFHLGtCQUFrQixDQUFDO0lBNEQzQixDQUFDO0lBeERBLE1BQU07UUFFTCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBdUIsS0FBVTtRQUUxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFDZDtZQUNDLElBQUksRUFBRSxHQUFlLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxFQUFFLEdBQWUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksRUFBRSxHQUFlLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzNCO2dCQUNDLENBQUMsRUFBRSxDQUFDO2dCQUNKLFNBQVM7YUFDVDtZQUVELElBQUksRUFBRSxFQUNOO2dCQUNDLElBQUksRUFBRSxHQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxFQUFFLEdBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLEVBQUUsRUFDTjtvQkFDQyxJQUFJLEtBQUssR0FBZSxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxHQUFHLEVBQUU7d0JBQ0wsQ0FBQyxFQUFFLEVBQUU7d0JBQ0wsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztxQkFDWCxFQUFFO3dCQUNGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7cUJBQ2QsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFVCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUVwQyxHQUFHLEVBQUUsQ0FBQztvQkFDTixTQUFTO2lCQUNUO2FBQ0Q7WUFFRCxDQUFDLEVBQUUsQ0FBQztTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0NBQ0Q7QUE5REQsNENBOERDO0FBRVksUUFBQSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBaUMsQ0FBQztBQUVqRyxrQkFBZSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlZCBieSB1c2VyIG9uIDIwMTgvOC8xOC8wMTguXG4gKi9cblxuaW1wb3J0IHsgU3ViU01vZHVsZSwgU3ViU01vZHVsZU9wdGltaXplciB9IGZyb20gJy4uL21vZCc7XG5pbXBvcnQgUE9TVEFHIGZyb20gJy4uL1BPU1RBRyc7XG5pbXBvcnQgU2VnbWVudCwgeyBJRElDVCwgSURJQ1RfU1lOT05ZTSwgSVdvcmQgfSBmcm9tICcuLi9TZWdtZW50JztcbmltcG9ydCB7IElXb3JkRGVidWcgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IGhleEFuZEFueSB9IGZyb20gJy4uL3V0aWwvaW5kZXgnO1xuaW1wb3J0IHsgQ09MT1JfQUxMLCBDT0xPUl9IQUlSIH0gZnJvbSAnLi4vbW9kL0NPTE9SUyc7XG5cbmltcG9ydCBVU3RyaW5nIGZyb20gJ3VuaS1zdHJpbmcnO1xuXG5leHBvcnQgY2xhc3MgRm9yZWlnbk9wdGltaXplciBleHRlbmRzIFN1YlNNb2R1bGVPcHRpbWl6ZXJcbntcblx0bmFtZSA9ICdGb3JlaWduT3B0aW1pemVyJztcblxuXHRwcm90ZWN0ZWQgX1RBQkxFOiBJRElDVDxJV29yZD47XG5cblx0X2NhY2hlKClcblx0e1xuXHRcdHN1cGVyLl9jYWNoZSgpO1xuXG5cdFx0dGhpcy5fVEFCTEUgPSB0aGlzLnNlZ21lbnQuZ2V0RGljdCgnVEFCTEUnKTtcblx0XHR0aGlzLl9QT1NUQUcgPSB0aGlzLnNlZ21lbnQuUE9TVEFHO1xuXHR9XG5cblx0ZG9PcHRpbWl6ZTxUIGV4dGVuZHMgSVdvcmREZWJ1Zz4od29yZHM6IFRbXSk6IFRbXVxuXHR7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cdFx0Y29uc3QgUE9TVEFHID0gdGhpcy5fUE9TVEFHO1xuXHRcdGNvbnN0IFRBQkxFID0gdGhpcy5fVEFCTEU7XG5cblx0XHRsZXQgaSA9IDA7XG5cdFx0bGV0IGxlbiA9IHdvcmRzLmxlbmd0aCAtIDE7XG5cblx0XHR3aGlsZSAoaSA8IGxlbilcblx0XHR7XG5cdFx0XHRsZXQgdzA6IElXb3JkRGVidWcgPSB3b3Jkc1tpIC0gMV07XG5cdFx0XHRsZXQgdzE6IElXb3JkRGVidWcgPSB3b3Jkc1tpXTtcblx0XHRcdGxldCB3MjogSVdvcmREZWJ1ZyA9IHdvcmRzW2kgKyAxXTtcblxuXHRcdFx0aWYgKCEodzEucCA9PT0gUE9TVEFHLkFfTlgpKVxuXHRcdFx0e1xuXHRcdFx0XHRpKys7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodzIpXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBudzogc3RyaW5nID0gdzEudyArIHcyLnc7XG5cdFx0XHRcdGxldCBtdzogSVdvcmREZWJ1ZyA9IFRBQkxFW253XTtcblxuXHRcdFx0XHRpZiAobXcpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsZXQgbmV3X3c6IElXb3JkRGVidWcgPSBzZWxmLmRlYnVnVG9rZW4oe1xuXHRcdFx0XHRcdFx0Li4ubXcsXG5cdFx0XHRcdFx0XHR3OiBudyxcblx0XHRcdFx0XHRcdG06IFt3MSwgdzJdLFxuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFt0aGlzLm5hbWVdOiAxLFxuXHRcdFx0XHRcdH0sIHRydWUpO1xuXG5cdFx0XHRcdFx0dGhpcy5zbGljZVRva2VuKHdvcmRzLCBpLCAyLCBuZXdfdyk7XG5cblx0XHRcdFx0XHRsZW4tLTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHdvcmRzO1xuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBpbml0ID0gRm9yZWlnbk9wdGltaXplci5pbml0LmJpbmQoRm9yZWlnbk9wdGltaXplcikgYXMgdHlwZW9mIEZvcmVpZ25PcHRpbWl6ZXIuaW5pdDtcblxuZXhwb3J0IGRlZmF1bHQgRm9yZWlnbk9wdGltaXplcjtcbiJdfQ== |
\ | No newline at end of file |