本文へスキップ
`Ctrl`+`K`

# 7.7.2.2. `NormalizerNFKC`

## 7.7.2.2.1. 概要

Added in version 14.1.3.

`NormalizerNFKC` はUnicode NFKC（Normalization Form Compatibility Composition）を使ってテキストを正規化します。

Unicodeのバージョンはオプションで指定することができます。

また、このノーマライザーにはUnicodeバージョン以外にもオプションがあり、それらのオプションを指定することで動作を変更できます。

## 7.7.2.2.2. 構文

`NormalizerNFKC` は省略可能な引数があります。

オプションなし:

    NormalizerNFKC

`NormalizerNFKC` はUnicode NFKC（Normalization Form Compatibility Composition）を使ってテキストを正規化します。

オプション指定:

    NormalizerNFKC("version", "16.0.0")

    NormalizerNFKC("unify_kana", true)

    NormalizerNFKC("unify_kana_case", true)

    NormalizerNFKC("unify_kana_voiced_sound_mark", true)

    NormalizerNFKC("unify_hyphen", true)

    NormalizerNFKC("unify_prolonged_sound_mark", true)

    NormalizerNFKC("unify_hyphen_and_prolonged_sound_mark", true)

    NormalizerNFKC("unify_middle_dot", true)

    NormalizerNFKC("unify_katakana_v_sounds", true)

    NormalizerNFKC("unify_katakana_bu_sound", true)

    NormalizerNFKC("unify_to_katakana", true)

    NormalizerNFKC("unify_to_romaji", true)

    NormalizerNFKC("remove_symbol", true)

    NormalizerNFKC("unify_katakana_gu_small_sounds", true)

    NormalizerNFKC("unify_katakana_di_sound", true)

    NormalizerNFKC("unify_katakana_wo_sound", true)

    NormalizerNFKC("unify_katakana_zu_small_sounds", true)

    NormalizerNFKC("unify_katakana_du_sound", true)

    NormalizerNFKC("unify_katakana_trailing_o", true)

    NormalizerNFKC("unify_katakana_du_small_sounds", true)

    NormalizerNFKC("unify_kana_prolonged_sound_mark", true)

    NormalizerNFKC("unify_kana_hyphen", true)

    NormalizerNFKC("unify_latin_alphabet_with", true)

    NormalizerNFKC("unify_iteration_mark", true)

Added in version 15.1.7: unify_iteration_mark追加。

複数のオプション指定:

    NormalizerNFKC("version", "16.0.0", "unify_to_romaji", true, "unify_kana_case", true, "unify_hyphen_and_prolonged_sound_mark", true)

上記のように、 `NormalizerNFKC` は複数のオプションを指定することもできます。上記の例以外にも複数のオプションを組み合わせて指定できます。

## 7.7.2.2.3. 使い方

### 7.7.2.2.3.1. 簡単な使い方

以下は、 `NormalizerNFKC` の使用例です。 `NormalizerNFKC` はUnicode NFKC（Normalization Form Compatibility Composition）を使ってテキストを正規化します。

Execution example:

    normalize NormalizerNFKC "©" WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "©",
    #     "types": [
    #       "emoji",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は version オプションの使用例です。Unicodeのバージョンを指定できます。

Execution example:

    normalize 'NormalizerNFKC("version", "16.0.0")' "©" WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "©",
    #     "types": [
    #       "emoji",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_kana オプションの使用例です。

このオプションは、以下のように同じ音となる全角ひらがな、全角カタカナ、半角カタカナの文字を同一視します。

Execution example:

    normalize 'NormalizerNFKC("unify_kana", true)' "あイｳｪおヽヾ" WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "あいうぇおゝゞ",
    #     "types": [
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_kana_case オプションの使用例です。

このオプションは、以下のように、全角ひらがな、全角カタカナ、半角カタカナの小さな文字を大きな文字と同一視します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_case", true)' \
      "ぁあぃいぅうぇえぉおゃやゅゆょよゎわゕかゖけ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ああいいううええおおややゆゆよよわわかかけけ",
    #     "types": [
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_case", true)' \
      "ァアィイゥウェエォオャヤュユョヨヮワヵカヶケ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "アアイイウウエエオオヤヤユユヨヨワワカカケケ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_kana_voiced_sound_mark オプションの使用例です。

このオプションは、以下のように、全角ひらがな、全角カタカナ、半角カタカナで濁点や半濁点の有無を同一視します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_voiced_sound_mark", true)' \
      "かがきぎくぐけげこごさざしじすずせぜそぞただちぢつづてでとどはばぱひびぴふぶぷへべぺほぼぽ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "かかききくくけけここささししすすせせそそたたちちつつててととはははひひひふふふへへへほほほ",
    #     "types": [
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "hiragana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_voiced_sound_mark", true)' \
      "カガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテデトドハバパヒビピフブプヘベペホボポ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "カカキキククケケココササシシススセセソソタタチチツツテテトトハハハヒヒヒフフフヘヘヘホホホ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_hyphen オプションの使用例です。このオプションは、以下のように、ハイフンを"-" (U+002D HYPHEN-MINUS)に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_hyphen", true)' \
      "-˗֊‐‑‒–⁃⁻₋−" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "-----------",
    #     "types": [
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_prolonged_sound_mark オプションの使用例です。このオプションは、以下のように長音記号を"-" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK)に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_prolonged_sound_mark", true)' \
      "ー—―─━ｰ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ーーーーーー",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_hyphen_and_prolonged_sound_mark オプションの使用例です。このオプションは、以下のように、ハイフンと長音記号を"-" (U+002D HYPHEN-MINUS)に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_hyphen_and_prolonged_sound_mark", true)' \
      "-˗֊‐‑‒–⁃⁻₋− ﹣－ ー—―─━ｰ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "----------- -- ------",
    #     "types": [
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "others",
    #       "symbol",
    #       "symbol",
    #       "others",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_middle_dot オプションの使用例です。このオプションは、中点を"·" (U+00B7 MIDDLE DOT)に正規化します。

remove_symbol と一緒に使うと中点のような文字をすべて削除できます。

Execution example:

    normalize \
      'NormalizerNFKC("unify_middle_dot", true)' \
      "·ᐧ•∙⋅⸱・･" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "········",
    #     "types": [
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "symbol",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_v_sounds オプションの使用例です。このオプションは、以下のように、"ヴァヴィヴヴェヴォ"を"バビブベボ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_v_sounds", true)' \
      "ヴァヴィヴヴェヴォヴ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "バビブベボブ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_bu_sound オプションの使用例です。このオプションは、以下のように、"ヴァヴィヴゥヴェヴォ"を"ブ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_bu_sound", true)' \
      "ヴァヴィヴヴェヴォヴ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ブブブブブブ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_to_katakana オプションの使用例です。このオプションは、以下のように、ひらがなをカタカナに正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_to_katakana", true)' \
      "ゔぁゔぃゔゔぇゔぉ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ヴァヴィヴヴェヴォ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_to_romaji オプションの使用例です。このオプションは、以下のように、ひらがなとカタカナをローマ字に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_to_romaji", true)' \
      "アァイィウゥエェオォ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "axaixiuxuexeoxo",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 remove_symbol オプションの使用例です。このオプションは、以下のように記号(例えば #, !, ", &, % 等)を削除します 。

Execution example:

    normalize \
      'NormalizerNFKC("remove_symbol", true)' \
      "#This & is %% a pen." \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "this  is  a pen",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "others",
    #       "others",
    #       "alpha",
    #       "alpha",
    #       "others",
    #       "others",
    #       "alpha",
    #       "others",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_gu_small_sounds オプションの使用例です。このオプションは、以下のように、"グァグィグェグォ"を"ガギゲゴ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_gu_small_sounds", true)' \
      "グァグィグェグォ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ガギゲゴ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_di_sound オプションの使用例です。このオプションは、以下のように、"ヂ"を"ジ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_di_sound", true)' \
      "ヂ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ジ",
    #     "types": [
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_wo_sound オプションの使用例です。このオプションは、以下のように、"ヲ"を"オ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_wo_sound", true)' \
      "ヲ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "オ",
    #     "types": [
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_zu_small_sounds オプションの使用例です。このオプションは、以下のように、"ズァズィズェズォ"を"ザジゼゾ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_zu_small_sounds", true)' \
      "ズァズィズェズォ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ザジゼゾ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_du_sound オプションの使用例です。このオプションは、以下のように、"ヅ"を"ズ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_du_sound", true)' \
      "ヅ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ズ",
    #     "types": [
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_trailing_o オプションの使用例です。このオプションは、以下のように、前の文字の母音が"オ"のとき、"オ"を"ウ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_trailing_o", true)' \
      "オオコオソオトオノオ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "オウコウソウトウノウ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は、 unify_katakana_du_small_sounds オプションの使用例です。このオプションは、以下のように、"ヅァヅィヅェヅォ"を"ザジゼゾ"に正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_katakana_du_small_sounds", true)' \
      "ヅァヅィヅェヅォ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ザジゼゾ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_kana_prolonged_sound_mark オプションの使用例です。このオプションは、"ー" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK) を一文字前のひらがな・カタカナの母音に正規化します。

もし、一文字前の文字が"ん"であれば、"ー"は"ん"に正規化されます。また、一文字前の文字が"ン"であれば、"ー"は"ン"に正規化されます。

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_prolonged_sound_mark", true)' \
      "カーキークーケーコー" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "カアキイクウケエコオ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_kana_hyphen オプションの使用例です。このオプションは、"-" (U+002D HYPHEN-MINUS) を一文字前のひらがな・カタカナの母音に正規化します。

もし、一文字前の文字が"ん"であれば、"-"は"ん"に正規化されます。また、一文字前の文字が"ン"であれば、"-"は"ン"に正規化されます。

Execution example:

    normalize \
      'NormalizerNFKC("unify_kana_hyphen", true)' \
      "カ-キ-ク-ケ-コ-" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "カアキイクウケエコオ",
    #     "types": [
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "katakana",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_latin_alphabet_with オプションの使用例です。このオプションは、以下のように発音記号付きの文字と発音記号なしの文字を同じ文字とみなすことができます。

ただし、この機能は LATIN (SMALL|CAPITAL) LETTER X WITH XXX にのみフォーカスしています。 LATIN (SMALL|CAPITAL) LETTER X + COMBINING XXX はサポートしていません。

Execution example:

    normalize \
      'NormalizerNFKC("unify_latin_alphabet_with", true)' \
      "ngoằn" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "ngoan",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

以下は unify_iteration_mark オプションの使用例です。このオプションは、踊り字を直前の文字に置き換えて正規化します。

Execution example:

    normalize \
      'NormalizerNFKC("unify_iteration_mark", true)' \
      "時々" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1758882899.892991,
    #     0.0004293918609619141
    #   ],
    #   {
    #     "normalized": "時時",
    #     "types": [
    #       "kanji",
    #       "kanji",
    #       "null"
    #     ],
    #     "checks": [
    #     ]
    #   }
    # ]

### 7.7.2.2.3.2. 高度な使い方

#### 7.7.2.2.3.2.1. `TokenMecab` と使う

`TokenMecab` と `NormalizerNFKC` を組み合わせて使うことで、特定の品詞の読みをローマ字で出力できます。

まずはじめに、 `TokenMecab` の `target_class` オプションと `include_reading` オプションを使って人名の接尾語と非自立語を除いた名詞を抽出します。

次に、抽出した名詞の読みを `NormalizerNFKC1` の `unify_to_romaji` を使って正規化します。

Execution example:

    tokenize \
      'TokenMecab("target_class", "-名詞/非自立", "target_class", "-名詞/接尾/人名", "target_class", "名詞", "include_reading", true)' \
      '彼の名前は山田さんのはずです。'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "彼",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false,
    #       "metadata": {
    #         "reading": "カレ"
    #       }
    #     },
    #     {
    #       "value": "名前",
    #       "position": 1,
    #       "force_prefix": false,
    #       "force_prefix_search": false,
    #       "metadata": {
    #         "reading": "ナマエ"
    #       }
    #     },
    #     {
    #       "value": "山田",
    #       "position": 2,
    #       "force_prefix": false,
    #       "force_prefix_search": false,
    #       "metadata": {
    #         "reading": "ヤマダ"
    #       }
    #     }
    #   ]
    # ]
    normalize \
      'NormalizerNFKC("unify_to_romaji", true)' \
      "カレ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "kare",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]
    normalize \
      'NormalizerNFKC("unify_to_romaji", true)' \
      "ナマエ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "namae",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]
    normalize \
      'NormalizerNFKC("unify_to_romaji", true)' \
      "ヤマダ" \
      WITH_TYPES
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "normalized": "yamada",
    #     "types": [
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "alpha",
    #       "null"
    #     ],
    #     "checks": []
    #   }
    # ]

#### 7.7.2.2.3.2.2. `unify_to_katakana` を他のオプションと使う

unify_to_katakana は以下に列挙するオプションと組み合わせることで、特殊なカタカナを一般的なカタカナと同一視します。

- unify_katakana_v_sounds

  - "ゔぁゔぃゔゔぇゔぉ"、"ばびぶべぼ"、"ヴァヴィヴヴェヴォ"、"バビブベボ"を同一視します

- unify_katakana_gu_small_sounds

  - "ぐぁぐぃぐぇぐぉ"、"がぎげご"、"グァグィグェグォ"、"ガギゲゴ"を同一視します

- unify_katakana_zu_small_sounds

  - "ずぁずぃずぇずぉ"、"ざじぜぞ"、"ズァズィズェズォ"、"ザジゼゾ"を同一視します

- unify_katakana_wo_sound

  - "お"、"を"、"オ"、"ヲ"を同一視します

- unify_katakana_di_sound

  - "じ"、"ぢ"、"ジ"、"ヂ"を同一視します

- unify_katakana_du_sound

  - "ず"、"づ"、"ズ"、"ヅ"を同一視します

例えば、 `unify_to_katakana` と `unify_katakana_v_sounds` を使うと、""ばいおりん"で"バイオリン"、"ヴァイオリン"、"ばいおりん"、"ゔぁいおりん"が検索できます。

## 7.7.2.2.4. 引数

### 7.7.2.2.4.1. 省略可能引数

省略可能な引数は以下の通りです。

#### 7.7.2.2.4.1.1. `version`

このオプションで、Unicodeのバージョンを指定します。

利用可能なバージョンは以下の通りです。

Unicodeバージョン | 指定する値 | 備考
--- | --- | ---
16.0.0 | `"16.0.0"` | デフォルト値
15.0.0 | `"15.0.0"` | NormalizerNFKC150 と同じ
13.0.0 | `"13.0.0"` | NormalizerNFKC130 と同じ
12.1.0 | `"12.1.0"` | NormalizerNFKC121 と同じ
10.0.0 | `"10.0.0"` | NormalizerNFKC100 と同じ
5.0.0 | `"5.0.0"` | NormalizerNFKC51 と同じ（`NormalizerNFKC51` という名前ですが Unicode5.0用）

#### 7.7.2.2.4.1.2. `unify_kana`

このオプションは、同じ音となる全角ひらがな、全角カタカナ、半角カタカナの文字を同一視します。

#### 7.7.2.2.4.1.3. `unify_kana_case`

このオプションは、全角ひらがな、全角カタカナ、半角カタカナの小さな文字を大きな文字と同一視します。

#### 7.7.2.2.4.1.4. `unify_kana_voiced_sound_mark`

このオプションは、全角ひらがな、全角カタカナ、半角カタカナで濁点や半濁点の有無を同一視します。

#### 7.7.2.2.4.1.5. `unify_hyphen`

このオプションは、ハイフンを"-" (U+002D HYPHEN-MINUS)に正規化します。

正規化対象のハイフンは以下の通りです。

- "-" (U+002D HYPHEN-MINUS)

- "֊" (U+058A ARMENIAN HYPHEN)

- "˗" (U+02D7 MODIFIER LETTER MINUS SIGN)

- "‐" (U+2010 HYPHEN)

- "—" (U+2014 EM DASH)

- "⁃" (U+2043 HYPHEN BULLET)

- "⁻" (U+207B SUPERSCRIPT MINUS)

- "₋" (U+208B SUBSCRIPT MINUS)

- "−" (U+2212 MINUS SIGN)

#### 7.7.2.2.4.1.6. `unify_prolonged_sound_mark`

このオプションは、長音記号を"-" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK)に正規化します。

正規化対象の長音記号は以下の通りです。

- "—" (U+2014 EM DASH)

- "―" (U+2015 HORIZONTAL BAR)

- "─" (U+2500 BOX DRAWINGS LIGHT HORIZONTAL)

- "━" (U+2501 BOX DRAWINGS HEAVY HORIZONTAL)

- "ー" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK)

- "ｰ" (U+FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK)

#### 7.7.2.2.4.1.7. `unify_hyphen_and_prolonged_sound_mark`

このオプションは、ハイフンと長音記号を"-" (U+002D HYPHEN-MINUS)に正規化します。

正規化対象のハイフンと長音記号は以下の通りです。

- "-" (U+002D HYPHEN-MINUS)

- "֊" (U+058A ARMENIAN HYPHEN)

- "˗" (U+02D7 MODIFIER LETTER MINUS SIGN)

- "‐" (U+2010 HYPHEN)

- "—" (U+2014 EM DASH)

- "⁃" (U+2043 HYPHEN BULLET)

- "⁻" (U+207B SUPERSCRIPT MINUS)

- "₋" (U+208B SUBSCRIPT MINUS)

- "−" (U+2212 MINUS SIGN)

- "—" (U+2014 EM DASH)

- "―" (U+2015 HORIZONTAL BAR)

- "─" (U+2500 BOX DRAWINGS LIGHT HORIZONTAL)

- "━" (U+2501 BOX DRAWINGS HEAVY HORIZONTAL)

- "ー" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK)

- "ｰ" (U+FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK)

#### 7.7.2.2.4.1.8. `unify_middle_dot`

このオプションは、中点を"·" (U+00B7 MIDDLE DOT)に正規化します。

正規化対象の中点は以下の通りです。

- "·" (U+00B7 MIDDLE DOT)

- "ᐧ" (U+1427 CANADIAN SYLLABICS FINAL MIDDLE DOT)

- "•" (U+2022 BULLET)

- "∙" (U+2219 BULLET OPERATOR)

- "⋅" (U+22C5 DOT OPERATOR)

- "⸱" (U+2E31 WORD SEPARATOR MIDDLE DOT)

- "・" (U+30FB KATAKANA MIDDLE DOT)

- "･" (U+FF65 HALFWIDTH KATAKANA MIDDLE DOT)

remove_symbol と一緒に使うと中点のような文字をすべて削除できます。

#### 7.7.2.2.4.1.9. `unify_katakana_v_sounds`

このオプションは、"ヴァヴィヴヴェヴォ"を"バビブベボ"に正規化します。

#### 7.7.2.2.4.1.10. `unify_katakana_bu_sound`

このオプションは、"ヴァヴィヴゥヴェヴォ"を"ブ"に正規化します。

#### 7.7.2.2.4.1.11. `unify_to_katakana`

このオプションは、ひらがなをカタカナに正規化します。

#### 7.7.2.2.4.1.12. `unify_to_romaji`

このオプションは、ひらがなとカタカナをローマ字に正規化します。

#### 7.7.2.2.4.1.13. `remove_symbol`

このオプションは、正規化対象の文字列から記号(例えば #, !, ", &, % 等)を削除します。

#### 7.7.2.2.4.1.14. `unify_katakana_gu_small_sounds`

このオプションは、"グァグィグェグォ"を"ガギゲゴ"に正規化します。

#### 7.7.2.2.4.1.15. `unify_katakana_di_sound`

このオプションは、"ヂ"を"ジ"に正規化します。

#### 7.7.2.2.4.1.16. `unify_katakana_wo_sound`

このオプションは、"ヲ"を"オ"に正規化します。

#### 7.7.2.2.4.1.17. `unify_katakana_zu_small_sounds`

このオプションは、"ズァズィズェズォ"を"ザジゼゾ"に正規化します。

#### 7.7.2.2.4.1.18. `unify_katakana_du_sound`

このオプションは、"ヅ"を"ズ"に正規化します。

#### 7.7.2.2.4.1.19. `unify_katakana_trailing_o`

このオプションは、前の文字の母音が"オ"のとき、"オ"を"ウ"に正規化します。

- "ォオ" -> "ォウ"

- "オオ" -> "オウ"

- "コオ" -> "コウ"

- "ソオ" -> "ソウ"

- "トオ" -> "トウ"

- "ノオ" -> "ノウ"

- "ホオ" -> "ホウ"

- "モオ" -> "モウ"

- "ョオ" -> "ョオ"

- "ヨオ" -> "ヨウ"

- "ロオ" -> "ロウ"

- "ゴオ" -> "ゴウ"

- "ゾオ" -> "ゾウ"

- "ドオ" -> "ドウ"

- "ボオ" -> "ボウ"

- "ポオ" -> "ポウ"

- "ヺオ" -> "ヺウ"

#### 7.7.2.2.4.1.20. `unify_katakana_du_small_sounds`

このオプションは、"ヅァヅィヅェヅォ"を"ザジゼゾ"に正規化します。

#### 7.7.2.2.4.1.21. `unify_kana_prolonged_sound_mark`

このオプションは、"ー" (U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK) を一文字前のひらがな・カタカナの母音に正規化します。

もし、一文字前の文字が"ん"であれば、"ー"は"ん"に正規化されます。また、一文字前の文字が"ン"であれば、"ー"は"ン"に正規化されます。

    ァー -> ァア, アー -> アア, ヵー -> ヵア, カー -> カア, ガー -> ガア, サー -> サア, ザー -> ザア,
    ター -> タア, ダー -> ダア, ナー -> ナア, ハー -> ハア, バー -> バア, パー -> パア, マー -> マア,
    ャー -> ャア, ヤー -> ヤア, ラー -> ラア, ヮー -> ヮア, ワー -> ワア, ヷー -> ヷア,
    ィー -> ィイ, イー -> イイ, キー -> キイ, ギー -> ギイ, シー -> シイ, ジー -> ジイ, チー -> チイ,
    ヂー -> ヂイ, ニー -> ニイ, ヒー -> ヒイ, ビー -> ビイ, ピー -> ピイ, ミー -> ミイ, リー -> リイ,
    ヰー -> ヰイ, ヸー -> ヸイ,

    ゥー -> ゥウ, ウー -> ウウ, クー -> クウ, グー -> グウ, スー -> スウ, ズー -> ズウ, ツー -> ツウ,
    ヅー -> ヅウ, ヌー -> ヌウ, フー -> フウ, ブー -> ブウ, プー -> プウ, ムー -> ムウ, ュー -> ュウ,
    ユー -> ユウ, ルー -> ルウ, ヱー -> ヱウ, ヴー -> ヴウ,

    ェー -> ェエ, エー -> エエ, ヶー -> ヶエ, ケー -> ケエ, ゲー -> ゲエ, セー -> セエ, ゼー -> ゼエ,
    テー -> テエ, デー -> デエ, ネー -> ネエ, ヘー -> ヘエ, ベー -> ベエ, ペー -> ペエ, メー -> メエ,
    レー -> レエ, ヹー -> ヹエ,

    ォー -> ォオ, オー -> オオ, コー -> コオ, ゴー -> ゴオ, ソー -> ソオ, ゾー -> ゾオ, トー -> トオ,
    ドー -> ドオ, ノー -> ノオ, ホー -> ホオ, ボー -> ボオ, ポー -> ポオ, モー -> モオ, ョー -> ョオ,
    ヨー -> ヨオ, ロー -> ロオ, ヲー -> ヲオ, ヺー -> ヺオ,

    ンー -> ンン

    ぁー -> ぁあ, あー -> ああ, ゕー -> ゕあ, かー -> かあ, がー -> があ, さー -> さあ, ざー -> ざあ,
    たー -> たあ, だー -> だあ, なー -> なあ, はー -> はあ, ばー -> ばあ, ぱー -> ぱあ, まー -> まあ,
    ゃー -> ゃあ, やー -> やあ, らー -> らあ, ゎー -> ゎあ, わー -> わあ

    ぃー -> ぃい, いー -> いい, きー -> きい, ぎー -> ぎい, しー -> しい, じー -> じい, ちー -> ちい,
    ぢー -> ぢい, にー -> にい, ひー -> ひい, びー -> びい, ぴー -> ぴい, みー -> みい, りー -> りい,
    ゐー -> ゐい

    ぅー -> ぅう, うー -> うう, くー -> くう, ぐー -> ぐう, すー -> すう, ずー -> ずう, つー -> つう,
    づー -> づう, ぬー -> ぬう, ふー -> ふう, ぶー -> ぶう, ぷー -> ぷう, むー -> むう, ゅー -> ゅう,
    ゆー -> ゆう, るー -> るう, ゑー -> ゑう, ゔー -> ゔう

    ぇー -> ぇえ, えー -> ええ, ゖー -> ゖえ, けー -> けえ, げー -> げえ, せー -> せえ, ぜー -> ぜえ,
    てー -> てえ, でー -> でえ, ねー -> ねえ, へー -> へえ, べー -> べえ, ぺー -> ぺえ, めー -> めえ,
    れー -> れえ

    ぉー -> ぉお, おー -> おお, こー -> こお, ごー -> ごお, そー -> そお, ぞー -> ぞお, とー -> とお,
    どー -> どお, のー -> のお, ほー -> ほお, ぼー -> ぼお, ぽー -> ぽお, もー -> もお, ょー -> ょお,
    よー -> よお, ろー -> ろお, をー -> をお

    んー -> んん

#### 7.7.2.2.4.1.22. `unify_kana_hyphen`

このオプションは、"-" (U+002D HYPHEN-MINUS) を一文字前のひらがな・カタカナの母音に正規化します。

もし、一文字前の文字が"ん"であれば、"-"は"ん"に正規化されます。また、一文字前の文字が"ン"であれば、"-"は"ン"に正規化されます。

    ァ- -> ァア, ア- -> アア, ヵ- -> ヵア, カ- -> カア, ガ- -> ガア, サ- -> サア, ザ- -> ザア,
    タ- -> タア, ダ- -> ダア, ナ- -> ナア, ハ- -> ハア, バ- -> バア, パ- -> パア, マ- -> マア,
    ャ- -> ャア, ヤ- -> ヤア, ラ- -> ラア, ヮ- -> ヮア, ワ- -> ワア, ヷ- -> ヷア,
    ィ- -> ィイ, イ- -> イイ, キ- -> キイ, ギ- -> ギイ, シ- -> シイ, ジ- -> ジイ, チ- -> チイ,
    ヂ- -> ヂイ, ニ- -> ニイ, ヒ- -> ヒイ, ビ- -> ビイ, ピ- -> ピイ, ミ- -> ミイ, リ- -> リイ,
    ヰ- -> ヰイ, ヸ- -> ヸイ,

    ゥ- -> ゥウ, ウ- -> ウウ, ク- -> クウ, グ- -> グウ, ス- -> スウ, ズ- -> ズウ, ツ- -> ツウ,
    ヅ- -> ヅウ, ヌ- -> ヌウ, フ- -> フウ, ブ- -> ブウ, プ- -> プウ, ム- -> ムウ, ュ- -> ュウ,
    ユ- -> ユウ, ル- -> ルウ, ヱ- -> ヱウ, ヴ- -> ヴウ,

    ェ- -> ェエ, エ- -> エエ, ヶ- -> ヶエ, ケ- -> ケエ, ゲ- -> ゲエ, セ- -> セエ, ゼ- -> ゼエ,
    テ- -> テエ, デ- -> デエ, ネ- -> ネエ, ヘ- -> ヘエ, ベ- -> ベエ, ペ- -> ペエ, メ- -> メエ,
    レ- -> レエ, ヹ- -> ヹエ,

    ォ- -> ォオ, オ- -> オオ, コ- -> コオ, ゴ- -> ゴオ, ソ- -> ソオ, ゾ- -> ゾオ, ト- -> トオ,
    ド- -> ドオ, ノ- -> ノオ, ホ- -> ホオ, ボ- -> ボオ, ポ- -> ポオ, モ- -> モオ, ョ- -> ョオ,
    ヨ- -> ヨオ, ロ- -> ロオ, ヲ- -> ヲオ, ヺ- -> ヺオ,

    ン- -> ンン

    ぁ- -> ぁあ, あ- -> ああ, ゕ- -> ゕあ, か- -> かあ, が- -> があ, さ- -> さあ, ざ- -> ざあ,
    た- -> たあ, だ- -> だあ, な- -> なあ, は- -> はあ, ば- -> ばあ, ぱ- -> ぱあ, ま- -> まあ,
    ゃ- -> ゃあ, や- -> やあ, ら- -> らあ, ゎ- -> ゎあ, わ- -> わあ

    ぃ- -> ぃい, い- -> いい, き- -> きい, ぎ- -> ぎい, し- -> しい, じ- -> じい, ち- -> ちい,
    ぢ- -> ぢい, に- -> にい, ひ- -> ひい, び- -> びい, ぴ- -> ぴい, み- -> みい, り- -> りい,
    ゐ- -> ゐい

    ぅ- -> ぅう, う- -> うう, く- -> くう, ぐ- -> ぐう, す- -> すう, ず- -> ずう, つ- -> つう,
    づ- -> づう, ぬ- -> ぬう, ふ- -> ふう, ぶ- -> ぶう, ぷ- -> ぷう, む- -> むう, ゅ- -> ゅう,
    ゆ- -> ゆう, る- -> るう, ゑ- -> ゑう, ゔ- -> ゔう

    ぇ- -> ぇえ, え- -> ええ, ゖ- -> ゖえ, け- -> けえ, げ- -> げえ, せ- -> せえ, ぜ- -> ぜえ,
    て- -> てえ, で- -> でえ, ね- -> ねえ, へ- -> へえ, べ- -> べえ, ぺ- -> ぺえ, め- -> めえ,
    れ- -> れえ

    ぉ- -> ぉお, お- -> おお, こ- -> こお, ご- -> ごお, そ- -> そお, ぞ- -> ぞお, と- -> とお,
    ど- -> どお, の- -> のお, ほ- -> ほお, ぼ- -> ぼお, ぽ- -> ぽお, も- -> もお, ょ- -> ょお,
    よ- -> よお, ろ- -> ろお, を- -> をお

    ん- -> んん

#### 7.7.2.2.4.1.23. `unify_latin_alphabet_with`

このオプションは、以下のように発音記号付きの文字と発音記号なしの文字を同じ文字とみなすことができます。

ただし、この機能は LATIN (SMALL|CAPITAL) LETTER X WITH XXX にのみフォーカスしています。 LATIN (SMALL|CAPITAL) LETTER X + COMBINING XXX はサポートしていません。

#### 7.7.2.2.4.1.24. `unify_iteration_mark`

Added in version 15.1.7.

このオプションは、踊り字を直前の文字に置き換えて正規化します。

正規化対象の踊り字は以下の通りです。

- Hiragana Iteration Mark ゝ (U+309D)

    こゝ -> ここ
    づゝ -> づつ

- Hiragana Voiced Iteration Mark ゞ (U+309E)

    ぶゞ漬け -> ぶぶ漬け
    ふゞき -> ふぶき

- Katakana Iteration Mark ヽ (U+30FD)

    バナヽ -> バナナ
    バヽナ -> バハナ

- Katakana Voiced Iteration Mark ヾ (U+30FE)

    バヾ -> ババ
    フヾキ -> フブキ

- Ideographic Iteration Mark 々 (U+3005) - 制限：直前の単一文字の繰り返しのみサポート

    時々 -> 時時

- Vertical Ideographic Iteration Mark 〻 (U+303B) - 制限：直前の単一文字の繰り返しのみサポート

    各〻 -> 各各

注釈

々 と 〻 については、直前の1文字のみを繰り返すケースのみに限ります。 次のような「直前1文字の繰り返し」以外のパターンは 非対応 です。

例

- "部分々々" -> "部分部分"

- "古々々米" -> "古古古米"

## 7.7.2.2.5. 参考

- normalize