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

# 7.9.2. `TokenFilterNFKC`

## 7.9.2.1. Summary

Added in version 14.1.3.

このトークンフィルターは、 NormalizerNFKC と同じオプションを使えます。 `TokenMecab` を使ってトークナイズする前にノーマライズをすると、トークンの意味が失われることがあるため、このトークンフィルターは、トークナイズ後にノーマライズするために使用します。

## 7.9.2.2. 構文

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

オプションなし:

    TokenFilterNFKC

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

オプション指定例:

    TokenFilterNFKC("version", "16.0.0")

    TokenFilterNFKC("unify_kana", true)

    TokenFilterNFKC("unify_hyphen", true)

    TokenFilterNFKC("unify_to_romaji", true)

他にも NormalizerNFKC と同じオプションが利用できます。

## 7.9.2.3. 使い方

### 7.9.2.3.1. 簡単な使い方

正規化自体は NormalizerNFKC と同じなので、いくつかオプションの使い方を紹介します。

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

Execution example:

    tokenize TokenDelimit "©" --token_filters TokenFilterNFKC
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "©",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

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

Execution example:

    tokenize TokenDelimit "©" --token_filters 'TokenFilterNFKC("version", "16.0.0")'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "©",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

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

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

Execution example:

    tokenize \
      TokenDelimit \
      "あイｳｪおヽヾ" \
      --token_filters 'TokenFilterNFKC("unify_kana", true)'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "あいうぇおゝゞ",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

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

Execution example:

    tokenize \
      TokenDelimit \
      "-˗֊‐‑‒–⁃⁻₋−" \
      --token_filters 'TokenFilterNFKC("unify_hyphen", true)'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "-----------",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

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

Execution example:

    tokenize \
      TokenDelimit \
      "アァイィウゥエェオォ" \
      --token_filters  'TokenFilterNFKC("unify_to_romaji", true)'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "axaixiuxuexeoxo",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

### 7.9.2.3.2. 高度な使い方

`TokenFilterNFKC` と `TokenMecab` の `use_reading` オプションを組み合わせることで、入力文字列を全てひらがなとして出力できます。

Execution example:

    tokenize \
      'TokenMecab("use_reading", true)' \
      "私は林檎を食べます。" \
      --token_filters 'TokenFilterNFKC("unify_kana", true)'
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     {
    #       "value": "わたし",
    #       "position": 0,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "は",
    #       "position": 1,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "りんご",
    #       "position": 2,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "を",
    #       "position": 3,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "たべ",
    #       "position": 4,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "ます",
    #       "position": 5,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     },
    #     {
    #       "value": "。",
    #       "position": 6,
    #       "force_prefix": false,
    #       "force_prefix_search": false
    #     }
    #   ]
    # ]

## 7.9.2.4. 引数

`NormalizerNFKC` の 引数 をご覧ください。