Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

文字種分類

Litsea の各言語は、個々の文字を言語学的に意味のあるカテゴリに分類する文字種クラスのセットを定義します。これらの種別コードは AdaBoost 分類器の特徴量として使用されます。

仕組み

Language::char_type(c: char) -> &'static str は、Unicode 文字範囲に対する match 式で文字を直接分類します(正規表現・アロケーションなし)。matchアームは上から順に評価され、最初にマッチしたアームが種別コードを決定します。どのアームにもマッチしない場合、その文字は "O"(Other)に分類されます。

言語ごとに分類関数(japanese_char_typechinese_char_typekorean_char_type)があり、全言語で共通のクラス "P"(句読点)・"A"(ラテン文字)・"N"(数字)は、言語固有クラスの後に評価される共有ヘルパー punct_latin_digit() にまとめられています。単純な範囲を超えるロジックはmatchガードで表現します(例: 韓国語のハングル音節構造)。

日本語の文字種

Code名称パターン / 範囲
M漢数字[一二三四五六七八九十百千万億兆]一, 千, 億
H漢字 / CJK 統合漢字[一-龠々〆ヵヶ]漢, 字, 学
Iひらがな[ぁ-ん]あ, い, う
Kカタカナ[ァ-ヴーア-ン゙゚]ア, カ, ー
P句読点CJK 記号(U+3000-303F)、全角(U+FF01-FF65)。, 、, 「
AASCII / ラテン文字[a-zA-Za-zA-Z]A, z, B
N数字[0-90-9]0, 5
Oその他フォールバック@, #

注意: “M”(漢数字)は “H”(一般漢字)よりも先にチェックされるため、一や百などの文字は一般的な漢字ではなく数字として分類されます。

中国語の文字種

Code名称パターン / 範囲
F機能語高頻度の文法語的, 了, 在, 是
CCJK 統合漢字U+4E00–U+9FFF中, 国, 人
XCJK 拡張 AU+3400–U+4DBF希少な文字
RCJK 部首U+2E80–U+2FDF康熙部首
P句読点CJK 記号 + 全角。, ,, 《
B注音符号U+3100–U+312F, U+31A0–U+31BF注音記号
AASCII / ラテン文字[a-zA-Za-zA-Z]A, z
N数字[0-90-9]0, 5
Oその他フォールバック@, #

中国語の機能語には以下が含まれます:

  • 構造助詞: 的, 地, 得
  • アスペクト / モーダル助詞: 了, 着, 过, 吗, 呢, 吧, 啊, 嘛
  • 接続詞: 和, 与, 或, 但, 而, 且, 及
  • 前置詞: 在, 从, 到, 把, 被, 对, 向, 给
  • よく使われる文法動詞 / 副詞: 是, 有, 不, 也, 都, 就, 要, 会, 能, 可

韓国語の文字種

Code名称パターン / 範囲
E助詞 / 語尾高頻度の文法助詞은, 는, 을, 를, 의, 에
SNハングル(パッチムなし)終声のないハングル音節가, 나, 하
SFハングル(パッチムあり)終声のあるハングル音節한, 글, 각
Jハングル字母U+1100–U+11FF個別の子音 / 母音
G互換字母U+3130–U+318Fㄱ, ㅏ, ㅎ
H漢字U+4E00–U+9FFFCJK 統合漢字
P句読点CJK 記号 + 全角。, ,
AASCII / ラテン文字[a-zA-Za-zA-Z]A, z
N数字[0-90-9]0, 5
Oその他フォールバック@, #

韓国語ハングル音節の検出

韓国語では SN と SF の種別にmatchガードを使用します。これは Unicode の体系的なハングルエンコーディングを活用しています:

  • ハングル音節は U+AC00–U+D7AF を占有
  • 各音節は (初声 * 21 + 中声) * 28 + 終声 + 0xAC00 としてエンコード
  • (codepoint - 0xAC00) % 28 == 0 の場合、音節に終声がない(SN)
  • それ以外の場合、終声がある(SF、「받침」)

この区別は、終声(パッチム/받침)の有無が韓国語の単語境界パターンと助詞の接続に影響するため重要です。

言語間の比較

FeatureJapaneseChineseKorean
種別の総数8910
固有の種別M, H, I, KF, C, X, R, BE, SN, SF, J, G
共有する種別P, A, N, OP, A, N, OP, A, N, O(H は日本語と共通)
マッチング方法範囲match範囲match範囲match + ガード
WC 特徴量の使用ありありなし