UNPKG

kuroshiro-browser

Version:

Kuroshiro+Analyzer+Kuromoji Combined and Optimized for Browser Usage Only

2,049 lines 73.2 kB
var cr = Object.defineProperty; var fr = (n, r, t) => r in n ? cr(n, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[r] = t; var q = (n, r, t) => (fr(n, typeof r != "symbol" ? r + "" : r, t), t); const D = { NIPPON: "nippon", PASSPORT: "passport", HEPBURN: "hepburn" }, Z = { nippon: { // 数字と記号 "1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6", "7": "7", "8": "8", "9": "9", "0": "0", "!": "!", "“": '"', "”": '"', "#": "#", "$": "$", "%": "%", "&": "&", "’": "'", "(": "(", ")": ")", "=": "=", "~": "~", "|": "|", "@": "@", "‘": "`", "+": "+", "*": "*", ";": ";", ":": ":", "<": "<", ">": ">", "、": ",", "。": ".", "/": "/", "?": "?", "_": "_", "・": "・", "「": '"', "」": '"', "{": "{", "}": "}", "¥": "\\", "^": "^", // 直音-清音(ア~ノ) あ: "a", い: "i", う: "u", え: "e", お: "o", ア: "a", イ: "i", ウ: "u", エ: "e", オ: "o", か: "ka", き: "ki", く: "ku", け: "ke", こ: "ko", カ: "ka", キ: "ki", ク: "ku", ケ: "ke", コ: "ko", さ: "sa", し: "si", す: "su", せ: "se", そ: "so", サ: "sa", シ: "si", ス: "su", セ: "se", ソ: "so", た: "ta", ち: "ti", つ: "tu", て: "te", と: "to", タ: "ta", チ: "ti", ツ: "tu", テ: "te", ト: "to", な: "na", に: "ni", ぬ: "nu", ね: "ne", の: "no", ナ: "na", ニ: "ni", ヌ: "nu", ネ: "ne", ノ: "no", // 直音-清音(ハ~ヲ) は: "ha", ひ: "hi", ふ: "hu", へ: "he", ほ: "ho", ハ: "ha", ヒ: "hi", フ: "hu", ヘ: "he", ホ: "ho", ま: "ma", み: "mi", む: "mu", め: "me", も: "mo", マ: "ma", ミ: "mi", ム: "mu", メ: "me", モ: "mo", や: "ya", ゆ: "yu", よ: "yo", ヤ: "ya", ユ: "yu", ヨ: "yo", ら: "ra", り: "ri", る: "ru", れ: "re", ろ: "ro", ラ: "ra", リ: "ri", ル: "ru", レ: "re", ロ: "ro", わ: "wa", ゐ: "wi", ゑ: "we", を: "wo", ワ: "wa", ヰ: "wi", ヱ: "we", ヲ: "wo", // 直音-濁音(ガ~ボ)、半濁音(パ~ポ) が: "ga", ぎ: "gi", ぐ: "gu", げ: "ge", ご: "go", ガ: "ga", ギ: "gi", グ: "gu", ゲ: "ge", ゴ: "go", ざ: "za", じ: "zi", ず: "zu", ぜ: "ze", ぞ: "zo", ザ: "za", ジ: "zi", ズ: "zu", ゼ: "ze", ゾ: "zo", だ: "da", ぢ: "di", づ: "du", で: "de", ど: "do", ダ: "da", ヂ: "di", ヅ: "du", デ: "de", ド: "do", ば: "ba", び: "bi", ぶ: "bu", べ: "be", ぼ: "bo", バ: "ba", ビ: "bi", ブ: "bu", ベ: "be", ボ: "bo", ぱ: "pa", ぴ: "pi", ぷ: "pu", ぺ: "pe", ぽ: "po", パ: "pa", ピ: "pi", プ: "pu", ペ: "pe", ポ: "po", // 拗音-清音(キャ~リョ) きゃ: "kya", きゅ: "kyu", きょ: "kyo", しゃ: "sya", しゅ: "syu", しょ: "syo", ちゃ: "tya", ちゅ: "tyu", ちょ: "tyo", にゃ: "nya", にゅ: "nyu", にょ: "nyo", ひゃ: "hya", ひゅ: "hyu", ひょ: "hyo", みゃ: "mya", みゅ: "myu", みょ: "myo", りゃ: "rya", りゅ: "ryu", りょ: "ryo", キャ: "kya", キュ: "kyu", キョ: "kyo", シャ: "sya", シュ: "syu", ショ: "syo", チャ: "tya", チュ: "tyu", チョ: "tyo", ニャ: "nya", ニュ: "nyu", ニョ: "nyo", ヒャ: "hya", ヒュ: "hyu", ヒョ: "hyo", ミャ: "mya", ミュ: "myu", ミョ: "myo", リャ: "rya", リュ: "ryu", リョ: "ryo", // 拗音-濁音(ギャ~ビョ)、半濁音(ピャ~ピョ)、合拗音(クヮ、グヮ) ぎゃ: "gya", ぎゅ: "gyu", ぎょ: "gyo", じゃ: "zya", じゅ: "zyu", じょ: "zyo", ぢゃ: "dya", ぢゅ: "dyu", ぢょ: "dyo", びゃ: "bya", びゅ: "byu", びょ: "byo", ぴゃ: "pya", ぴゅ: "pyu", ぴょ: "pyo", くゎ: "kwa", ぐゎ: "gwa", ギャ: "gya", ギュ: "gyu", ギョ: "gyo", ジャ: "zya", ジュ: "zyu", ジョ: "zyo", ヂャ: "dya", ヂュ: "dyu", ヂョ: "dyo", ビャ: "bya", ビュ: "byu", ビョ: "byo", ピャ: "pya", ピュ: "pyu", ピョ: "pyo", クヮ: "kwa", グヮ: "gwa", // 小書きの仮名、符号 ぁ: "a", ぃ: "i", ぅ: "u", ぇ: "e", ぉ: "o", ゃ: "ya", ゅ: "yu", ょ: "yo", ゎ: "wa", ァ: "a", ィ: "i", ゥ: "u", ェ: "e", ォ: "o", ャ: "ya", ュ: "yu", ョ: "yo", ヮ: "wa", ヵ: "ka", ヶ: "ke", ん: "n", ン: "n", // ー: "", " ": " ", // 外来音(イェ~グォ) いぇ: "ye", // うぃ: "", // うぇ: "", // うぉ: "", きぇ: "kye", // くぁ: "", くぃ: "kwi", くぇ: "kwe", くぉ: "kwo", // ぐぁ: "", ぐぃ: "gwi", ぐぇ: "gwe", ぐぉ: "gwo", イェ: "ye", // ウィ: "", // ウェ: "", // ウォ: "", // ヴ: "", // ヴァ: "", // ヴィ: "", // ヴェ: "", // ヴォ: "", // ヴュ: "", // ヴョ: "", キェ: "kya", // クァ: "", クィ: "kwi", クェ: "kwe", クォ: "kwo", // グァ: "", グィ: "gwi", グェ: "gwe", グォ: "gwo", // 外来音(シェ~フョ) しぇ: "sye", じぇ: "zye", すぃ: "swi", ずぃ: "zwi", ちぇ: "tye", つぁ: "twa", つぃ: "twi", つぇ: "twe", つぉ: "two", // てぃ: "ti", // てゅ: "tyu", // でぃ: "di", // でゅ: "dyu", // とぅ: "tu", // どぅ: "du", にぇ: "nye", ひぇ: "hye", ふぁ: "hwa", ふぃ: "hwi", ふぇ: "hwe", ふぉ: "hwo", ふゅ: "hwyu", ふょ: "hwyo", シェ: "sye", ジェ: "zye", スィ: "swi", ズィ: "zwi", チェ: "tye", ツァ: "twa", ツィ: "twi", ツェ: "twe", ツォ: "two", // ティ: "ti", // テュ: "tyu", // ディ: "di", // デュ: "dyu", // トゥ: "tu", // ドゥ: "du", ニェ: "nye", ヒェ: "hye", ファ: "hwa", フィ: "hwi", フェ: "hwe", フォ: "hwo", フュ: "hwyu", フョ: "hwyo" }, passport: { // 数字と記号 "1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6", "7": "7", "8": "8", "9": "9", "0": "0", "!": "!", "“": '"', "”": '"', "#": "#", "$": "$", "%": "%", "&": "&", "’": "'", "(": "(", ")": ")", "=": "=", "~": "~", "|": "|", "@": "@", "‘": "`", "+": "+", "*": "*", ";": ";", ":": ":", "<": "<", ">": ">", "、": ",", "。": ".", "/": "/", "?": "?", "_": "_", "・": "・", "「": '"', "」": '"', "{": "{", "}": "}", "¥": "\\", "^": "^", // 直音-清音(ア~ノ) あ: "a", い: "i", う: "u", え: "e", お: "o", ア: "a", イ: "i", ウ: "u", エ: "e", オ: "o", か: "ka", き: "ki", く: "ku", け: "ke", こ: "ko", カ: "ka", キ: "ki", ク: "ku", ケ: "ke", コ: "ko", さ: "sa", し: "shi", す: "su", せ: "se", そ: "so", サ: "sa", シ: "shi", ス: "su", セ: "se", ソ: "so", た: "ta", ち: "chi", つ: "tsu", て: "te", と: "to", タ: "ta", チ: "chi", ツ: "tsu", テ: "te", ト: "to", な: "na", に: "ni", ぬ: "nu", ね: "ne", の: "no", ナ: "na", ニ: "ni", ヌ: "nu", ネ: "ne", ノ: "no", // 直音-清音(ハ~ヲ) は: "ha", ひ: "hi", ふ: "fu", へ: "he", ほ: "ho", ハ: "ha", ヒ: "hi", フ: "fu", ヘ: "he", ホ: "ho", ま: "ma", み: "mi", む: "mu", め: "me", も: "mo", マ: "ma", ミ: "mi", ム: "mu", メ: "me", モ: "mo", や: "ya", ゆ: "yu", よ: "yo", ヤ: "ya", ユ: "yu", ヨ: "yo", ら: "ra", り: "ri", る: "ru", れ: "re", ろ: "ro", ラ: "ra", リ: "ri", ル: "ru", レ: "re", ロ: "ro", わ: "wa", ゐ: "i", ゑ: "e", を: "o", ワ: "wa", ヰ: "i", ヱ: "e", ヲ: "o", // 直音-濁音(ガ~ボ)、半濁音(パ~ポ) が: "ga", ぎ: "gi", ぐ: "gu", げ: "ge", ご: "go", ガ: "ga", ギ: "gi", グ: "gu", ゲ: "ge", ゴ: "go", ざ: "za", じ: "ji", ず: "zu", ぜ: "ze", ぞ: "zo", ザ: "za", ジ: "ji", ズ: "zu", ゼ: "ze", ゾ: "zo", だ: "da", ぢ: "ji", づ: "zu", で: "de", ど: "do", ダ: "da", ヂ: "ji", ヅ: "zu", デ: "de", ド: "do", ば: "ba", び: "bi", ぶ: "bu", べ: "be", ぼ: "bo", バ: "ba", ビ: "bi", ブ: "bu", ベ: "be", ボ: "bo", ぱ: "pa", ぴ: "pi", ぷ: "pu", ぺ: "pe", ぽ: "po", パ: "pa", ピ: "pi", プ: "pu", ペ: "pe", ポ: "po", // 拗音-清音(キャ~リョ) きゃ: "kya", きゅ: "kyu", きょ: "kyo", しゃ: "sha", しゅ: "shu", しょ: "sho", ちゃ: "cha", ちゅ: "chu", ちょ: "cho", にゃ: "nya", にゅ: "nyu", にょ: "nyo", ひゃ: "hya", ひゅ: "hyu", ひょ: "hyo", みゃ: "mya", みゅ: "myu", みょ: "myo", りゃ: "rya", りゅ: "ryu", りょ: "ryo", キャ: "kya", キュ: "kyu", キョ: "kyo", シャ: "sha", シュ: "shu", ショ: "sho", チャ: "cha", チュ: "chu", チョ: "cho", ニャ: "nya", ニュ: "nyu", ニョ: "nyo", ヒャ: "hya", ヒュ: "hyu", ヒョ: "hyo", ミャ: "mya", ミュ: "myu", ミョ: "myo", リャ: "rya", リュ: "ryu", リョ: "ryo", // 拗音-濁音(ギャ~ビョ)、半濁音(ピャ~ピョ)、合拗音(クヮ、グヮ) ぎゃ: "gya", ぎゅ: "gyu", ぎょ: "gyo", じゃ: "ja", じゅ: "ju", じょ: "jo", ぢゃ: "ja", ぢゅ: "ju", ぢょ: "jo", びゃ: "bya", びゅ: "byu", びょ: "byo", ぴゃ: "pya", ぴゅ: "pyu", ぴょ: "pyo", // くゎ: "", // ぐゎ: "", ギャ: "gya", ギュ: "gyu", ギョ: "gyo", ジャ: "ja", ジュ: "ju", ジョ: "jo", ヂャ: "ja", ヂュ: "ju", ヂョ: "jo", ビャ: "bya", ビュ: "byu", ビョ: "byo", ピャ: "pya", ピュ: "pyu", ピョ: "pyo", // クヮ: "", // グヮ: "", // 小書きの仮名、符号 ぁ: "a", ぃ: "i", ぅ: "u", ぇ: "e", ぉ: "o", ゃ: "ya", ゅ: "yu", ょ: "yo", ゎ: "wa", ァ: "a", ィ: "i", ゥ: "u", ェ: "e", ォ: "o", ャ: "ya", ュ: "yu", ョ: "yo", ヮ: "wa", ヵ: "ka", ヶ: "ke", ん: "n", ン: "n", // ー: "", " ": " ", // 外来音(イェ~グォ) // いぇ: "", // うぃ: "", // うぇ: "", // うぉ: "", // きぇ: "", // くぁ: "", // くぃ: "", // くぇ: "", // くぉ: "", // ぐぁ: "", // ぐぃ: "", // ぐぇ: "", // ぐぉ: "", // イェ: "", // ウィ: "", // ウェ: "", // ウォ: "", ヴ: "b" // ヴァ: "", // ヴィ: "", // ヴェ: "", // ヴォ: "", // ヴュ: "", // ヴョ: "", // キェ: "", // クァ: "", // クィ: "", // クェ: "", // クォ: "", // グァ: "", // グィ: "", // グェ: "", // グォ: "", // 外来音(シェ~フョ) // しぇ: "", // じぇ: "", // すぃ: "", // ずぃ: "", // ちぇ: "", // つぁ: "", // つぃ: "", // つぇ: "", // つぉ: "", // てぃ: "", // てゅ: "", // でぃ: "", // でゅ: "", // とぅ: "", // どぅ: "", // にぇ: "", // ひぇ: "", // ふぁ: "", // ふぃ: "", // ふぇ: "", // ふぉ: "", // ふゅ: "", // ふょ: "", // シェ: "", // ジェ: "", // スィ: "", // ズィ: "", // チェ: "", // ツァ: "", // ツィ: "", // ツェ: "", // ツォ: "", // ティ: "", // テュ: "", // ディ: "", // デュ: "", // トゥ: "", // ドゥ: "", // ニェ: "", // ヒェ: "", // ファ: "", // フィ: "", // フェ: "", // フォ: "", // フュ: "", // フョ: "" }, hepburn: { // 数字と記号 "1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6", "7": "7", "8": "8", "9": "9", "0": "0", "!": "!", "“": '"', "”": '"', "#": "#", "$": "$", "%": "%", "&": "&", "’": "'", "(": "(", ")": ")", "=": "=", "~": "~", "|": "|", "@": "@", "‘": "`", "+": "+", "*": "*", ";": ";", ":": ":", "<": "<", ">": ">", "、": ",", "。": ".", "/": "/", "?": "?", "_": "_", "・": "・", "「": '"', "」": '"', "{": "{", "}": "}", "¥": "\\", "^": "^", // 直音-清音(ア~ノ) あ: "a", い: "i", う: "u", え: "e", お: "o", ア: "a", イ: "i", ウ: "u", エ: "e", オ: "o", か: "ka", き: "ki", く: "ku", け: "ke", こ: "ko", カ: "ka", キ: "ki", ク: "ku", ケ: "ke", コ: "ko", さ: "sa", し: "shi", す: "su", せ: "se", そ: "so", サ: "sa", シ: "shi", ス: "su", セ: "se", ソ: "so", た: "ta", ち: "chi", つ: "tsu", て: "te", と: "to", タ: "ta", チ: "chi", ツ: "tsu", テ: "te", ト: "to", な: "na", に: "ni", ぬ: "nu", ね: "ne", の: "no", ナ: "na", ニ: "ni", ヌ: "nu", ネ: "ne", ノ: "no", // 直音-清音(ハ~ヲ) は: "ha", ひ: "hi", ふ: "fu", へ: "he", ほ: "ho", ハ: "ha", ヒ: "hi", フ: "fu", ヘ: "he", ホ: "ho", ま: "ma", み: "mi", む: "mu", め: "me", も: "mo", マ: "ma", ミ: "mi", ム: "mu", メ: "me", モ: "mo", や: "ya", ゆ: "yu", よ: "yo", ヤ: "ya", ユ: "yu", ヨ: "yo", ら: "ra", り: "ri", る: "ru", れ: "re", ろ: "ro", ラ: "ra", リ: "ri", ル: "ru", レ: "re", ロ: "ro", わ: "wa", ゐ: "i", ゑ: "e", を: "o", ワ: "wa", ヰ: "i", ヱ: "e", ヲ: "o", // 直音-濁音(ガ~ボ)、半濁音(パ~ポ) が: "ga", ぎ: "gi", ぐ: "gu", げ: "ge", ご: "go", ガ: "ga", ギ: "gi", グ: "gu", ゲ: "ge", ゴ: "go", ざ: "za", じ: "ji", ず: "zu", ぜ: "ze", ぞ: "zo", ザ: "za", ジ: "ji", ズ: "zu", ゼ: "ze", ゾ: "zo", だ: "da", ぢ: "ji", づ: "zu", で: "de", ど: "do", ダ: "da", ヂ: "ji", ヅ: "zu", デ: "de", ド: "do", ば: "ba", び: "bi", ぶ: "bu", べ: "be", ぼ: "bo", バ: "ba", ビ: "bi", ブ: "bu", ベ: "be", ボ: "bo", ぱ: "pa", ぴ: "pi", ぷ: "pu", ぺ: "pe", ぽ: "po", パ: "pa", ピ: "pi", プ: "pu", ペ: "pe", ポ: "po", // 拗音-清音(キャ~リョ) きゃ: "kya", きゅ: "kyu", きょ: "kyo", しゃ: "sha", しゅ: "shu", しょ: "sho", ちゃ: "cha", ちゅ: "chu", ちょ: "cho", にゃ: "nya", にゅ: "nyu", にょ: "nyo", ひゃ: "hya", ひゅ: "hyu", ひょ: "hyo", みゃ: "mya", みゅ: "myu", みょ: "myo", りゃ: "rya", りゅ: "ryu", りょ: "ryo", キャ: "kya", キュ: "kyu", キョ: "kyo", シャ: "sha", シュ: "shu", ショ: "sho", チャ: "cha", チュ: "chu", チョ: "cho", ニャ: "nya", ニュ: "nyu", ニョ: "nyo", ヒャ: "hya", ヒュ: "hyu", ヒョ: "hyo", ミャ: "mya", ミュ: "myu", ミョ: "myo", リャ: "rya", リュ: "ryu", リョ: "ryo", // 拗音-濁音(ギャ~ビョ)、半濁音(ピャ~ピョ)、合拗音(クヮ、グヮ) ぎゃ: "gya", ぎゅ: "gyu", ぎょ: "gyo", じゃ: "ja", じゅ: "ju", じょ: "jo", ぢゃ: "ja", ぢゅ: "ju", ぢょ: "jo", びゃ: "bya", びゅ: "byu", びょ: "byo", ぴゃ: "pya", ぴゅ: "pyu", ぴょ: "pyo", // くゎ: "", // ぐゎ: "", ギャ: "gya", ギュ: "gyu", ギョ: "gyo", ジャ: "ja", ジュ: "ju", ジョ: "jo", ヂャ: "ja", ヂュ: "ju", ヂョ: "jo", ビャ: "bya", ビュ: "byu", ビョ: "byo", ピャ: "pya", ピュ: "pyu", ピョ: "pyo", // クヮ: "", // グヮ: "", // 小書きの仮名、符号 ぁ: "a", ぃ: "i", ぅ: "u", ぇ: "e", ぉ: "o", ゃ: "ya", ゅ: "yu", ょ: "yo", ゎ: "wa", ァ: "a", ィ: "i", ゥ: "u", ェ: "e", ォ: "o", ャ: "ya", ュ: "yu", ョ: "yo", ヮ: "wa", ヵ: "ka", ヶ: "ke", ん: "n", ン: "n", // ー: "", " ": " ", // 外来音(イェ~グォ) いぇ: "ye", うぃ: "wi", うぇ: "we", うぉ: "wo", きぇ: "kye", くぁ: "kwa", くぃ: "kwi", くぇ: "kwe", くぉ: "kwo", ぐぁ: "gwa", ぐぃ: "gwi", ぐぇ: "gwe", ぐぉ: "gwo", イェ: "ye", ウィ: "wi", ウェ: "we", ウォ: "wo", ヴ: "vu", ヴァ: "va", ヴィ: "vi", ヴェ: "ve", ヴォ: "vo", ヴュ: "vyu", ヴョ: "vyo", キェ: "kya", クァ: "kwa", クィ: "kwi", クェ: "kwe", クォ: "kwo", グァ: "gwa", グィ: "gwi", グェ: "gwe", グォ: "gwo", // 外来音(シェ~フョ) しぇ: "she", じぇ: "je", // すぃ: "", // ずぃ: "", ちぇ: "che", つぁ: "tsa", つぃ: "tsi", つぇ: "tse", つぉ: "tso", てぃ: "ti", てゅ: "tyu", でぃ: "di", でゅ: "dyu", とぅ: "tu", どぅ: "du", にぇ: "nye", ひぇ: "hye", ふぁ: "fa", ふぃ: "fi", ふぇ: "fe", ふぉ: "fo", ふゅ: "fyu", ふょ: "fyo", シェ: "she", ジェ: "je", // スィ: "", // ズィ: "", チェ: "che", ツァ: "tsa", ツィ: "tsi", ツェ: "tse", ツォ: "tso", ティ: "ti", テュ: "tyu", ディ: "di", デュ: "dyu", トゥ: "tu", ドゥ: "du", ニェ: "nye", ヒェ: "hye", ファ: "fa", フィ: "fi", フェ: "fe", フォ: "fo", フュ: "fyu", フョ: "fyo" } }, P = function(n = "") { const r = (n[0] || "").charCodeAt(0); return r >= 12353 && r <= 12438; }, K = function(n = "") { const r = (n[0] || "").charCodeAt(0); return r >= 12449 && r <= 12540; }, $ = function(n = "") { return P(n) || K(n); }, B = function(n = "") { const r = ([...n][0] || "").codePointAt(0); return r >= 19968 && r <= 40959 || r >= 13312 && r <= 19903 || r >= 131072 && r <= 173791; }, Q = function(n = "") { return $(n) || B(n); }, rr = function(n = "") { for (let r = 0; r < n.length; r++) if (P(n[r])) return !0; return !1; }, tr = function(n = "") { for (let r = 0; r < n.length; r++) if (K(n[r])) return !0; return !1; }, yr = function(n = "") { for (let r = 0; r < n.length; r++) if ($(n[r])) return !0; return !1; }, er = function(n = "") { n = [...n]; for (let r = 0; r < n.length; r++) if (B(n[r])) return !0; return !1; }, X = function(n = "") { n = [...n]; for (let r = 0; r < n.length; r++) if (Q(n[r])) return !0; return !1; }, S = function(n = "") { return [...n].map((r) => r.codePointAt(0) >= 12449 && r.codePointAt(0) <= 12534 ? String.fromCharCode(r.charCodeAt(0) + -96) : r).join(""); }, U = function(n = "") { return [...n].map((r) => r.codePointAt(0) >= 12353 && r.codePointAt(0) <= 12438 ? String.fromCharCode(r.charCodeAt(0) + 96) : r).join(""); }, L = function(n = "", r) { r = r || D.HEPBURN; const t = /(っ|ッ)([bcdfghijklmnopqrstuvwyz])/gm, a = /っ|ッ/gm; let e = 0, i, s, o = ""; if (r === D.PASSPORT && (n = n.replace(/ー/gm, "")), r === D.NIPPON || r === D.HEPBURN) { const m = new RegExp(/(ん|ン)(?=あ|い|う|え|お|ア|イ|ウ|エ|オ|ぁ|ぃ|ぅ|ぇ|ぉ|ァ|ィ|ゥ|ェ|ォ|や|ゆ|よ|ヤ|ユ|ヨ|ゃ|ゅ|ょ|ャ|ュ|ョ)/g); let k; const b = []; for (; (k = m.exec(n)) !== null; ) b.push(k.index + 1); if (b.length !== 0) { let v = ""; for (let C = 0; C < b.length; C++) C === 0 ? v += `${n.slice(0, b[C])}'` : v += `${n.slice(b[C - 1], b[C])}'`; v += n.slice(b[b.length - 1]), n = v; } } const u = n.length; for (; e <= u; ) (s = Z[r][n.substring(e, e + 2)]) ? (o += s, e += 2) : (o += (s = Z[r][i = n.substring(e, e + 1)]) ? s : i, e += 1); return o = o.replace(t, "$2$2"), (r === D.PASSPORT || r === D.HEPBURN) && (o = o.replace(/cc/gm, "tc")), o = o.replace(a, "tsu"), (r === D.PASSPORT || r === D.HEPBURN) && (o = o.replace(/nm/gm, "mm"), o = o.replace(/nb/gm, "mb"), o = o.replace(/np/gm, "mp")), r === D.NIPPON && (o = o.replace(/aー/gm, "â"), o = o.replace(/iー/gm, "î"), o = o.replace(/uー/gm, "û"), o = o.replace(/eー/gm, "ê"), o = o.replace(/oー/gm, "ô")), r === D.HEPBURN && (o = o.replace(/aー/gm, "ā"), o = o.replace(/iー/gm, "ī"), o = o.replace(/uー/gm, "ū"), o = o.replace(/eー/gm, "ē"), o = o.replace(/oー/gm, "ō")), o; }, gr = function(n = "") { n = [...n]; let r = !1, t = !1; for (let a = 0; a < n.length; a++) B(n[a]) ? r = !0 : (P(n[a]) || K(n[a])) && (t = !0); return r && t ? 1 : r ? 0 : t ? 2 : 3; }, pr = function(n) { for (let r = 0; r < n.length; r++) X(n[r].surface_form) ? n[r].reading ? rr(n[r].reading) && (n[r].reading = U(n[r].reading)) : n[r].surface_form.split("").every($) ? n[r].reading = U(n[r].surface_form) : n[r].reading = n[r].surface_form : n[r].reading = n[r].surface_form; for (let r = 0; r < n.length; r++) n[r].pos && n[r].pos === "助動詞" && (n[r].surface_form === "う" || n[r].surface_form === "ウ") && r - 1 >= 0 && n[r - 1].pos && n[r - 1].pos === "動詞" && (n[r - 1].surface_form += "う", n[r - 1].pronunciation ? n[r - 1].pronunciation += "ー" : n[r - 1].pronunciation = `${n[r - 1].reading}ー`, n[r - 1].reading += "ウ", n.splice(r, 1), r--); for (let r = 0; r < n.length; r++) n[r].pos && (n[r].pos === "動詞" || n[r].pos === "形容詞") && n[r].surface_form.length > 1 && (n[r].surface_form[n[r].surface_form.length - 1] === "っ" || n[r].surface_form[n[r].surface_form.length - 1] === "ッ") && r + 1 < n.length && (n[r].surface_form += n[r + 1].surface_form, n[r].pronunciation ? n[r].pronunciation += n[r + 1].pronunciation : n[r].pronunciation = `${n[r].reading}${n[r + 1].reading}`, n[r].reading += n[r + 1].reading, n.splice(r + 1, 1), r--); return n; }, dr = function(n) { return S(n); }, _r = function(n) { return U(n); }, vr = function(n, r) { return L(n, r); }; class M { constructor(r, t, a, e, i, s, o, u) { this.name = r, this.cost = t, this.start_pos = a, this.length = e, this.left_id = s, this.right_id = o, this.prev = null, this.surface_form = u, i === "BOS" ? this.shortest_cost = 0 : this.shortest_cost = Number.MAX_VALUE, this.type = i; } } class mr { constructor() { this.nodes_end_at = [], this.nodes_end_at[0] = [new M(-1, 0, 0, 0, "BOS", 0, 0, "")], this.eos_pos = 1; } /** * Append node to ViterbiLattice * @param {ViterbiNode} node */ append(r) { var t = r.start_pos + r.length - 1; this.eos_pos < t && (this.eos_pos = t); var a = this.nodes_end_at[t]; a == null && (a = []), a.push(r), this.nodes_end_at[t] = a; } /** * Set ends with EOS (End of Statement) */ appendEos() { var r = this.nodes_end_at.length; this.eos_pos++, this.nodes_end_at[r] = [new M(-1, 0, this.eos_pos, 0, "EOS", 0, 0, "")]; } } class R { constructor(r) { this.str = r, this.index_mapping = []; for (var t = 0; t < r.length; t++) { var a = r.charAt(t); this.index_mapping.push(t), R.isSurrogatePair(a) && t++; } this.length = this.index_mapping.length; } static isSurrogatePair(r) { var t = r.charCodeAt(0); return t >= 55296 && t <= 56319; } slice(r) { if (this.index_mapping.length <= r) return ""; var t = this.index_mapping[r]; return this.str.slice(t); } charAt(r) { if (this.str.length <= r) return ""; var t = this.index_mapping[r], a = this.index_mapping[r + 1]; return a == null ? this.str.slice(t) : this.str.slice(t, a); } charCodeAt(r) { if (this.index_mapping.length <= r) return NaN; var t = this.index_mapping[r], a = this.str.charCodeAt(t), e; return a >= 55296 && a <= 56319 && t < this.str.length && (e = this.str.charCodeAt(t + 1), e >= 56320 && e <= 57343) ? (a - 55296) * 1024 + e - 56320 + 65536 : a; } toString() { return this.str; } } class br { constructor(r) { this.trie = r.trie, this.token_info_dictionary = r.token_info_dictionary, this.unknown_dictionary = r.unknown_dictionary; } /** * Build word lattice * @param {string} sentence_str Input text * @returns {ViterbiLattice} Word lattice */ build(r) { for (var t = new mr(), a = new R(r), e, i, s, o, u, m = 0; m < a.length; m++) { for (var k = a.slice(m), b = this.trie.commonPrefixSearch(k), v = 0; v < b.length; v++) { i = b[v].v, e = b[v].k; for (var C = this.token_info_dictionary.target_map[i], E = 0; E < C.length; E++) { var A = parseInt(C[E]); s = this.token_info_dictionary.dictionary.getShort(A), o = this.token_info_dictionary.dictionary.getShort(A + 2), u = this.token_info_dictionary.dictionary.getShort(A + 4), t.append(new M(A, u, m + 1, e.length, "KNOWN", s, o, e)); } } var T = new R(k), z = new R(T.charAt(0)), f = this.unknown_dictionary.lookup(z.toString()); if (b == null || b.length === 0 || f.is_always_invoke === 1) { if (e = z, f.is_grouping === 1 && 1 < T.length) for (var y = 1; y < T.length; y++) { var d = T.charAt(y), g = this.unknown_dictionary.lookup(d); if (f.class_name !== g.class_name) break; e += d; } for (var h = this.unknown_dictionary.target_map[f.class_id], l = 0; l < h.length; l++) { var c = parseInt(h[l]); s = this.unknown_dictionary.dictionary.getShort(c), o = this.unknown_dictionary.dictionary.getShort(c + 2), u = this.unknown_dictionary.dictionary.getShort(c + 4), t.append(new M(c, u, m + 1, e.length, "UNKNOWN", s, o, e.toString())); } } } return t.appendEos(), t; } } class wr { constructor(r) { this.connection_costs = r; } /** * Search best path by forward-backward algorithm * @param {ViterbiLattice} lattice Viterbi lattice to search * @returns {Array} Shortest path */ search(r) { return r = this.forward(r), this.backward(r); } forward(r) { var t, a, e; for (t = 1; t <= r.eos_pos; t++) { var i = r.nodes_end_at[t]; if (i != null) for (a = 0; a < i.length; a++) { var s = i[a], o = Number.MAX_VALUE, u, m = r.nodes_end_at[s.start_pos - 1]; if (m != null) { for (e = 0; e < m.length; e++) { var k = m[e], b; s.left_id == null || k.right_id == null ? (console.log("Left or right is null"), b = 0) : b = this.connection_costs.get(k.right_id, s.left_id); var v = k.shortest_cost + b + s.cost; v < o && (u = k, o = v); } s.prev = u, s.shortest_cost = o; } } } return r; } backward(r) { var t = [], a = r.nodes_end_at[r.nodes_end_at.length - 1][0], e = a.prev; if (e == null) return []; for (; e.type !== "BOS"; ) { if (t.push(e), e.prev == null) return []; e = e.prev; } return t.reverse(); } } class Ar { constructor() { } formatEntry(r, t, a, e) { var i = {}; return i.word_id = r, i.word_type = a, i.word_position = t, i.surface_form = e[0], i.pos = e[1], i.pos_detail_1 = e[2], i.pos_detail_2 = e[3], i.pos_detail_3 = e[4], i.conjugated_type = e[5], i.conjugated_form = e[6], i.basic_form = e[7], i.reading = e[8], i.pronunciation = e[9], i; } formatUnknownEntry(r, t, a, e, i) { var s = {}; return s.word_id = r, s.word_type = a, s.word_position = t, s.surface_form = i, s.pos = e[1], s.pos_detail_1 = e[2], s.pos_detail_2 = e[3], s.pos_detail_3 = e[4], s.conjugated_type = e[5], s.conjugated_form = e[6], s.basic_form = e[7], s; } } var kr = /、|。/; class V { constructor(r) { this.token_info_dictionary = r.token_info_dictionary, this.unknown_dictionary = r.unknown_dictionary, this.viterbi_builder = new br(r), this.viterbi_searcher = new wr(r.connection_costs), this.formatter = new Ar(); } /** * Split into sentence by punctuation * @param {string} input Input text * @returns {Array.<string>} Sentences end with punctuation */ static splitByPunctuation(r) { for (var t = [], a = r; a !== ""; ) { var e = a.search(kr); if (e < 0) { t.push(a); break; } t.push(a.substring(0, e + 1)), a = a.substring(e + 1); } return t; } /** * Tokenize text * @param {string} text Input text to analyze * @returns {Array} Tokens */ tokenize(r) { for (var t = V.splitByPunctuation(r), a = [], e = 0; e < t.length; e++) { var i = t[e]; this.tokenizeForSentence(i, a); } return a; } tokenizeForSentence(r, t) { t == null && (t = []); var a = this.getLattice(r), e = this.viterbi_searcher.search(a), i = 0; t.length > 0 && (i = t[t.length - 1].word_position); for (var s = 0; s < e.length; s++) { var o = e[s], u, m, k; o.type === "KNOWN" ? (k = this.token_info_dictionary.getFeatures(o.name), k == null ? m = [] : m = k.split(","), u = this.formatter.formatEntry(o.name, i + o.start_pos, o.type, m)) : o.type === "UNKNOWN" ? (k = this.unknown_dictionary.getFeatures(o.name), k == null ? m = [] : m = k.split(","), u = this.formatter.formatUnknownEntry(o.name, i + o.start_pos, o.type, m, o.surface_form)) : u = this.formatter.formatEntry(o.name, i + o.start_pos, o.type, []), t.push(u); } return t; } /** * Build word lattice * @param {string} text Input text to analyze * @returns {ViterbiLattice} Word lattice */ getLattice(r) { return this.viterbi_builder.build(r); } } function xr(n) { return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n; } var ar = { exports: {} }; (function(n) { (function() { var r = "\0", t = 0, a = 0, e = -1, i = !0, s = !0, o = 4, u = 4, m = 2, k = function(f) { f == null && (f = 1024); var y = function(p, _, w) { for (var F = _; F < w; F++) p[F] = -F + 1; if (0 < c.array[c.array.length - 1]) { for (var N = c.array.length - 2; 0 < c.array[N]; ) N--; p[_] = -N; } }, d = function(p, _, w) { for (var F = _; F < w; F++) p[F] = -F - 1; }, g = function(p) { var _ = p * m, w = C(l.signed, l.bytes, _); y(w, l.array.length, _), w.set(l.array), l.array = null, l.array = w; var F = C(c.signed, c.bytes, _); d(F, c.array.length, _), F.set(c.array), c.array = null, c.array = F; }, h = a + 1, l = { signed: i, bytes: o, array: C(i, o, f) }, c = { signed: s, bytes: u, array: C(s, u, f) }; return l.array[a] = 1, c.array[a] = a, y(l.array, a + 1, l.array.length), d(c.array, a + 1, c.array.length), { getBaseBuffer: function() { return l.array; }, getCheckBuffer: function() { return c.array; }, loadBaseBuffer: function(p) { return l.array = p, this; }, loadCheckBuffer: function(p) { return c.array = p, this; }, size: function() { return Math.max(l.array.length, c.array.length); }, getBase: function(p) { return l.array.length - 1 < p ? -p + 1 : l.array[p]; }, getCheck: function(p) { return c.array.length - 1 < p ? -p - 1 : c.array[p]; }, setBase: function(p, _) { l.array.length - 1 < p && g(p), l.array[p] = _; }, setCheck: function(p, _) { c.array.length - 1 < p && g(p), c.array[p] = _; }, setFirstUnusedNode: function(p) { h = p; }, getFirstUnusedNode: function() { return h; }, shrink: function() { for (var p = this.size() - 1; !(0 <= c.array[p]); ) p--; l.array = l.array.subarray(0, p + 2), c.array = c.array.subarray(0, p + 2); }, calc: function() { for (var p = 0, _ = c.array.length, w = 0; w < _; w++) c.array[w] < 0 && p++; return { all: _, unused: p, efficiency: (_ - p) / _ }; }, dump: function() { var p = "", _ = "", w; for (w = 0; w < l.array.length; w++) p = p + " " + this.getBase(w); for (w = 0; w < c.array.length; w++) _ = _ + " " + this.getCheck(w); return console.log("base:" + p), console.log("chck:" + _), "base:" + p + " chck:" + _; } }; }; function b(f) { this.bc = k(f), this.keys = []; } b.prototype.append = function(f, y) { return this.keys.push({ k: f, v: y }), this; }, b.prototype.build = function(f, y) { if (f == null && (f = this.keys), f == null) return new v(this.bc); y == null && (y = !1); var d = f.map(function(g) { return { k: A(g.k + r), v: g.v }; }); return y ? this.keys = d : this.keys = d.sort(function(g, h) { for (var l = g.k, c = h.k, p = Math.min(l.length, c.length), _ = 0; _ < p; _++) if (l[_] !== c[_]) return l[_] - c[_]; return l.length - c.length; }), d = null, this._build(a, 0, 0, this.keys.length), new v(this.bc); }, b.prototype._build = function(f, y, d, g) { var h = this.getChildrenInfo(y, d, g), l = this.findAllocatableBase(h); this.setBC(f, h, l); for (var c = 0; c < h.length; c = c + 3) { var p = h[c]; if (p !== t) { var _ = h[c + 1], w = h[c + 2], F = l + p; this._build(F, y + 1, _, w); } } }, b.prototype.getChildrenInfo = function(f, y, d) { var g = this.keys[y].k[f], h = 0, l = new Int32Array(d * 3); l[h++] = g, l[h++] = y; for (var c = y, p = y; c < y + d; c++) { var _ = this.keys[c].k[f]; g !== _ && (l[h++] = c - p, l[h++] = _, l[h++] = c, g = _, p = c); } return l[h++] = c - p, l = l.subarray(0, h), l; }, b.prototype.setBC = function(f, y, d) { var g = this.bc; g.setBase(f, d); var h; for (h = 0; h < y.length; h = h + 3) { var l = y[h], c = d + l, p = -g.getBase(c), _ = -g.getCheck(c); c !== g.getFirstUnusedNode() ? g.setCheck(p, -_) : g.setFirstUnusedNode(_), g.setBase(_, -p); var w = f; if (g.setCheck(c, w), l === t) { var F = y[h + 1], N = this.keys[F].v; N == null && (N = 0); var hr = -N - 1; g.setBase(c, hr); } } }, b.prototype.findAllocatableBase = function(f) { for (var y = this.bc, d, g = y.getFirstUnusedNode(); ; ) { if (d = g - f[0], d < 0) { g = -y.getCheck(g); continue; } for (var h = !0, l = 0; l < f.length; l = l + 3) { var c = f[l], p = d + c; if (!this.isUnusedNode(p)) { g = -y.getCheck(g), h = !1; break; } } if (h) return d; } }, b.prototype.isUnusedNode = function(f) { var y = this.bc, d = y.getCheck(f); return f === a ? !1 : d < 0; }; function v(f) { this.bc = f, this.bc.shrink(); } v.prototype.contain = function(f) { var y = this.bc; f += r; for (var d = A(f), g = a, h = e, l = 0; l < d.length; l++) { var c = d[l]; if (h = this.traverse(g, c), h === e) return !1; if (y.getBase(h) <= 0) return !0; g = h; } return !1; }, v.prototype.lookup = function(f) { f += r; for (var y = A(f), d = a, g = e, h = 0; h < y.length; h++) { var l = y[h]; if (g = this.traverse(d, l), g === e) return e; d = g; } var c = this.bc.getBase(g); return c <= 0 ? -c - 1 : e; }, v.prototype.commonPrefixSearch = function(f) { for (var y = A(f), d = a, g = e, h = [], l = 0; l < y.length; l++) { var c = y[l]; if (g = this.traverse(d, c), g !== e) { d = g; var p = this.traverse(g, t); if (p !== e) { var _ = this.bc.getBase(p), w = {}; _ <= 0 && (w.v = -_ - 1), w.k = T(E(y, 0, l + 1)), h.push(w); } continue; } else break; } return h; }, v.prototype.traverse = function(f, y) { var d = this.bc.getBase(f) + y; return this.bc.getCheck(d) === f ? d : e; }, v.prototype.size = function() { return this.bc.size(); }, v.prototype.calc = function() { return this.bc.calc(); }, v.prototype.dump = function() { return this.bc.dump(); }; var C = function(f, y, d) { if (f) switch (y) { case 1: return new Int8Array(d); case 2: return new Int16Array(d); case 4: return new Int32Array(d); default: throw new RangeError("Invalid newArray parameter element_bytes:" + y); } else switch (y) { case 1: return new Uint8Array(d); case 2: return new Uint16Array(d); case 4: return new Uint32Array(d); default: throw new RangeError("Invalid newArray parameter element_bytes:" + y); } }, E = function(f, y, d) { var g = new ArrayBuffer(d), h = new Uint8Array(g, 0, d), l = f.subarray(y, d); return h.set(l), h; }, A = function(f) { for (var y = new Uint8Array(new ArrayBuffer(f.length * 4)), d = 0, g = 0; d < f.length; ) { var h, l = f.charCodeAt(d++); if (l >= 55296 && l <= 56319) { var c = l, p = f.charCodeAt(d++); if (p >= 56320 && p <= 57343) h = (c - 55296) * 1024 + 65536 + (p - 56320); else return null; } else h = l; h < 128 ? y[g++] = h : h < 2048 ? (y[g++] = h >>> 6 | 192, y[g++] = h & 63 | 128) : h < 65536 ? (y[g++] = h >>> 12 | 224, y[g++] = h >> 6 & 63 | 128, y[g++] = h & 63 | 128) : h < 1 << 21 && (y[g++] = h >>> 18 | 240, y[g++] = h >> 12 & 63 | 128, y[g++] = h >> 6 & 63 | 128, y[g++] = h & 63 | 128); } return y.subarray(0, g); }, T = function(f) { for (var y = "", d, g, h, l, c, p, _, w = 0; w < f.length; ) g = f[w++], g < 128 ? d = g : g >> 5 === 6 ? (h = f[w++], d = (g & 31) << 6 | h & 63) : g >> 4 === 14 ? (h = f[w++], l = f[w++], d = (g & 15) << 12 | (h & 63) << 6 | l & 63) : (h = f[w++], l = f[w++], c = f[w++], d = (g & 7) << 18 | (h & 63) << 12 | (l & 63) << 6 | c & 63), d < 65536 ? y += String.fromCharCode(d) : (d -= 65536, p = 55296 | d >> 10, _ = 56320 | d & 1023, y += String.fromCharCode(p, _)); return y; }, z = { builder: function(f) { return new b(f); }, load: function(f, y) { var d = k(0); return d.loadBaseBuffer(f), d.loadCheckBuffer(y), new v(d); } }; n.exports = z; })(); })(ar); var Cr = ar.exports; const J = /* @__PURE__ */ xr(Cr); var Fr = function(n) { for (var r = new Uint8Array(n.length * 4), t = 0, a = 0; t < n.length; ) { var e, i = n.charCodeAt(t++); if (i >= 55296 && i <= 56319) { var s = i, o = n.charCodeAt(t++); if (o >= 56320 && o <= 57343) e = (s - 55296) * 1024 + 65536 + (o - 56320); else return null; } else e = i; e < 128 ? r[a++] = e : e < 2048 ? (r[a++] = e >>> 6 | 192, r[a++] = e & 63 | 128) : e < 65536 ? (r[a++] = e >>> 12 | 224, r[a++] = e >> 6 & 63 | 128, r[a++] = e & 63 | 128) : e < 1 << 21 && (r[a++] = e >>> 18 | 240, r[a++] = e >> 12 & 63 | 128, r[a++] = e >> 6 & 63 | 128, r[a++] = e & 63 | 128); } return r.subarray(0, a); }, Tr = function(n) { for (var r = "", t, a, e, i, s, o, u, m = 0; m < n.length; ) a = n[m++], a < 128 ? t = a : a >> 5 === 6 ? (e = n[m++], t = (a & 31) << 6 | e & 63) : a >> 4 === 14 ? (e = n[m++], i = n[m++], t = (a & 15) << 12 | (e & 63) << 6 | i & 63) : (e = n[m++], i = n[m++], s = n[m++], t = (a & 7) << 18 | (e & 63) << 12 | (i & 63) << 6 | s & 63), t < 65536 ? r += String.fromCharCode(t) : (t -= 65536, o = 55296 | t >> 10, u = 56320 | t & 1023, r += String.fromCharCode(o, u)); return r; }; class I { constructor(r) { var t; if (r == null) t = 1024 * 1024; else if (typeof r == "number") t = r; else if (r instanceof Uint8Array) { this.buffer = r, this.position = 0; return; } else throw typeof r + " is invalid parameter type for ByteBuffer constructor"; this.buffer = new Uint8Array(t), this.position = 0; } size() { return this.buffer.length; } reallocate() { var r = new Uint8Array(this.buffer.length * 2); r.set(this.buffer), this.buffer = r; } shrink() { return this.buffer = this.buffer.subarray(0, this.position), this.buffer; } put(r) { this.buffer.length < this.position + 1 && this.reallocate(), this.buffer[this.position++] = r; } get(r) { return r == null && (r = this.position, this.position += 1), this.buffer.length < r + 1 ? 0 : this.buffer[r]; } // Write short to buffer by little endian putShort(r) { if (65535 < r) throw r + " is over short value"; var t = 255 & r, a = (65280 & r) >> 8; this.put(t), this.put(a); } // Read short from buffer by little endian getShort(r) { if (r == null && (r = this.position, this.position += 2), this.buffer.length < r + 2) return 0; var t = this.buffer[r], a = this.buffer[r + 1], e = (a << 8) + t; return e & 32768 && (e = -(e - 1 ^ 65535)), e; } // Write integer to buffer by little endian putInt(r) { if (4294967295 < r) throw r + " is over integer value"; var t = 255 & r, a = (65280 & r) >> 8, e = (16711680 & r) >> 16, i = (4278190080 & r) >> 24; this.put(t), this.put(a), this.put(e), this.put(i); } // Read integer from buffer by little endian getInt(r) { if (r == null && (r = this.position, this.position += 4), this.buffer.length < r + 4) return 0; var t = this.buffer[r], a = this.buffer[r + 1], e = this.buffer[r + 2], i = this.buffer[r + 3]; return (i << 24) + (e << 16) + (a << 8) + t; } readInt() { var r = this.position; return this.position += 4, this.getInt(r); } putString(r) { for (var t = Fr(r), a = 0; a < t.length; a++) this.put(t[a]); this.put(0); } getString(r) { var t = [], a; for (r == null && (r = this.position); !(this.buffer.length < r + 1 || (a = this.get(r++), a === 0)); ) t.push(a); return this.position = r, Tr(t); } } class Y { constructor() { this.dictionary = new I(10 * 1024 * 1024), this.target_map = {}, this.pos_buffer = new I(10 * 1024 * 1024); } // left_id right_id word_cost ... // ^ this position is token_info_id buildDictionary(r) { for (var t = {}, a = 0; a < r.length; a++) { var e = r[a]; if (!(e.length < 4)) { var i = e[0], s = e[1], o = e[2], u = e[3], m = e.slice(4).join(","); (!isFinite(s) || !isFinite(o) || !isFinite(u)) && console.log(e); var k = this.put(s, o, u, i, m); t[k] = i; } } return this.dictionary.shrink(), this.pos_buffer.shrink(), t; } put(r, t, a, e, i) { var s = this.dictionary.position, o = this.pos_buffer.position; return this.dictionary.putShort(r), this.dictionary.putShort(t), this.dictionary.putShort(a), this.dictionary.putInt(o), this.pos_buffer.putString(e + "," + i), s; } addMapping(r, t) { var a = this.target_map[r]; a == null && (a = []), a.push(t), this.target_map[r] = a; } targetMapToBuffer() { var r = new I(), t = Object.keys(this.target_map).length; r.putInt(t); for (var a in this.target_map) { var e = this.target_map[a], i = e.length; r.putInt(parseInt(a)), r.putInt(i); for (var s = 0; s < e.length; s++) r.putInt(e[s]); } return r.shrink(); } // from tid.dat loadDictionary(r) { return this.dictionary = new I(r), this; } // from tid_pos.dat loadPosVector(r) { return this.pos_buffer = new I(r), this; } // from tid_map.dat loadTargetMap(r) { var t = new I(r); for (t.position = 0, this.target_map = {}, t.readInt(); !(t.buffer.length < t.position + 1); ) for (var a = t.readInt(), e = t.readInt(), i = 0; i < e; i++) { var s = t.readInt(); this.addMapping(a, s); } return this; } /** * Look up features in the dictionary * @param {string} token_info_id_str Word ID to look up * @returns {string} Features string concatenated by "," */ getFeatures(r) { var t = parseInt(r); if (isNaN(t)) return ""; var a = this.dictionary.getInt(t + 6); return this.pos_buffer.getString(a); } } class ir { constructor(r, t) { this.forward_dimension = r, this.backward_dimension = t, this.buffer = new Int16Array(r * t + 2), this.buffer[0] = r, this.buffer[1] = t; } put(r, t, a) { var e = r * this.backward_dimension + t + 2; if (this.buffer.length < e + 1) throw "ConnectionCosts buffer overflow"; this.buffer[e] = a; } get(r, t) { var a = r * this.backward_dimension + t + 2; if (this.buffer.length < a + 1) throw "ConnectionCosts buffer overflow"; return this.buffer[a]; } loadConnectionCosts(r) { this.forward_dimension = r[0], this.backward_dimension = r[1], this.buffer = r; } } class nr { constructor(r, t, a, e, i) { this.class_id = r, this.class_name = t, this.is_always_invoke = a, this.is_grouping = e, this.max_length = i; } } class H { constructor() { this.map = [], this.lookup_table = {}; } /** * Load InvokeDefinitionMap from buffer * @param {Uint8Array} invoke_def_buffer * @returns {InvokeDefinitionMap} */ static load(r) { for (var t = new H(), a = [], e = new I(r); e.position + 1 < e.size(); ) { var i = a.length, s = e.get(), o = e.get(), u = e.getInt(), m = e.getString(); a.push(new nr(i, m, s, o, u)); } return t.init(a), t; } /** * Initializing method * @param {Array.<CharacterClass>} character_category_definition Array of CharacterClass */ init(r) { if (r != null) for (var t = 0; t < r.length; t++) { var a = r[t]; this.map[t] = a, this.lookup_table[a.class_name] = t; } } /** * Get class information by class ID * @param {number} class_id * @returns {CharacterClass} */ getCharacterClass(r) { return this.map[r]; } /** * For building character definition dictionary * @param {string} class_name character * @returns {number} class_id */ lookup(r) { var t = this.lookup_table[r]; return t ?? null; } /** * Transform from map to binary buffer * @returns {Uint8Array} */ toBuffer() { for (var r = new I(), t = 0; t < this.map.length; t++) { var a = this.map[t]; r.put(a.is_always_invoke), r.put(a.is_grouping), r.putInt(a.max_length), r.putString(a.class_name); } return r.shrink(), r.buffer; } } var G = "DEFAULT"; class j { constructor() { this.character_category_map = new Uint8Array(65536), this.compatible_category_map = new Uint32Array(65536), this.invoke_definition_map = null; } /** * Load CharacterDefinition * @param {Uint8Array} cat_map_buffer * @param {Uint32Array} compat_cat_map_buffer * @param {InvokeDefinitionMap} invoke_def_buffer * @returns {CharacterDefinition} */ static load(r, t, a) { var e = new j(); return e.character_category_map = r, e.compatible_category_map = t, e.invoke_definition_map = H.load(a), e; } static parseCharCategory(r, t) { var a = t[1], e = parseInt(t[2]), i = parseInt(t[3]), s = parseInt(t[4]); if (!isFinite(e) || e !== 0 && e !== 1) return console.log("char.def parse error. INVOKE is 0 or 1 in:" + e), null; if (!isFinite(i) || i !== 0 && i !== 1) return console.log("char.def parse error. GROUP is 0 or 1 in:" + i), null; if (!isFinite(s) || s < 0) return console.log("char.def parse error. LENGTH is 1 to n:" + s), null; var o = e === 1, u = i === 1; return new nr(r, a, o, u, s); } static parseCategoryMapping(r) { var t = parseInt(r[1]), a = r[2], e = 3 < r.length ? r.slice(3) : []; return (!isFinite(t) || t < 0 || t > 65535) && console.log("char.def parse error. CODE is invalid:" + t), { start: t, default: a, compatible: e }; } static parseRangeCategoryMapping(r) { var t = parseInt(r[1]), a = parseInt(r[2]), e = r[3], i = 4 < r.length ? r.slice(4) : []; return (!isFinite(t) || t < 0 || t > 65535) && console.log("char.def parse error. CODE is invalid:" + t), (!isFinite(a) || a < 0 || a > 65535) && console.log("char.def parse error. CODE is invalid:" + a), { start: t, end: a, default: e, compatible: i }; } /** * Initializing method * @param {Array} category_mapping Array of category mapping */ initCategoryMappings(r) { var t; if (r != null) for (var a = 0; a < r.length; a++) { var e = r[a], i = e.end || e.start; for (t = e.start; t <= i; t++) { this.character_category_map[t] = this.invoke_definition_map.lookup(e.default); for (var s = 0; s < e.compatible.length; s++) { var o = this.compatible_category_map[t], u = e.compatible[s]; if (u != null) { var m = this.invoke_definition_map.lookup(u); if (m != null) { var k = 1 << m; o = o | k, this.compatible_category_map[t] = o; } } } } } var b = this.invoke_definition_map.lookup(G); if (b != null) for (t = 0; t < this.character_category_map.length; t++) this.character_category_map[t] === 0 && (this.character_category_map[t] = 1 << b); } /** * Lookup compatible categories for a character (not included 1st category) * @param {string} ch UCS2 character (just 1st character is effective) * @returns {Array.<CharacterClass>} character classes */ lookupCompatibleCategory(r) { var t = [], a = r.charCodeAt(0), e; if (a < this.compatible_category_map.length && (e = this.compatible_category_map[a]), e == null || e === 0) return t; for (var i = 0; i < 32; i++) if (e << 31 - i >>> 31 === 1) { var s = this.invoke_definition_map.getCharacterClass(i); if (s == null) continue; t.push(s); } return t; } /** * Lookup category for a character * @param {string} ch UCS2 character (just 1st character is effective) * @returns {CharacterClass} character class */ lookup(r) { var t, a = r.charCodeAt(0); return R.isSurrogatePair(r) ? t = this.invoke_definition_map.lookup(G) : a < this.character_category_map.length && (t = this.character_category_map[a]), t == null && (t = this.invoke_definition_map.lookup(G)), this.invoke_definition_map.getCharacterClass(t); } } class or extends Y { constructor() { super(), this.dictionary = new I(10 * 1024 * 1024), this.target_map = {}, this.pos_buffer = new I(10 * 1024 * 1024), this.character_definition = null; } characterDefinition(r) { return this.character_definition = r, this; } lookup(r) { return this.character_definition.lookup(r); } lookupCompatibleCategory(r) { return this.character_definition.lookupCompatibleCategory