n-gram
N-gram
N-gram(엔그램)은 자연어 처리(Natural Language Processing, NLP) 및 통계적 언어 모델링에서 사용되는 연속된 단어(또는 문자)의 시퀀스입니다. 여기서 'N'은 시퀀스의 길이를 나타내는 정수 변수로, N=1일 때는 유니그램(Unigram), N=2일 때는 바이그램(Bigram), N=3일 때는 트라이그램(Trigram) 등으로 불립니다. N-gram은 텍스트의 통계적 패턴을 분석하여 언어의 확률 분포를 추정하는 데 핵심적인 역할을 하며, 기계 번역, 음성 인식, 오타 교정, 검색 엔진 최적화 등 다양한 자연어 처리 응용 분야에서 널리 활용됩니다.
개요 및 기본 개념
자연어는 무한한 조합의 가능성을 가지지만, 실제 언어 사용에서는 특정 단어들이 다른 단어들과 함께 나타날 확률이 존재합니다. N-gram 모델은 이러한 국부적 의존성(Local Dependency)을 가정합니다. 즉, 현재 단어가 나타날 확률은 직전 N-1개의 단어들에 의해 영향을 받는다는 것입니다.
수학적으로, 문장 $W = w_1, w_2, ..., w_n$이 주어졌을 때, N-gram 모델은 이 문장이 발생할 확률을 다음과 같이 근사합니다.
$$ P(w_i | w_1, ..., w_{i-1}) \approx P(w_i | w_{i-N+1}, ..., w_{i-1}) $$
여기서 $P(w_i | w_{i-N+1}, ..., w_{i-1})$는 직전 $N-1$개의 단어(컨텍스트)가 주어졌을 때 현재 단어 $w_i$가 나타날 조건부 확률입니다. 이 접근법은 완전한 문장 확률 계산을 계산 복잡도 측면에서 현실적으로 가능한 수준으로 줄여줍니다.
N-gram의 종류와 예시
N의 값에 따라 N-gram은 다음과 같이 분류됩니다.
1. 유니그램 (Unigram, N=1)
단일 단어만을 고려하는 모델입니다. 단어 간의 순서나 문맥 정보를 무시하므로, 단어의 독립적인 출현 빈도만 분석합니다. * 예시: "나는 학교에 간다" $\rightarrow$ ["나", "는", "학교", "에", "간다"] * 특징: 구현이 간단하지만 문맥 정보를 완전히 상실하므로, 의미 해석에는 한계가 있습니다.
2. 바이그램 (Bigram, N=2)
연속된 두 단어의 쌍을 고려합니다. 가장 널리 사용되는 기본 모델 중 하나로, 단어 간의 이항 관계를 파악하는 데 효과적입니다. * 예시: "나는 학교에 간다" $\rightarrow$ ["나 는", "는 학교", "학교 에", "에 간다"] * 특징: 유니그램보다 문맥 정보를 포함하여 더 정확한 확률 추정이 가능하지만, 데이터 희소성(Data Sparsity) 문제가 발생할 수 있습니다.
3. 트라이그램 (Trigram, N=3)
연속된 세 단어의 삼항 관계를 고려합니다. * 예시: "나는 학교에 간다" $\rightarrow$ ["나 는 학교", "는 학교 에", "학교 에 간다"] * 특징: 더 풍부한 문맥 정보를 제공하지만, 필요한 데이터 양이 기하급수적으로 증가하며, 희귀한 N-gram이 많이 발생하여 모델의 일반화 성능이 떨어질 수 있습니다.
4. 그 이상 (N > 3)
N이 커질수록 문맥을 더 정밀하게 반영하지만, 계산 비용과 메모리 사용량이 급증합니다. 또한, 훈련 데이터에 등장하지 않은 긴 시퀀스(Zero-frequency problem)가 발생할 확률이 높아지므로, 실제 응용에서는 보통 3~5 이하의 N을 주로 사용합니다.
주요 응용 분야
N-gram은 자연어 처리의 기초적인 구성 요소로 다양한 분야에서 활용됩니다.
- 기계 번역: 번역할 때 단어를 독립적으로 번역하는 것이 아니라, 주변 단어의 맥락을 고려하여 가장 자연스러운 번역어를 선택하는 데 사용됩니다.
- 음성 인식: 화자가 발음한 음성을 텍스트로 변환할 때, 특정 발음이 어떤 단어일 가능성이 높은지 통계적으로 판단하는 데 활용됩니다.
- 오타 교정 및 자동 완성: 사용자가 입력하는 도중에도 다음에 올 단어를 예측하여 제안하거나, 잘못된 철자를 문맥에 맞는 올바른 단어로 수정하는 데 사용됩니다.
- 검색 엔진: 사용자의 검색 쿼리와 문서 간의 관련성을 계산할 때, 쿼리의 N-gram과 문서의 N-gram을 비교하여 유사도를 측정합니다.
- 스팸 필터링: 이메일이나 메시지의 스팸 여부를 판별할 때, 특정 단어 조합의 출현 빈도를 특징 벡터로 사용하여 분류 모델을 학습합니다.
한계점과 해결 방안
N-gram 모델은 강력한 통계적 도구이지만 다음과 같은 근본적인 한계를 가집니다.
- 데이터 희소성 (Data Sparsity): N이 커질수록 훈련 데이터에 등장하지 않은 N-gram이 많이 발생합니다. 이를 해결하기 위해 라플라스 평활화(Laplace Smoothing)나 케네디-블로킹(Kneser-Ney Smoothing)과 같은 평활화 기법이 사용됩니다.
- 긴 문맥 무시: N-gram은 고정된 길이(N)의 문맥만 고려하므로, 문장의 앞부분과 뒷부분 간의 장기적 의존성(Long-range Dependency)을 포착하지 못합니다.
- 의미의 부재: N-gram은 단어의 의미나 문법적 구조를 이해하지 못하고 단순히 통계적 빈도만 다룹니다.
이러한 한계를 극복하기 위해 최근에는 RNN(순환 신경망), LSTM, 그리고 Transformer 기반의 언어 모델(예: BERT, GPT 시리즈)이 등장하여 문맥을 더 넓고 깊이 있게 이해하는 방향으로 자연어 처리 기술이 발전하고 있습니다. 그러나 N-gram은 여전히 경량화된 모델, 빠른 프로토타이핑, 또는 다른 모델의 특징 추출기로서 중요한 역할을 하고 있습니다.
관련 문서
이 문서는 AI 모델(qwen/qwen3.6-35b-a3b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.