Posts N-gram 이해하기
Post
Cancel

N-gram 이해하기

1. N-gram이란?


n-gram은 텍스트나 시퀀스에서 연속적으로 나타나는 n개의 항목(단어, 문자 등)을 의미한다. n-gram은 한 단어 이상의 단어 시퀀스를 분석 대상으로 한다. 예를 들어, “I love programming”이라는 문장에서 2-gram(bigram)은 “I love”, “love programming” 등이 된다. n-gram은 텍스트의 구조와 패턴을 파악하는 데 유용하여 자연어 처리에서 많이 사용된다. n의 크기에 따라 unigram(1-gram), bigram(2-gram), trigram(3-gram) 등으로 나타낼 수 있다.

image

2. 마르코프 가정


n-gram에서 중요한 개념 중 하나는 마르코프 가정이다. 마르코프 가정은 주어진 시퀀스에서 다음 상태나 사건의 확률이 오직 현재 상태에만 의존하며, 그 이전의 상태나 사건에는 의존하지 않는다는 가정이다. 주어진 단어의 시퀀스에 대해 다음 단어의 확률의 수학적 표현은 1단계와 2단계로 표현 할수 있다.

1단계 스크린샷 2023-08-08 오후 10 49 06

2단계 스크린샷 2023-08-08 오후 10 49 51

2.1 마르코프 가정의 중요성

마르코프 가정의 장점은 복잡한 문제를 단순화하여 계산적 처리 가능하게 만든다는 것이다. 예를 들어, 언어 모델에서 전체 문장의 단어 시퀀스를 고려하는 것은 매우 복잡할 수 있지만, 마르코프 가정을 적용하면 문제가 훨씬 간단해진다.

그러나, 이 가정은 문맥의 깊이를 제한한다는 단점도 있다. 이는 직전의 한 두 단어만을 고려하기 때문에, 문장 전체의 의미나 구조를 완벽하게 파악하기 어렵다는 것을 의미한다. 따라서, 실제 자연어처리 모델에서는 RNN, LSTM, Transformer와 같은 더 깊은 문맥을 고려하는 다양한 방법들이 연구되고 있다.

3. N-gram의 사용 사례


  • 텍스트 생성: n-gram 모델은 주어진 텍스트의 패턴을 학습하여 새로운 텍스트를 생성하는데 사용될 수 있다.
  • 검색 엔진: 검색 엔진은 n-gram을 사용하여 검색 쿼리와 문서 간의 유사성을 평가한다.
  • 자연어 처리: 텍스트의 구조와 문맥을 파악하는 데 n-gram이 널리 사용된다.

4. n-gram의 장단점


  • 장점:
    • 간단하고 구현하기 쉽다.
    • 큰 데이터셋에서 잘 작동한다.
  • 단점:
    • n이 큰 경우 데이터가 희소해질 수 있다.
    • 단순한 n-gram 모델은 문맥의 깊이를 제대로 잡아내지 못할 수 있다.

5. Python에서 n-gram 구현하기


Python에서는 nltk 라이브러리를 사용하여 n-gram을 쉽게 구현할 수 있다.

1
2
3
4
5
6
7
from nltk.util import ngrams
texts = "나는 프로그래밍을 매우 좋아한다"
token = texts.split()
bigram = list(ngrams(token, 2))
print(bigram)
# output
[('나는', '프로그래밍을'), ('프로그래밍을', '매우'), ('매우', '좋아한다')]

6. 마치며


n-gram은 연속적인 단어나 문자의 시퀀스를 통해 텍스트의 패턴과 구조를 파악하는 데 큰 도움을 주기 때문에 텍스트 분석과 같은 자연어 처리에서 핵심적인 개념으로 간주된다. 특히, n-gram은 문맥 정보를 일정 범위 내에서 포착할 수 있어, 텍스트의 패턴을 빠르게 인식하는 데 유용하다.

마르코프 가정은 n-gram 모델의 핵심 원칙 중 하나이다. 이 가정을 통해 문제의 복잡성을 크게 줄일 수 있으며, 계산의 효율성을 향상시킬수 있다. 그러나, 이 가정만으로는 텍스트의 깊은 문맥 정보를 완전히 파악하기는 어렵다.

따라서, n-gram과 마르코프 가정은 자연어 처리의 기본적인 개념으로 시작하여, 보다 발전된 방법들과 함께 사용되면 텍스트 데이터의 다양한 패턴과 구조를 효과적으로 분석할 수 있다. 이를 바탕으로 다양한 어플리케이션, 예를 들면 텍스트 생성, 검색 엔진 최적화, 기계 번역 등에 활용할 수 있다.

This post is licensed under CC BY 4.0 by the author.