- MMS_PUNCTUATION_HEX =
mms_punctuation_hex.tr("\n", " ").freeze
- PREFIX_CODEPOINTS =
[
*".?,:!{}“”«»‹›„‚‟‛’‘><¿。;՚՛՜՝՞՟։¡،、।\"؛؟,!?;:()﹏⋯、‧/~─_".codepoints,
*(0x300C..0x300F), *(0xFF41..0xFF44), *(0x3008..0x300B)
].freeze
- PUNCTUATION_CODEPOINTS =
begin
values = MMS_PUNCTUATION_HEX.split.flat_map do |token|
first, last = token.split("-", 2).map { |hex| Integer(hex, 16) }
last ? (first..last).to_a : [first]
end
(values + PREFIX_CODEPOINTS).to_h { |codepoint| [codepoint, true] }.freeze
end
- DELETION_CODEPOINTS =
[
0x200E, 0x200C, *(0x0656..0x0657), 0x200B, *(0x064B..0x0652),
0x202C, 0x200F, 0x202A
].to_h { |codepoint| [codepoint, true] }.freeze
- ARABIC_ROMANIZATION =
{
"ء" => "'", "آ" => "a", "أ" => "a", "ؤ" => "w", "إ" => "i", "ئ" => "ye",
"ا" => "a", "ب" => "b", "ة" => "a", "ت" => "t", "ث" => "th", "ج" => "j",
"ح" => "h", "خ" => "kh", "د" => "d", "ذ" => "th", "ر" => "r", "ز" => "z",
"س" => "s", "ش" => "sh", "ص" => "s", "ض" => "d", "ط" => "t", "ظ" => "z",
"ع" => "'", "غ" => "gh", "ف" => "f", "ق" => "q", "ك" => "k", "ل" => "l",
"م" => "m", "ن" => "n", "ه" => "h", "و" => "w", "ى" => "a", "ي" => "y",
"ٮ" => "b", "ٯ" => "q", "ٹ" => "tt", "ٺ" => "tt", "ٻ" => "b", "ټ" => "t",
"ٽ" => "t", "پ" => "p", "ٿ" => "t", "ڀ" => "b", "ځ" => "z", "ڂ" => "h",
"ڃ" => "ny", "ڄ" => "dy", "څ" => "ts", "چ" => "tch", "ڇ" => "tch",
"ڈ" => "dd", "ډ" => "d", "ڊ" => "d", "ڋ" => "d", "ڌ" => "d", "ڍ" => "dd",
"ڎ" => "d", "ڏ" => "d", "ڐ" => "d", "ڑ" => "rr", "ژ" => "j", "ښ" => "kh",
"ڤ" => "v", "ک" => "k", "ڪ" => "k", "ګ" => "g", "ڭ" => "ng", "گ" => "g",
"ں" => "n", "ھ" => "h", "ہ" => "h", "ۃ" => "a", "ۇ" => "u", "ۈ" => "yu",
"ۋ" => "v", "ی" => "i", "ۍ" => "y", "ێ" => "y", "ې" => "e", "ے" => "y",
"ە" => "ae", "ٴ" => "h"
}.freeze
- LATIN_ROMANIZATION =
{
"æ" => "ae", "œ" => "oe", "ø" => "oe", "ß" => "ss", "ð" => "d", "þ" => "th",
"ł" => "l", "đ" => "d", "ħ" => "h", "ı" => "i", "ə" => "e"
}.freeze
- UROMAN_SEQUENCE_ROMANIZATION =
Multi-codepoint rules from Uroman 1.3.1.1 that are reachable from the
pinned ASR tokenizers. Uroman chooses these before its single-character
candidates; keeping them here preserves that longest-match behavior.
{
"λμπ" => "lb", "νμπ" => "nb", "ρμπ" => "rb",
"γγ" => "ng", "ει" => "ei", "ευ" => "eu", "αυ" => "au", "ου" => "ou",
"ηυ" => "eu", "υι" => "ui", "ωυ" => "ou", "ντ" => "nd",
"シャ" => "sha", "シュ" => "shu", "ショ" => "sho",
"チャ" => "cha", "チェ" => "che", "チュ" => "chu", "チョ" => "cho",
"ジャ" => "ja", "ジュ" => "ju", "ジョ" => "jo", "ジェ" => "je",
"ヂャ" => "ja", "ヂュ" => "ju", "ヂョ" => "jo",
"フェ" => "fe", "ヴェ" => "ve", "フィ" => "fi", "ウィ" => "wi",
"ヴィ" => "vi", "ティ" => "ti", "ディ" => "di",
"しゃ" => "sha", "しゅ" => "shu", "しょ" => "sho",
"ちゃ" => "cha", "ちゅ" => "chu", "ちょ" => "cho",
"じゃ" => "ja", "じゅ" => "ju", "じょ" => "jo",
"ぢゃ" => "ja", "ぢゅ" => "ju", "ぢょ" => "jo"
}.freeze
- UROMAN_SEQUENCE_LENGTHS =
UROMAN_SEQUENCE_ROMANIZATION.keys.map(&:length).uniq.sort.reverse.freeze
- JAPANESE_SMALL_Y =
"ゃゅょャュョ".chars.freeze
- JAPANESE_SMALL_TSU =
"っッ".chars.freeze
- JAPANESE_SCRIPT =
{
"ゃ" => :hiragana, "ゅ" => :hiragana, "ょ" => :hiragana,
"ャ" => :katakana, "ュ" => :katakana, "ョ" => :katakana
}.freeze
- DIGIT_PATTERN =
"0-9০-৯០-៩०-९୦-୯۰-۹꤀-꤉0-9൦-൯၀-၉ⅰ-ⅹ"