UNPKG

3.78 kBSource Map (JSON)View Raw
1{"version":3,"file":"AdjectiveOptimizer.js","sourceRoot":"","sources":["AdjectiveOptimizer.ts"],"names":[],"mappings":";;;AAAA,gCAAyD;AAGzD,0CAA0C;AAG1C;;GAEG;AACH,MAAa,kBAAmB,SAAQ,yBAAmB;IAA3D;;QAEC,SAAI,GAAG,oBAAoB,CAAC;IA6D7B,CAAC;IA3DA,UAAU,CAAC,KAAmB;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAC3B;YACC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,EACZ;gBACC,mCAAmC;gBACnC,IAAI,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAChD;oBACC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;oBAErB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;wBACrB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;qBACjB,CAAC,CAAC;iBACH;gBAED,+BAA+B;gBAC/B,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1E;oBACC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;oBACrB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;oBAErB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;wBACrB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;qBACjB,CAAC,CAAC;iBACH;aACD;YACD,UAAU;YACV,KAAK,IAAI,CAAC,CAAC;SACX;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,SAAS,CAAC,GAAsB;QAE/B;;;;;UAKE;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO,CACN,GAAG,KAAK,MAAM,CAAC,GAAG;YAClB,GAAG,KAAK,MAAM,CAAC,IAAI;YACnB,GAAG,KAAK,MAAM,CAAC,IAAI;YACnB,GAAG,KAAK,MAAM,CAAC,IAAI;YACnB,GAAG,KAAK,MAAM,CAAC,IAAI;YACnB,GAAG,KAAK,MAAM,CAAC,IAAI;YACnB,GAAG,KAAK,MAAM,CAAC,GAAG,CAClB,CAAC;IACH,CAAC;CACD;AA/DD,gDA+DC;AAEY,QAAA,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAmC,CAAC;AAEvG,kBAAe,kBAAkB,CAAA","sourcesContent":["import { SubSModule, SubSModuleOptimizer } from '../mod';\nimport Segment, { IWord } from '../Segment';\n\nimport { COLOR_ALL } from '../mod/COLORS';\nimport { IWordDebug } from '../util';\n\n/**\n * 把一些错认为名词的词标注为形容词,或者对名词作定语的情况\n */\nexport class AdjectiveOptimizer extends SubSModuleOptimizer\n{\n\tname = 'AdjectiveOptimizer';\n\n\tdoOptimize(words: IWordDebug[]): IWordDebug[]\n\t{\n\t\tconst POSTAG = this._POSTAG;\n\t\tlet index = 0;\n\t\twhile (index < words.length)\n\t\t{\n\t\t\tconst word = words[index];\n\t\t\tconst nextword = words[index + 1];\n\t\t\tif (nextword)\n\t\t\t{\n\t\t\t\t// 对于<颜色>+<的>,直接判断颜色是形容词(字典里颜色都是名词)\n\t\t\t\tif (nextword.p & POSTAG.D_U && COLOR_ALL[word.w])\n\t\t\t\t{\n\t\t\t\t\tword.op = word.op || word.p;\n\t\t\t\t\tword.p |= POSTAG.D_A;\n\n\t\t\t\t\tthis.debugToken(word, {\n\t\t\t\t\t\t[this.name]: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// 如果是连续的两个名词,前一个是颜色,那这个颜色也是形容词\n\t\t\t\tif (word.p & POSTAG.D_N && this.isNominal(nextword.p) && COLOR_ALL[word.w])\n\t\t\t\t{\n\t\t\t\t\tword.op = word.op || word.p;\n\t\t\t\t\tword.p |= POSTAG.D_A;\n\t\t\t\t\tword.p |= POSTAG.D_N;\n\n\t\t\t\t\tthis.debugToken(word, {\n\t\t\t\t\t\t[this.name]: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 移到下一个单词\n\t\t\tindex += 1;\n\t\t}\n\t\treturn words;\n\t}\n\n\tisNominal(pos: number | number[]): boolean\n\t{\n\t\t/*\n\t\tif (Array.isArray(pos))\n\t\t{\n\t\t\treturn this.isNominal(pos[0]);\n\t\t}\n\t\t*/\n\n\t\tconst POSTAG = this._POSTAG;\n\t\treturn (\n\t\t\tpos === POSTAG.D_N ||\n\t\t\tpos === POSTAG.A_NT ||\n\t\t\tpos === POSTAG.A_NX ||\n\t\t\tpos === POSTAG.A_NZ ||\n\t\t\tpos === POSTAG.A_NR ||\n\t\t\tpos === POSTAG.A_NS ||\n\t\t\tpos === POSTAG.URL\n\t\t);\n\t}\n}\n\nexport const init = AdjectiveOptimizer.init.bind(AdjectiveOptimizer) as typeof AdjectiveOptimizer.init;\n\nexport default AdjectiveOptimizer\n"]}
\No newline at end of file