UNPKG

23.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"DictOptimizer.js","sourceRoot":"","sources":["DictOptimizer.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport { SubSModule, SubSModuleOptimizer, ISubOptimizerCreate } from '../mod';\nimport { Segment, IWord, IDICT } from '../Segment';\n// @ts-ignore\nimport { UString } from 'uni-string';\nimport IPOSTAG from '../POSTAG';\nimport { debug, IWordDebug } from '../util';\nimport { zhRegExp } from 'regexp-cjk';\n\nconst DIRECTIONS_REGEXP = /^[東西南北东]+$/;\n\n/**\n * 词典优化模块\n *\n * @author 老雷<leizongmin@gmail.com>\n */\nexport class DictOptimizer extends SubSModuleOptimizer\n{\n\n\tprotected _TABLE: IDICT<IWord>;\n\n\tname = 'DictOptimizer';\n\n\t_cache()\n\t{\n\t\tsuper._cache();\n\t\tthis._TABLE = this.segment.getDict('TABLE');\n\t\tthis._POSTAG = this.segment.POSTAG;\n\t}\n\n\tisMergeable(w1: IWord, w2: IWord, {\n\t\tPOSTAG,\n\t\tTABLE,\n\t\tnw,\n\t\ti,\n\t\tnw_cache,\n\t\tnw_cache_exists,\n\t}: {\n\t\tPOSTAG: typeof IPOSTAG,\n\t\tTABLE: IDICT,\n\t\tnw: string,\n\t\ti: number,\n\t\tnw_cache: IWord,\n\t\tnw_cache_exists: boolean,\n\t}): boolean\n\t{\n\t\tlet bool: boolean;\n\t\tlet m: number;\n\n\t\t/**\n\t\t * 原始判斷模式\n\t\t */\n\t\tif (w1.p == w2.p)\n\t\t{\n\t\t\tbool = true;\n\t\t}\n\t\t/**\n\t\t * 不確定沒有BUG 但原始模式已經不合需求 因為單一項目多個詞性\n\t\t */\n\t\telse if (m = (w1.p & w2.p))\n\t\t{\n\t\t\tif (1 || m & POSTAG.D_N)\n\t\t\t{\n\t\t\t\tbool = true;\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * 允許例如 幾 + %\n\t\t */\n\t\telse if (w1.p && typeof w2.p == 'undefined')\n\t\t{\n\t\t\tbool = true;\n\t\t}\n\t\telse if (w1.p & POSTAG.D_D && w2.p & POSTAG.D_V)\n\t\t{\n\t\t\t({\n\t\t\t\tnw_cache,\n\t\t\t\tnw_cache_exists,\n\t\t\t} = this._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\tlet mw = nw_cache;\n\n\t\t\tif (mw && (mw.p & POSTAG.D_D || mw.p & POSTAG.D_V))\n\t\t\t{\n\t\t\t\tbool = true;\n\t\t\t}\n\t\t}\n\n\t\treturn bool\n\t\t\t&& this._getWordCache(nw, nw_cache, nw_cache_exists).nw_cache_exists;\n\t}\n\n\t_getWordCache(nw: string, nw_cache: IWord, nw_cache_exists: boolean)\n\t{\n\t\tif (typeof nw_cache_exists === 'undefined')\n\t\t{\n\t\t\tconst TABLE = this._TABLE;\n\n\t\t\tnw_cache = nw_cache || TABLE[nw];\n\t\t\tnw_cache_exists = !!nw_cache;\n\t\t}\n\n\t\treturn {\n\t\t\tnw,\n\t\t\tnw_cache,\n\t\t\tnw_cache_exists,\n\t\t}\n\t}\n\n\t/**\n\t * 词典优化\n\t *\n\t * @param {array} words 单词数组\n\t * @param {bool} is_not_first 是否为管理器调用的\n\t * @return {array}\n\t */\n\tdoOptimize(words: IWord[], is_not_first: boolean): IWord[]\n\t{\n\t\t//debug(words);\n\t\tif (typeof is_not_first == 'undefined')\n\t\t{\n\t\t\tis_not_first = false;\n\t\t}\n\t\t// 合并相邻的能组成一个单词的两个词\n\t\tconst TABLE = this._TABLE;\n\t\tconst POSTAG = this._POSTAG;\n\t\tconst self = this;\n\n\t\tlet i = 0;\n\t\tlet ie = words.length - 1;\n\t\twhile (i < ie)\n\t\t{\n\t\t\tlet w1 = words[i];\n\t\t\tlet w2 = words[i + 1];\n\t\t\t//debug(w1.w + ', ' + w2.w);\n\n\t\t\t// ==========================================\n\t\t\tlet nw: string = w1.w + w2.w;\n\n\t\t\tlet nw_cache: IWord;\n\t\t\tlet nw_cache_exists: boolean;\n\n\t\t\t/**\n\t\t\t * 形容词 + 助词 = 形容词,如: 不同 + 的 = 不同的\n\t\t\t */\n\t\t\tif (w1.w != '了'\n\t\t\t\t&& (w1.p & POSTAG.D_A)\n\t\t\t\t&& (w2.p & POSTAG.D_U)\n\t\t\t)\n\t\t\t{\n\t\t\t\tlet p = POSTAG.D_A;\n\t\t\t\tlet f: number;\n\n\t\t\t\t({\n\t\t\t\t\tnw_cache,\n\t\t\t\t\tnw_cache_exists,\n\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\tlet mw = nw_cache;\n\n\t\t\t\tif (!mw || (mw.p & POSTAG.D_A))\n\t\t\t\t{\n\t\t\t\t\tif (mw && (mw.p & POSTAG.D_A))\n\t\t\t\t\t{\n\t\t\t\t\t\tp = mw.p;\n\t\t\t\t\t\tf = mw.f;\n\t\t\t\t\t}\n\t\t\t\t\telse if (w1.p & POSTAG.BAD)\n\t\t\t\t\t{\n\t\t\t\t\t\tp = POSTAG.D_A + POSTAG.BAD;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\t\tw: nw,\n\t\t\t\t\t\t//p: ((nw in TABLE && TABLE[nw].p & POSTAG.D_A) ? TABLE[nw].p : POSTAG.D_A),\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tf,\n\t\t\t\t\t\tm: [w1, w2],\n\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t[this.name]: 1,\n\t\t\t\t\t});\n\t\t\t\t\tie--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * 形容詞 + 名詞 = 名詞\n\t\t\t */\n\t\t\tif ((w1.p & POSTAG.D_A)\n\t\t\t\t&& (w2.p & POSTAG.D_N)\n\t\t\t)\n\t\t\t{\n\t\t\t\t({\n\t\t\t\t\tnw_cache,\n\t\t\t\t\tnw_cache_exists,\n\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\tif (nw_cache_exists)\n\t\t\t\t{\n\t\t\t\t\tlet mw = nw_cache;\n\n\t\t\t\t\tif (mw.p & POSTAG.D_N)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\t\t\tw: nw,\n\t\t\t\t\t\t\tp: mw.p,\n\t\t\t\t\t\t\tf: mw.f,\n\t\t\t\t\t\t\tm: [w1, w2],\n\t\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t\t[this.name]: 7,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tie--;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 能组成一个新词的(词性必须相同)\n\n\t\t\tif (this.isMergeable(w1, w2, {\n\t\t\t\tnw,\n\t\t\t\tPOSTAG,\n\t\t\t\tTABLE,\n\t\t\t\ti,\n\t\t\t\tnw_cache,\n\t\t\t\tnw_cache_exists,\n\t\t\t}))\n\t\t\t//if (w1.p == w2.p && nw in TABLE)\n\t\t\t{\n\t\t\t\t({\n\t\t\t\t\tnw_cache,\n\t\t\t\t\tnw_cache_exists,\n\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\tlet mw = nw_cache;\n\n\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\tw: nw,\n\t\t\t\t\tp: mw.p,\n\t\t\t\t\tf: mw.f,\n\t\t\t\t\tm: [w1, w2],\n\t\t\t\t}, undefined, {\n\t\t\t\t\t[this.name]: 2,\n\t\t\t\t});\n\t\t\t\tie--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// ============================================\n\t\t\t// 数词组合\n\t\t\tif ((w1.p & POSTAG.A_M))\n\t\t\t{\n\t\t\t\t//debug(w2.w + ' ' + (w2.p & POSTAG.A_M));\n\t\t\t\t// 百分比数字 如 10%,或者下一个词也是数词,则合并\n\t\t\t\tif ((\n\t\t\t\t\tw2.p & POSTAG.A_M\n\t\t\t\t\t&& !/^第/.test(w2.w)\n\t\t\t\t) || w2.w == '%' || w2.w == '%')\n\t\t\t\t{\n\t\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\t\tw: w1.w + w2.w,\n\t\t\t\t\t\tp: POSTAG.A_M,\n\t\t\t\t\t\tm: [w1, w2],\n\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t[this.name]: 3,\n\t\t\t\t\t});\n\t\t\t\t\tie--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// 数词 + 量词,合并。如: 100个\n\t\t\t\tif ((w2.p & POSTAG.A_Q))\n\t\t\t\t{\n\t\t\t\t\t// 数量词\n\t\t\t\t\tlet p = POSTAG.D_MQ;\n\t\t\t\t\tlet nw: string = w1.w + w2.w;\n\n\t\t\t\t\t({\n\t\t\t\t\t\tnw_cache,\n\t\t\t\t\t\tnw_cache_exists,\n\t\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\t\tp = this._mergeWordHowManyProp(p, w2.p, nw_cache?.p);\n\n\t\t\t\t\t/*\n\t\t\t\t\tif (nw_cache)\n\t\t\t\t\t{\n\t\t\t\t\t\tp = nw_cache.p | POSTAG.D_MQ;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (w2.p & POSTAG.D_T)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tp = p | POSTAG.D_T;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (w2.p & POSTAG.D_N)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tp = p | POSTAG.D_N;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (w2.p & POSTAG.D_V)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tp = p | POSTAG.D_V;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t */\n\n\t\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\t\tw: nw,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tm: [w1, w2],\n\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t[this.name]: 4,\n\t\t\t\t\t});\n\t\t\t\t\tie--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// 带小数点的数字 ,如 “3 . 14”,或者 “十五点三”\n\t\t\t\t// 数词 + \"分之\" + 数词,如“五十分之一”\n\t\t\t\tlet w3 = words[i + 2];\n\t\t\t\tif (w3 && (w3.p & POSTAG.A_M))\n\t\t\t\t{\n\t\t\t\t\tif (w2.w == '.'\n\t\t\t\t\t\t|| w2.w == '点'\n\t\t\t\t\t\t|| w2.w == '點'\n\t\t\t\t\t\t|| w2.w == '分之'\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sliceToken(words, i, 3, {\n\t\t\t\t\t\t\tw: w1.w + w2.w + w3.w,\n\t\t\t\t\t\t\tp: POSTAG.A_M,\n\t\t\t\t\t\t\tm: [w1, w2, w3],\n\t\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t\t[this.name]: 5,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tie -= 2;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * 支援 `最多容納59,000個人,或5.9萬人,再多就不行了.這是環評的結論.`\n\t\t\t\t\t */\n\t\t\t\t\tif (w2.w == ',')\n\t\t\t\t\t{\n\t\t\t\t\t\tlet _r1 = /^[\\d0-9]+$/;\n\t\t\t\t\t\tlet _r2 = /^(?:(?:[\\d0-9]+)?(?:\\.[\\d0-9]+)|(?:[\\d0-9]+))$/;\n\n\t\t\t\t\t\tif (_r1.test(w1.w) && _r2.test(w3.w))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.sliceToken(words, i, 3, {\n\t\t\t\t\t\t\t\tw: w1.w + w2.w + w3.w,\n\t\t\t\t\t\t\t\tp: POSTAG.A_M,\n\t\t\t\t\t\t\t\tm: [w1, w2, w3],\n\t\t\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t\t\t[this.name]: 6,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tie -= 2;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (/^[數数幾几][百千萬十億兆万亿]$/.test(w1.w) && w2.p & POSTAG.A_Q)\n\t\t\t{\n\t\t\t\tlet ow: string = w1.w + w2.w;\n\t\t\t\tlet nw: string = w1.w + w2.w;\n\n\t\t\t\tif (0 && /^几/.test(nw))\n\t\t\t\t{\n\t\t\t\t\tnw = nw.replace(/^几/, '幾')\n\t\t\t\t}\n\n\t\t\t\t({\n\t\t\t\t\tnw_cache,\n\t\t\t\t\tnw_cache_exists,\n\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\tlet p = this._mergeWordHowManyProp(POSTAG.D_MQ, w2.p, nw_cache?.p);\n\n\t\t\t\tthis.sliceToken(words, i, 2, {\n\t\t\t\t\tw: nw,\n\t\t\t\t\tp,\n\t\t\t\t\tm: [w1, w2],\n\t\t\t\t}, undefined, {\n\t\t\t\t\t[this.name]: 9,\n\t\t\t\t});\n\t\t\t\tie--;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (/^[數数幾几]$/.test(w1.w) && w2.p & POSTAG.A_M && words[i + 2]?.p & POSTAG.A_Q)\n\t\t\t{\n\t\t\t\tlet w3 = words[i + 2];\n\n\t\t\t\tlet nw: string;\n\n\t\t\t\tif (0 && w1.w === '几')\n\t\t\t\t{\n\t\t\t\t\tnw = '幾' + w2.w + w3.w;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnw = w1.w + w2.w + w3.w;\n\t\t\t\t}\n\n\t\t\t\tlet nw_cache: IWord = this._TABLE[nw];\n\n\t\t\t\t/**\n\t\t\t\t * 已經看過數百遍的動畫。\n\t\t\t\t */\n\t\t\t\tif (!nw_cache?.p)\n\t\t\t\t{\n\t\t\t\t\tlet p = this._mergeWordHowManyProp(POSTAG.D_MQ, w3.p, nw_cache?.p);\n\n\t\t\t\t\tthis.sliceToken(words, i, 3, {\n\t\t\t\t\t\tw: nw,\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tm: [w1, w2, w3],\n\t\t\t\t\t}, undefined, {\n\t\t\t\t\t\t[this.name]: 9,\n\t\t\t\t\t});\n\t\t\t\t\tie -= 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 修正 “十五点五八”问题\n\t\t\tif ((w1.p & POSTAG.D_MQ) && ['點', '点'].includes(w1.w.substr(-1)) && w2.p & POSTAG.A_M)\n\t\t\t{\n\t\t\t\t//debug(w1, w2);\n\t\t\t\tlet i2 = 2;\n\t\t\t\tlet w4w = '';\n\t\t\t\tfor (let j = i + i2; j < ie; j++)\n\t\t\t\t{\n\t\t\t\t\tlet w3 = words[j];\n\t\t\t\t\tif ((w3.p & POSTAG.A_M) > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tw4w += w3.w;\n\t\t\t\t\t\ti2++;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sliceToken(words, i, i2, {\n\t\t\t\t\tw: w1.w + w2.w + w4w,\n\t\t\t\t\tp: POSTAG.D_MQ, // 数量词\n\t\t\t\t\tm: [w1, w2, w4w],\n\t\t\t\t}, undefined, {\n\t\t\t\t\t[this.name]: 6,\n\t\t\t\t});\n\t\t\t\tie -= i2 - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * 合併 東南西北\n\t\t\t */\n\t\t\tif (DIRECTIONS_REGEXP.test(w1.w))\n\t\t\t{\n\t\t\t\tif (DIRECTIONS_REGEXP.test(w2.w))\n\t\t\t\t{\n\t\t\t\t\t({\n\t\t\t\t\t\tnw_cache,\n\t\t\t\t\t\tnw_cache_exists,\n\t\t\t\t\t} = self._getWordCache(nw, nw_cache, nw_cache_exists));\n\n\t\t\t\t\tlet mw: IWordDebug = this.createToken({\n\t\t\t\t\t\tp: POSTAG.D_F,\n\t\t\t\t\t\t...nw_cache,\n\t\t\t\t\t\tw: nw,\n\t\t\t\t\t\tm: [w1, w2],\n\t\t\t\t\t});\n\n\t\t\t\t\tmw.p = mw.p | POSTAG.D_F;\n\n\t\t\t\t\tthis.sliceToken(words, i, 2, mw, true, {\n\t\t\t\t\t\t[this.name]: 8,\n\t\t\t\t\t});\n\n\t\t\t\t\tie--;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 移到下一个词\n\t\t\ti++;\n\t\t}\n\n\t\t// 针对组合数字后无法识别新组合的数字问题,需要重新扫描一次\n\t\treturn is_not_first === true ? words : this.doOptimize(words, true);\n\t}\n\n\t/**\n\t * 數詞 + 量詞\n\t */\n\t_mergeWordHowManyProp(p: number, p2: number, p3?: number)\n\t{\n\t\tif (p3)\n\t\t{\n\t\t\tp = p3 | this._POSTAG.D_MQ;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (p2 & this._POSTAG.D_T)\n\t\t\t{\n\t\t\t\tp = p | this._POSTAG.D_T;\n\t\t\t}\n\t\t\tif (p2 & this._POSTAG.D_N)\n\t\t\t{\n\t\t\t\tp = p | this._POSTAG.D_N;\n\t\t\t}\n\t\t\tif (p2 & this._POSTAG.D_V)\n\t\t\t{\n\t\t\t\tp = p | this._POSTAG.D_V;\n\t\t\t}\n\t\t}\n\n\t\treturn p\n\t}\n\n}\n\nexport const init = DictOptimizer.init.bind(DictOptimizer) as ISubOptimizerCreate<DictOptimizer>;\n\nexport default DictOptimizer;\n"]}
\No newline at end of file