code name blue

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

Programming/Elasticsearch

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

byebyeblue 2019. 11. 1. 11:37
elasticsearch 6.4.3 version

3. kuromoji_baseform token filter (공식문서)

kuromoji_baserform 토큰 필터는 동사와 형용사 용언의 원형을 복원한다.

한국어를 예로 들자면 '갔어', '가니까' 등의 동사를 기본형인 '가다'로 복원해준다.

PUT kuromoji_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "kuromoji_tokenizer",
            "filter": [
              "kuromoji_baseform"
            ]
          }
        }
      }
    }
  }
}

위와 같이 tokenizerkuromoji_tokenizer로, filterkuromoji_baseform을 설정한다.

GET kuromoji_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "遊び"
}

일본어로 '놀다'에 해당하는 '遊び'를 입력한다.

{
  "tokens" : [ {
    "token" : "遊ぶ",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 0
  } ]
}

위와 같이 동사의 활용 없이 원형인 '遊ぶ'로 변환된 토큰으로 나뉜다.

 

 

4. kuromoji_part_of_speech token filter (공식문서)

kuromoji_part_of_speech 토큰 필터는 part-of-speech 태그에 사전 작업 되어 있는 불필요한 토큰을 삭제해준다.

기준은 품사 태그 세트이다. 주로 명사 뒤에 붙는 조사, 동사의 불필요한 어미 등을 삭제하는데 사용한다.

토큰 삭제는 lucene-analyzer-kuromoji.jar 내부의 stoptags.txt 파일을 따른다.

filter에서 stoptags를 지정하여 원하는 토큰만 걸러낼 수 있다. 모든 태그의 종류는 여기에서 확인할 수 있다.

PUT kuromoji_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "kuromoji_tokenizer",
            "filter": [
              "my_posfilter"
            ]
          }
        },
        "filter": {
          "my_posfilter": {
            "type": "kuromoji_part_of_speech",
            "stoptags": [
              "助詞-格助詞-一般",
              "助詞-終助詞"
            ]
          }
        }
      }
    }
  }
}

공식 예제대로 stoptags에 '助詞-格助詞-一般(조사-격조사-일반)'과 '助詞-終助詞(조사-종조사)'를 지정한다.

GET kuromoji_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "寿司がおいしいね"
}

'寿司がおいしいね'라는 문장을 analyze 한다.

{
  "tokens" : [ {
    "token" : "寿司",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 0
  }, {
    "token" : "おいしい",
    "start_offset" : 3,
    "end_offset" : 7,
    "type" : "word",
    "position" : 2
  } ]
}

주어 뒤의 'が'와 서술어 뒤의 'ね'가 stoptags에 의해 걸러지고 다른 토큰만 반환된다.

 

Comments