본문 바로가기
WIKI 기술 지식 베이스

ICU tokenizer

원문 보기 위키 갱신

출처: 문서

본문

ICU tokenizer

icu_tokenizer는 Unicode Standard Annex #29에 정의된 유니코드 텍스트 분할 규칙을 사용하여 텍스트를 단어로 분리해요. 이 토크나이저는 표준 토크나이저보다 더 정확한 단어 경계를 감지하며, 특히 공백으로 단어를 구분하지 않는 아시아 언어에 유용해요.

icu_tokenizer는 중국어, 일본어, 한국어, 태국어, 라오어 텍스트에 대해 사전 기반 토큰화를 사용하고, 미얀마어와 크메르 문자를 음절로 분할하는 특화된 규칙을 적용해요.

설치

icu_tokenizer를 사용하려면 analysis-icu 플러그인이 필요해요. 설치 방법은 ICU analyzer를 참조하세요.

예제

다음 예제는 icu_tokenizer를 사용하는 방법을 보여줘요.

PUT /icu-tokenizer-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "icu_analyzer_custom": {
          "tokenizer": "icu_tokenizer"
        }
      }
    }
  }
}

{% include copy-curl.html %}

토크나이저 테스트

다음 요청을 사용하여 icu_tokenizer를 테스트해 보세요.

POST /icu-tokenizer-index/_analyze
{
  "tokenizer": "icu_tokenizer",
  "text": "สวัสดีOpenSearchเป็นเครื่องมือค้นหา"
}

{% include copy-curl.html %}

토크나이저는 공백 없이 태국어 텍스트를 올바르게 분할해요.

{
  "tokens": [
    {
      "token": "สวัสดี",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "OpenSearch",
      "start_offset": 6,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "เป็น",
      "start_offset": 16,
      "end_offset": 20,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "เครื่อง",
      "start_offset": 20,
      "end_offset": 27,
      "type": "<ALPHANUM>",
      "position": 3
    },
    {
      "token": "มือ",
      "start_offset": 27,
      "end_offset": 30,
      "type": "<ALPHANUM>",
      "position": 4
    },
    {
      "token": "ค้นหา",
      "start_offset": 30,
      "end_offset": 35,
      "type": "<ALPHANUM>",
      "position": 5
    }
  ]
}

토큰화 규칙 사용자 정의

고급 사용자는 Resource Bundle Break Iterator(RBBI) 구문을 사용하여 스크립트별 규칙 파일을 지정함으로써 icu_tokenizer 동작을 사용자 정의할 수 있어요. 이 기능은 Lucene에서 실험적이에요.

사용자 정의 규칙을 적용하려면 rule_files 매개변수에 쉼표로 구분된 script:filename 쌍 목록을 사용하세요. 스크립트 코드는 ISO 15924 4글자 표준을 따라요.

사용자 정의 규칙 예제

사용자 정의 규칙 파일을 OpenSearch 설정 디렉터리에 저장하세요(예: CustomRules.rbbi):

.+ {200};

이 규칙 파일을 사용하도록 분석기를 구성하세요:

PUT /custom-icu-rules
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "custom_icu_tokenizer": {
          "type": "icu_tokenizer",
          "rule_files": "Latn:CustomRules.rbbi"
        }
      },
      "analyzer": {
        "custom_icu_analyzer": {
          "tokenizer": "custom_icu_tokenizer"
        }
      }
    }
  }
}

{% include copy-curl.html %}

사용자 정의 토크나이저를 테스트하세요:

POST /custom-icu-rules/_analyze
{
  "analyzer": "custom_icu_analyzer",
  "text": "Custom tokenization rules"
}

{% include copy-curl.html %}

매개변수

다음 표는 icu_tokenizer의 매개변수를 보여줘요.

매개변수 데이터 타입 설명
rule_files String 특정 스크립트에 대한 사용자 정의 토큰화 규칙을 정의하는 script:rulefile 쌍의 쉼표로 구분된 목록이에요. 규칙 파일은 OpenSearch 설정 디렉터리에 있어야 해요. 선택 사항이에요.

관련 문서

더 알아보기 (Learn more)