N-gram 이란 무엇인가
N-gram은 연속된 N개의 요소로 구성된 시퀀스(문자, 단어, 토큰)를 기반으로 텍스트 데이터를 나누는 방법임.
주로 텍스트 분석, 검색엔진 최적화, 자연어 처리(NLP) 분야에서 많이 활용됨.
문장을 일정한 단위로 분할하여 빈도 분석, 패턴 인식, 자동 완성, 오타 교정 등에 활용할 수 있음.
1. N-gram의 개념
N-gram은 텍스트를 N개의 단위로 분리하는 기법임.
- N이 1이면 Unigram
- 한 글자(또는 한 단어) 단위로 나눔.
- N이 2이면 Bigram
- 두 글자(또는 두 단어)씩 묶음.
- N이 3이면 Trigram
- 세 글자(또는 세 단어)씩 묶음.
예시: "데이터"라는 단어를 대상으로 할 경우
N | N-gram 결과 |
1 (Unigram) | 데, 이, 터 |
2 (Bigram) | 데이, 이터 |
3 (Trigram) | 데이터 |
문장 단위 예시: "나는 공부를 한다"
- Unigram: 나, 는, 공, 부, 를, 한, 다
- Bigram: 나는, 는공, 공부, 부를, 를한, 한다
- Trigram: 나는공, 는공부, 공부를, 부를한, 를한다
2. N-gram의 활용 목적
- 검색엔진 자동 완성
- 입력 도중에도 유사 검색이 가능하도록 도움을 줌.
- 오타 교정
- 유사한 N-gram 조각들을 비교하여 오타를 찾고 교정하는 데 활용함.
- 유사도 분석
- 텍스트 간의 유사도를 비교할 때 사용됨.
- Cosine similarity, Jaccard similarity 등과 함께 활용할 수 있음.
- 자연어 처리
- 문장의 구조나 패턴을 분석하여 의미 있는 정보를 추출함.
- 데이터 전처리
- 텍스트 마이닝이나 머신러닝 모델 학습을 위한 특성(Feature)으로 사용함.
3. N-gram의 장단점
장점 | 단점 |
단순하고 구현이 쉬움 | N이 커질수록 조합 수가 급격히 증가함 |
부분 일치 검색에 유리함 | 문맥이나 의미를 제대로 반영하지 못함 |
오타 교정, 추천 시스템에 효과적임 | 불용어(stopword) 처리가 필요함 |
다국어 처리에 유연함 | 의미 없는 n-gram들이 많이 생성될 수 있음 |
4. N-gram vs 단어 단위 토큰화
구분 | N-gram | 단어 단위 토큰화 |
분리 단위 | 문자 또는 단어의 연속된 N개 | 공백 또는 구분자로 나눈 단어 |
유사 검색 | 부분 일치에 강함 | 정확히 일치해야 함 |
다국어 지원 | 한글, 중국어 등 공백 없는 언어에 강점 | 공백이 없는 언어에서는 어려움 |
처리 속도 | N이 커지면 느려짐 | 상대적으로 빠름 |
사용 사례 | 검색, 추천, 오타 교정 | 문서 분류, 감성 분석 등 |
5. 실무 활용 사례
- Elasticsearch 분석기
- Edge N-gram, N-gram tokenizer를 활용하여 검색 자동 완성 및 유사 검색 기능을 구현함.
- 검색엔진 자동 완성
- 사용자가 입력하는 글자를 기반으로 빠르게 추천 결과를 제공함.
- 추천 시스템
- 사용자 행동이나 검색 기록을 기반으로 유사한 아이템을 추천할 때 사용함.
- 오타 교정
- 사용자의 입력이 잘못되었을 때 유사한 n-gram을 가진 단어를 제안하여 교정함.
- 문서 유사도 분석
- 두 문서 간의 N-gram 유사도를 기반으로 관련성을 평가함.
정리
N-gram은 텍스트 데이터를 N개의 연속된 단위로 분할하는 기법임.
검색 최적화, 자동 완성, 오타 교정, 추천 시스템 등 텍스트 기반 기능을 구현할 때 유용하게 사용됨.
특히 Elasticsearch 같은 검색엔진에서는 부분 일치 검색이나 자동 완성 기능을 위해 필수적으로 활용되고 있음.
N의 크기를 잘 선택하여 활용하면 성능과 정확도를 모두 높일 수 있음.
출처 : ChatGPT
'DB > Elasticsearch' 카테고리의 다른 글
Nori 한글 형태소 분석기, KNN 서치 (0) | 2025.04.23 |
---|---|
[Elasticsearch] 엘라스틱서치 (1) | 2025.02.27 |