본문 바로가기
ElasticSearch & OpenSearch

[ElasticSearch] 한글 형태소 분석기 설치하기

by yonikim 2021. 5. 3.
728x90

한글은 아주 복잡한 언어이다. 특히 복합어, 합성어 등이 많아 하나의 단어도 여러 어간으로 분리해야 하는 경우가 많기 때문에 한글 형태소 분석기 세팅이 필요하다.

 

오픈 소스 커뮤니티에서 개발되어 Elasticsearch 에서 사용 가능한 한글 형태소 분석기는 다음과 같은 것들이 있다.

 

1. 아리랑 (arirang)

2. 은전한닢 (seunjeon)

  • mecab-ko-dic 기반으로 만들어진 JVM 상에서 돌아가는 한국어 형태소 분석기로, 사전이 패키지 내에 포함되어 있기 때문에 별도로 설치할 필요가 없음
  • URL: bitbucket.org/eunjeon/seunjeon/src/master/

3. Open korean Text

 

Elasticsearch 가 한글을 지원하지 않던 시절에 위의 형태소 분석기들은 한글 사용자들에게 큰 도움이 되었다. 하지만 외부에서 만들어진 기능이다 보니 Elasitcsearch 버전이 올라가 구조가 변경되면 사용이 불가능해지고, 버그나 오류가 있어도 누군가가 나서서 쉽게 고치기 어렵다는 문제가 있었다.

그러던 중 Elasticsearch 6.6 버전부터 Elastic사에서 공식적으로 Nori(노리) 라고 하는 한글 형태소 분석기를 개발해서 지원하기 시작했다. 

Nori 는 은전한닢 에서 사용하는 mecab-ko-dic 사전을 재가공하여 사용하고 있으며 루씬의 기능으로 개발되었다고 한다.

 

그리하여 나는 Nori 형태소 분석기를 사용하기로 했다.

 

1. docker-elk 세팅하고 띄우기

2. docker-filebeat 세팅하고 띄우기 

3. 한글 형태소 분석기 설치하기

4. Elasticsearch Settings, Mappings 설정하기

5. logstash filter plugins 다루기

 

 


한글 형태소 분석기 (Nori) 설치하기


 

1. analysis-nori 플러그인을 설치

1) ./elasticsearch/Dockerfile

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}

# Add your elasticsearch plugins setup here

COPY config config

# 한글 형태소 분석기
RUN elasticsearch-plugin install analysis-nori

 

2. 사용자 사전 생성

1) 사용자 사전을 텍스트 파일로 만든다.

2) 동의어 사전도 텍스트 파일로 만든다.

3) 위에서 만든 사용자 사전 텍스트 파일을 ./elasticsearch/config/ 에 둔다.

$ mv dictionary.txt ${DOCKER_ELK_PATH}/elasticsearch/config/.
$ mv synonyms.txt ${DOCKER_ELK_PATH}/elasticsearch/config/.

 

 

728x90