code name blue

elasticsearch : 일본어 형태소 분석기 kuromoji - analyzer (3) 본문

Programming/Elasticsearch

elasticsearch : 일본어 형태소 분석기 kuromoji - analyzer (3)

byebyeblue 2019. 11. 1. 14:23
elasticsearch 6.4.3 version

5. kuromoji_readingform token filter (공식문서)

kuromoji_readingform 토큰 필터는 가타카나 혹은 로마자 발음대로 결과를 리턴한다.

사전 정의된 kuromoji_readingform 필터를 사용할 때 use_romaji 항목을 true로 사용한다.

반대로 커스텀 kuromoji_readingform 필터를 사용하거나 가타카나 발음 결과를 리턴하고 싶을 경우

use_romaji 항목을 false로 사용하면 된다.

PUT kuromoji_sample
{
    "settings": {
        "index":{
            "analysis":{
                "analyzer" : {
                    "romaji_analyzer" : {
                        "tokenizer" : "kuromoji_tokenizer",
                        "filter" : ["romaji_readingform"]
                    },
                    "katakana_analyzer" : {
                        "tokenizer" : "kuromoji_tokenizer",
                        "filter" : ["katakana_readingform"]
                    }
                },
                "filter" : {
                    "romaji_readingform" : {
                        "type" : "kuromoji_readingform",
                        "use_romaji" : true
                    },
                    "katakana_readingform" : {
                        "type" : "kuromoji_readingform",
                        "use_romaji" : false
                    }
                }
            }
        }
    }
}

공식 예제에서는 romaji_analyzerkatakana_analyzer를 설정하였다.

각각 필터는 romaji_readingformkatakana_readingform을 설정하였다.

GET kuromoji_sample/_analyze
{
  "analyzer": "katakana_analyzer",
  "text": "寿司" 
}

GET kuromoji_sample/_analyze
{
  "analyzer": "romaji_analyzer",
  "text": "寿司" 
}

위와 같이 같은 텍스트를 katakana_analyzerromaji_analyzer에 각각 쿼리를 날리면

'スシ'와 'sushi'의 결과를 각각 리턴한다.

 

 

6. kuromoji_stemmer token filter (공식문서)

kuromoji_stemmer 토큰 필터는 가타카나 단어에서 마지막에 장음처리되는 부분을 제거한다.

단어 하나가 전체적으로 모두 가타카나로 이루어진 경우에만 작동한다.

기본적으로 minimum_length 세팅을 사용하고, 디폴트 값은 4이다.

가타카나 단어가 minimum_length에 설정된 값보다 작을 경우 변환되지 않는다.

PUT kuromoji_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "kuromoji_tokenizer",
            "filter": [
              "my_katakana_stemmer"
            ]
          }
        },
        "filter": {
          "my_katakana_stemmer": {
            "type": "kuromoji_stemmer",
            "minimum_length": 4
          }
        }
      }
    }
  }
}

공식 예제에서는 위와 같이 설정한다.

GET kuromoji_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "コピー" 
}

GET kuromoji_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "サーバー" 
}

'コピー'는 그대로 'コピー'로 리턴되고, 'サーバー'는 'サーバ'로 리턴된다.

 

Comments