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

Hyphenation decompounder token filter

원문 보기 위키 갱신

출처: 문서

본문

하이픈 분해 복합어 토큰 필터

hyphenation_decompounder 토큰 필터는 복합어를 구성 요소로 분해하는 데 사용해요. 이 필터는 독일어, 네덜란드어, 스웨덴어처럼 복합어가 흔한 언어에 특히 유용해요. 이 필터는 하이픈 패턴(일반적으로 .xml 파일에 정의됨)을 사용하여 복합어 내에서 분할 가능한 위치를 식별해요. 그런 다음 이러한 구성 요소는 제공된 사전과 대조해요. 일치하는 항목이 있으면 해당 구성 요소가 유효한 토큰으로 처리해요. 하이픈 패턴 파일에 대한 자세한 내용은 Apache Formatting Objects Processor (FOP) XML Hyphenation Patterns를 참조하세요.

매개변수

hyphenation_decompounder 토큰 필터는 다음 매개변수로 구성할 수 있어요.

매개변수 필수/선택 데이터 타입 설명
hyphenation_patterns_path 필수 String 하이픈 패턴 파일의 경로(config 디렉터리 기준 상대 경로 또는 절대 경로)예요. 이 파일에는 언어별 단어 분할 규칙이 포함되어 있어요. 파일은 일반적으로 XML 형식이에요. 샘플 파일은 OFFO SourceForge 프로젝트에서 다운로드할 수 있어요.
word_list word_list_path가 설정되지 않은 경우 필수예요 Array of strings 하이픈 패턴으로 생성된 구성 요소를 검증하는 데 사용되는 단어 목록이에요.
word_list_path word_list가 설정되지 않은 경우 필수예요 String 하위 단어 목록의 경로(config 디렉터리 기준 상대 경로 또는 절대 경로)예요.
max_subword_size 선택이에요 Integer 최대 하위 단어 길이예요. 생성된 하위 단어가 이 길이를 초과하면 생성된 토큰에 추가되지 않아요. 기본값은 15예요.
min_subword_size 선택이에요 Integer 최소 하위 단어 길이예요. 생성된 하위 단어가 지정된 길이보다 짧으면 생성된 토큰에 추가되지 않아요. 기본값은 2예요.
min_word_size 선택이에요 Integer 최소 단어 문자 길이예요. 이 길이보다 짧은 단어 토큰은 하위 단어로 분해되지 않아요. 기본값은 5예요.
only_longest_match 선택이에요 Boolean 생성된 토큰에 가장 긴 하위 단어만 포함해요. 기본값은 false예요.

예제

다음 예제 요청은 test_index라는 새 인덱스를 생성하고 hyphenation_decompounder 필터로 분석기를 구성해요.

PUT /test_index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_hyphenation_decompounder": {
          "type": "hyphenation_decompounder",
          "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
          "word_list": ["notebook", "note", "book"],
          "min_subword_size": 3,
          "min_word_size": 5,
          "only_longest_match": false
        }
      },
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_hyphenation_decompounder"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

다음 요청을 사용하여 분석기로 생성된 토큰을 확인해요.

POST /test_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "notebook"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 포함되어 있어요.

{
  "tokens": [
    {
      "token": "notebook",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "note",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "book",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}

더 알아보기 (Learn more)