code name blue

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

Programming/Elasticsearch

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

byebyeblue 2019. 10. 29. 16:35

elasticsearch 6.4.3 version


kuromoji analyzer (공식문서)

일본어 형태소 분석기 kuromoji analyzer는 아래와 같은 tokenizer와 token filter로 구성되어있다.

tokenizer는 각 단어(term/token)를 분리하는 역할을,

token filter는 분리된 단어들을 검색 가능하게 가공하는 역할을 한다.

  1. kuromoji_iteration_mark character filter

  2. kuromoji_tokenizer

  3. kuromoji_baseform token filter

  4. kuromoji_part_of_speech token filter

  5. cjk_width token filter

  6. ja_stop token filter

  7. kuromoji_stemmer token filter

  8. lowercase token filter


1. kuromoji_iteration_mark character filter (공식문서)

kuromoji_iteration_mark는 일본어의 '々'와 같은 반복 부호(오도리지)를 원래의 글자로 변환해준다.

時々(ときとき)와 같은 글자를 時時(ときとき)로 바꾸어 주는 것이다.

normalize_kanji 한자 반복 부호를 normalize 한다. 기본 값은 true이다.

normalize_kana 히라가나, 가타카나 반복 부호를 normalize 한다. 기본 값은 true이다.

 

 

2. kuromoji_tokenizer (공식문서)

tokenizer는 각 단어(term/token)를 분리하는 역할을 하므로

여기에서는 복합명사를 어떻게 처리할지에 대한 설정과 사용자 사전을 적용하는 설정을 할 수 있다.

 

1) 복합 명사 처리

 

mode

    tokenizer가 복합명사 혹은 의미불명인 단어(unknown words)를 어떻게 처리할지 설정한다.

 

    normal

        Normal segmentation, 복합명사를 분리하지 않는다.

        関西国際空港

        アブラカダブラ

 

    search

        복합명사를 분리하고 원형과 분리한 내용을 모두 보존한다.

        関西, 関西国際空港, 国際, 空港

        アブラカダブラ

 

    extended

        복합명사를 분리하고 분리한 내용만 보존한다. 의미불명(unknown words)에 unigram을 적용한다.

        関西, 国際, 空港

        ア, ブ, ラ, カ, ダ, ブ, ラ

 

2) 사용자 사전

 

kuromoji tokenizer는 기본적으로 MeCab-IPADIC 사전을 사용한다.

사용자 사전은 이에 사용자가 원하는 내용을 추가할 수 있다. 아래의 CSV 포맷으로 작성한다.

<text>,<token 1> ... <token n>,<reading 1> ... <reading n>,<part-of-speech tag>

위의 포맷으로 작성한 .txt 파일을 $ ES_HOME/config/userdict_ja.txt 처럼 위치한다.

공식 문서에 나와있는 예제는 아래와 같다.

東京スカイツリー,東京 スカイツリー,トウキョウ スカイツリー,カスタム名詞

순서대로 살펴보면

복합명사, 띄어쓰기 기반으로 나누어진 복합명사(token), 읽는방법(読み仮名), part-of-speech 태그로 나뉘어 있다.

 

Comments