BLOG

Amazon Elasticsearch 서비스는 이제 향상된 한국어 분석을 위해 Seunjeon(선전) 플러그인을 지원합니다.
작성일: 2018-03-29

한국어 텍스트에 대해 완벽도 높은 구문 분석과 일치를 갖기 위해, Amazon ES (Amazon Elasticsearch Service)는 이제 Seunjeon(선전) 플러그인을 지원합니다. 이 플러그인을 사용하여 사용자에게 더 나은 결과를 제공하는 사용자 지정 분석기를 생성할 수 있습니다.

 

검색을 위한 아시아계 언어 처리

검색 엔진을 사용할 때는 검색 상자에 단어를 입력합니다. 그러면 검색 엔진이 이러한 단어를 인덱싱한 문서에 나타나는 단어와 일치시킵니다. 올바르게 일치시키려면 검색 엔진이 원본 문자열에서의 단어(즉, 검색 용어)를 구문 분석해야 합니다.

 

엔진은 일련의 단계에 따라 이 작업을 수행합니다. 스텝의 몇 가지 예시는 공백에 토큰화, 어근형식으로 단어를 가져오기 위해 적용하는 것, 불용어들(저가치의 용어가 자주 발생할 경우를 뜻함)을 제거하는 것 등이 있습니다.

 

많은 단어들이 공백으로 분리되지 않고 혼합될 수 있기 때문에 아시아계 언어 텍스트의 처리는 복잡합니다. 같은 문자열이 그들의 복합적인 맥락에서 다른 것들을 의미할 수 있습니다.

 

Elasticsearch에서 아시아계 언어를 가장 기본적으로 처리하는 방법은 cjk 분석기를 통해 제공하는 것입니다. 이 분석기는 공백으로 분할된 다음 결과 텍스트의 문자에 대해 2자리의 문자(바이그램)를 만듭니다. 예를 들어,” 아마존으로”이라는 문자열이 인덱스에 다음 용어를 추가합니다.

아마
마존
존으
으로

 

Elasticsearch는 쿼리를 할 때 동일한 분석을 수행합니다. 인덱스의 바이그램과 일치하는 쿼리에 있는 바이그램이 많을수록 일치하는데 더 좋습니다.

 

불행하게도, 바이그램을 일치시키면 예기치 않은 결과를 가져올 수 있습니다. 예를 들어, “아마존이, 아마존은, 아마존으로, 아마존을” 등은 모두 아마존을 뜻하는 단어들입니다. 공백을 두거나 바이그램을 계산하여 용어를 추출하면 결과가 좋지 않을 수 있습니다. 만일 우리가 “아마존이, 아마존은, 아마존으로, 아마존을”이 포함된 문서에서 “아마존”을 조회하면, 공백 분석이 어떻게 작동하는지 모르기 때문에 결과에 포함되지 않을 수도 있습니다. 또는 바이그램 분석이 어떻게 작용하는지에 따라 검색 결과에 나타날 정도로 좋은 결과를 받지 못할 수 있습니다. 사용자들이 쿼리를 쓸 때, 그들은 대개 아마존 (Amazon)을 포함한 모든 문장을 검색합니다. 우리의 예시를 봤을 때, 만약 그들이 그렇게 한다면, 많은 결과들이 누락되어 있습니다.

 

더 나은 한국말 분석기: Seunjeon(선전)

높은 정확도 매칭을 뒷받침하기 위해서는 공백이나 바이그램으로 분할하여 프로세스 용어 이상을 수행할 수 있는 한국 분석기가 필요합니다. Seunjeon(선전)은 널리 사용되고 있는 오픈 소스 한국 분석기로 현재 Amazon ES에서 사용할 수 있습니다. 이 분석기는 한국어 사전인 mecab-ko-dic를 기반으로 합니다. 사전은 분석기의 중요한 부분이며, 소스 텍스트에 대한 항목과 해당 텍스트에 대한 정확한 용어를 포함합니다. Amazon ES는 현재 mecab-ko-dic-2.0.1-20150920을 제공합니다.

 

플러그인이 메모리가 적은 인스턴스와 잘 작동하도록 하기 위해 플러그인의 내부 데이터 구조 및 기능을 여러 번 최적화하여 커뮤니티에 다시 개선된 기능을 제공했습니다. 결과적으로 생성된 플러그인은 59퍼센트 더 낮은 메모리 공간을 차지하며, 이제 Bitbucket 저장소에 별도의 최적화된 버전으로도 사용할 수 있습니다.

 

Seunjeon(선전) 플러그인을 사용하여 매핑을 생성하는 방법
Amazon ES는 자동으로 배포되고 관리되는 Seunjeon(선전) 분석기와 함께 제공됩니다. 소스 필드에 대한 분석기를 구성한 후에는 한국어 키워드로 검색을 시작할 수 있습니다.

 

다음 코드는 한국 분석기로 인덱스를 만듭니다.

 

PUT / myindex

{

    “settings” : {

      “index”: {

        “analysis”: {

[1]       “analyzer”: {

[2]         “korean”: {

              “type”:”custom”,

[3]           “tokenizer”:”seunjeon_default_tokenizer”

            }

          },

          “tokenizer”: {

[4]         “seunjeon_default_tokenizer”: {

              “type”: “seunjeon_tokenizer”,

              “index_eojeol”: false,

[5]           “user_words”: [“aws”, “awskorea”, “아마존웹서비스”,

                           “정보보호관리체계”, “k-isms,10”, “kisa,10”]

            }

          }

        }

      }

    },

    “mappings”: {

      “tweets”: {

        “properties”: {

[6]       “status”: { “type”: “text”, “analyzer”: “korean” },

          “author”: {

            “type”: “nested”,

            “properties”: {

              “name”: { “type”: “text” },

              “display_name”: { “type”: “text” }

            }

          }

        }

      }

    }

}

 

앞의 Elasticsearch 매핑에서, 우리는 사용자 정의 토크나이저[3]를 사용하는(토크나이저가 문자열을 받아 용어를 변환한다.) 또한 seunjeon_tokenizer를 사용하여 매핑에 토크나이저[4]를 정의합니다. 이 시점에서 몇 가지 옵션을 설정하고 사용자 사전에 사용자 정의 용어[5]를 추가했습니다. 마지막으로, 상태 필드[6]에 분석기를 적용합니다. 이 경우 Amazon Elasticsearch 서비스에 문서를 보낼 때, 상태 필드의 텍스트에 항상 한국어 분석기를 사용합니다.

 

분석기에 직접 호출하여 토큰화 및 분석이 어떻게 작동하는지 확인할 수 있습니다.

 

GET /myindex/_analyze

{

    “analyzer”: “korean”,

    “text”: “AWS가 국내 정보보호관리체계(K-ISMS) 인증을 취득했습니다. AWS 서울 리전(Region) 내 28개 서비스에 대한 인프라 운영에 대한 인증을 통해 국내 고객들은 KISA 규정 준수 요건을 보다 효과적으로 충족할 수 있습니다. (아마존웹서비스 코리아 @AWSKorea)”

}

 

다음은 요청 결과입니다.

 

 

대부분의 용어들이 내장된 mecab-ko 사전에 기초한 Seunjeon(선전) 플러그인에 의해 분석되는 것을 볼 수 있습니다. 또한, 사용자 지정 사전 항목(aws, awskorea, 아마존웹서비스, 정보보호관리체계, k-isms, 10 과 kisa,10)을 기반으로 출력된 용어도 볼 수 있습니다. 사용자 지정 사전이 없으면, 정보보호관리체계(Information Security Management System)는 다음과 같은 일련의 바이그램으로 취급됩니다.

 

 

사용자 정의 사전 항목은 검색 품질을 개선하고 더 나은 결과를 제공합니다.

 

요약

한국어 텍스트에 대한 정확도 높은 구문 분석 및 매칭을 확인하려면 Amazon Elasticsearch 서비스의 Seunjeon(선전) 플러그인을 사용하세요. 기본적인 토큰화 및 사용자 정의 단어를 사용하여 사용자 정의 분석기를 생성한 다음 데이터가 포함된 문자열 필드에 분석기를 적용할 수 있습니다. Seunjeon(선전) 플러그인은 또한 해당 필드에 대한 쿼리를 구문 분석하고 토큰화시켜 더 나은 결과를 제공합니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/database/amazon-elasticsearch-service-now-supports-the-seunjeon-plugin-for-improved-korean-language-analysis/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.