PaaS/Data

ElasticSearch 의 Tokenizer와 Text Analyze 에 대해서

armyost 2023. 10. 23. 06:13
728x90

데이터 색인 과정에서 검색 기능에 가장 큰 영향을 미치는 단계가 Tokenizer이다. 데이터 분석 과정에서 Tokenizer는 반드시 한 개만 사용이 가능하며 tokenizer 항목에 단일값으로 설정된다. Tokenizer란 Document중에서 분석코자 하는 문자열(Text) Field를 쪼개기 하는 것이다. 예를들어 Letter 토크나이저를 활용하면, "quick.brown_FOx" 같은 단어도 "quick", "brown", "FOx" 처럼 모두 분리된다. 이렇게 분리된 Document를 Term기준으로 역인덱싱을 하게 된다.

 

Term ID
the doc1, doc2, doc3
brown doc1, doc4
jump doc1, doc2, doc3, doc5, doc6

 

이렇게 Token화 된 Term기준으로 탐색이 가능한 것이다.

실제로 이 과정은 다음과 같이 세분화 된다.

- 캐릭터 필터 : 텍스트 데이터가 입력되면 가장 먼저 필요에 따라 전체 문장에서 특정 문자를 대치하거나 제거하는데 이 과정을 담당하는 기능이 캐릭터 필터이다.
- 토크나이저 : 다음으로는 문장에 속한 단어들을 텀 단위로 하나씩 분리 해 내는 처리 과정을 거치는데 이 과정을 담당하는 기능이 토크나이저 이다.
- 토큰필터 : 다음으로 분리된 텀 들을 하나씩 가공하는 과정을 거치는데 이 과정을 담당하는 기능이 토큰 필터 입니다. 토큰 필터는 0개 부터 여러 개를 적용할 수 있습니다.

 

단지 whiteSpace나 특수문자로 Tokenize하게 되면 조사가 많은 한국어는 탐색의 한계가 있을것이다. 이에따라 형태소 분석기가 등장한다. 검색을 할 때는 보통 이런 문법에 따른 단어의 변형에 상관 없이 검색이 가능해야 하기 때문에 텍스트 데이터를 분석할 때 각각의 텀에 있는 단어들을 기본 형태인 어간을 추출하는 과정을 진행한다. 이 과정을 보통 어간 추출 또는 형태소 분석 이라고 하며 영어로는 stemming 이라고 한다. 그리고 형태소 분석을 하는 도구를 형태소 분석기, 영어로는 stemmer 라고 한다.

 

- Snowball Tokenizer(영문)

Snowball Tokenizer에 대한 설명 : https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.1-snowball\

 

6.7.1 Snowball - Elastic 가이드북

6.7.2 노리 (nori) 한글 형태소 분석기

esbook.kimjmin.net

- Nori Tokenizer(한글)

Nori Tokenizer에 대한 설명 : https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori

 

6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북

이번 장에서는 elasticsearch가 데이터를 저장하는 색인 과정에서 처리하는 수많은 작업들에 대해 알아보았습니다. 텍스트 분석 및 텀의 개념과, 데이터 분석에 사용되는 애널라이저, 토크나이저,

esbook.kimjmin.net