Initial commit

This commit is contained in:
Spencer Pincott committed 2024-07-15 22:20:13 -04:00
commit 97737ca1ae
16618 files changed
+934131

No files matched your search

File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"segmentit.js","sources":["../../src/POSTAG.js","../../src/Tokenizer.js","../../src/Optimizer.js","../../src/Segment.js","../../src/module/BaseModule.js","../../src/module/COLORS.js","../../src/module/AdjectiveOptimizer.js","../../src/module/CHS_NAMES.js","../../src/module/ChsNameTokenizer.js","../../src/module/DictOptimizer.js","../../src/module/EmailOptimizer.js","../../src/module/PunctuationTokenizer.js","../../src/module/URLTokenizer.js","../../src/module/ChsNameOptimizer.js","../../src/module/DatetimeOptimizer.js","../../src/module/DictTokenizer.js","../../src/module/ForeignTokenizer.js","../../src/module/SingleTokenizer.js","../../src/module/WildcardTokenizer.js","../../src/module/index.js","../../src/knowledge/index.js","../../src/index.js"],"sourcesContent":["// @flow\n\n/**\n * 单词类型\n */\n\nconst POSTAG = {\n D_A: 0x40000000, // 形容词 形语素\n D_B: 0x20000000, // 区别词 区别语素\n D_C: 0x10000000, // 连词 连语素\n D_D: 0x08000000, // 副词 副语素\n D_E: 0x04000000, // 叹词 叹语素\n D_F: 0x02000000, // 方位词 方位语素\n D_I: 0x01000000, // 成语\n D_L: 0x00800000, // 习语\n A_M: 0x00400000, // 数词 数语素\n D_MQ: 0x00200000, // 数量词\n D_N: 0x00100000, // 名词 名语素\n D_O: 0x00080000, // 拟声词\n D_P: 0x00040000, // 介词\n A_Q: 0x00020000, // 量词 量语素\n D_R: 0x00010000, // 代词 代语素\n D_S: 0x00008000, // 处所词\n D_T: 0x00004000, // 时间词\n D_U: 0x00002000, // 助词 助语素\n D_V: 0x00001000, // 动词 动语素\n D_W: 0x00000800, // 标点符号\n D_X: 0x00000400, // 非语素字\n D_Y: 0x00000200, // 语气词 语气语素\n D_Z: 0x00000100, // 状态词\n A_NR: 0x00000080, // 人名\n A_NS: 0x00000040, // 地名\n A_NT: 0x00000020, // 机构团体\n A_NX: 0x00000010, // 外文字符\n A_NZ: 0x00000008, // 其他专名\n D_ZH: 0x00000004, // 前接成分\n D_K: 0x00000002, // 后接成分\n UNK: 0x00000000, // 未知词性\n URL: 0x00000001, // 网址、邮箱地址\n};\n\nconst CN_POS_NAMES = {\n D_A: '形容词 形语素',\n D_B: '区别词 区别语素',\n D_C: '连词 连语素',\n D_D: '副词 副语素',\n D_E: '叹词 叹语素',\n D_F: '方位词 方位语素',\n D_I: '成语',\n D_L: '习语',\n A_M: '数词 数语素',\n D_MQ: '数量词',\n D_N: '名词 名语素',\n D_O: '拟声词',\n D_P: '介词',\n A_Q: '量词 量语素',\n D_R: '代词 代语素',\n D_S: '处所词',\n D_T: '时间词',\n D_U: '助词 助语素',\n D_V: '动词 动语素',\n D_W: '标点符号',\n D_X: '非语素字',\n D_Y: '语气词 语气语素',\n D_Z: '状态词',\n A_NR: '人名',\n A_NS: '地名',\n A_NT: '机构团体',\n A_NX: '外文字符',\n A_NZ: '其他专名',\n D_ZH: '前接成分',\n D_K: '后接成分',\n UNK: '未知',\n URL: '网址 邮箱地址',\n};\n\nconst EN_POS_NAMES = {\n D_A: 'a',\n D_B: 'b',\n D_C: 'c',\n D_D: 'd',\n D_E: 'e',\n D_F: 'f',\n D_I: 'i',\n D_L: 'l',\n A_M: 'm',\n D_MQ: 'mq',\n D_N: 'n',\n D_O: 'o',\n D_P: 'p',\n A_Q: 'q',\n D_R: 'r',\n D_S: 's',\n D_T: 't',\n D_U: 'u',\n D_V: 'v',\n D_W: 'w',\n D_X: 'x',\n D_Y: 'y',\n D_Z: 'z',\n A_NR: 'nr',\n A_NS: 'ns',\n A_NT: 'nt',\n A_NX: 'nx',\n A_NZ: 'nz',\n D_ZH: 'h',\n D_K: 'k',\n UNK: 'un',\n URL: 'uri',\n};\n\nexport function getPOSTagTranslator(POSTagDict: Object, I18NDict: Object): string {\n return (posTagNumber: number): string => {\n if (isNaN(posTagNumber)) {\n return I18NDict[posTagNumber] || I18NDict.UNK;\n }\n const result = [];\n for (const key in POSTagDict) {\n if ((posTagNumber & POSTagDict[key]) > 0) {\n result.push(I18NDict[key]);\n }\n }\n if (result.length < 1) {\n return I18NDict.UNK;\n }\n return result.toString();\n };\n}\n\nexport const cnPOSTag = getPOSTagTranslator(POSTAG, CN_POS_NAMES);\nexport const enPOSTag = getPOSTagTranslator(POSTAG, EN_POS_NAMES);\n\nexport default POSTAG;\n","// @flow\nimport type { SegmentToken } from './module/type';\n\nexport default class Tokenizer {\n /**\n * 分词模块管理器\n *\n * @param {Segment} 分词接口\n */\n constructor(segment) {\n this.segment = segment;\n }\n\n /**\n * 对一段文本进行分词\n *\n * @param {string} text 文本\n * @param {array} modules 分词模块数组\n * @return {array}\n */\n split(text, modules): SegmentToken[] {\n if (modules.length < 1) {\n throw Error('No tokenizer module!');\n }\n // 按顺序分别调用各个module来进行分词 : 各个module仅对没有识别类型的单词进行分词\n let result = [{ w: text }];\n modules.forEach(module => {\n result = module.split(result);\n });\n return result;\n }\n}\n","// @flow\nimport type { SegmentToken } from './module/type';\n\nexport default class Optimizer {\n /**\n * 优化模块管理器\n *\n * @param {Segment} 分词接口\n */\n constructoLine truncated