David의 개발 이야기!

N-gram 언어모델에 대해 알아보자 - N-gram Language Model 본문

자연어처리

N-gram 언어모델에 대해 알아보자 - N-gram Language Model

david.kim2028 2023. 8. 9. 21:11
반응형

n-gram 언어 모델은 단어 빈도에 기반한 통계적 접근을 사용하고 있으며, 이전에 등장한 모든 단어를 고려하는 것이 아닌, 일부 단어만 고려하는 접근 방법을 사용한다. 이때, 일부 단어를 몇개 보느냐를 결정하는데, 이것이 n-gram 에서 n이 가지는 의미이다. 

 

P(is | The best AI developer) == P(is | developer)

 

The best AI developer가 나왔을때, is 가 나올 확률을, developer 가 나왔을때 is가 나올 확률로 생각해보자. 갖고 있는 Corpus(말뭉치) 에 The best AI developer가 있을 가능성 보다는 developer is 라는 더 짧은 단어 시퀀스가 존재할 가능성이 더 높다. 

 

즉, 단어의 확률을 구하고자 기준 단어의 앞 단어를 전부 포함해서 카운트하는 것이 아니라, 앞 단어중 임의의 개수만 포함해서 카운트해 근사하는 것이다.  (아래 포스팅을 보면 다음 나올 단어의 확률을 구하기 위해 앞에 있는 모든 확률을 곱해서 구하는 것 대신에 말이다)

2023.08.09 - [자연어처리] - 언어 모델에 대한 개요 - Language Model

 

1. N-gram

이 때 임의의 개수를 정하기 위한 기준을 위해 사용하는 것이 n-gram 이다. n-gram은 n개의 연속적인 단어 나열을 의미한다.

unigram The, best, AI, developer, is, david
bigram the best, best ai, ai developer, developer is, is david
trigram the best ai, best ai developer, developer is david

n-gram 을 통한 언어 모델에서는 다음에 나올 단어의 예측은 오직 n-1 단어에만 의존한다. 예를 들어, 'The best AI developer is davidkim' 다음에 나올 예측하고 싶다면, n=3d인 3-gram 을 사용한다면, developer is david 만 고려하는 것이다. 

 

만약 갖고 있는 Corpus에서, developer is david가 1000번 등장했고, developer is david Kim dl 500번 등장하고, developer is david Choi 가 200번 등장했다고 한다면,  확률은 아래와 같다. (이런식으로 성을 맞출 수도 있다) 따라서 Kim을 선택하게 된다.

 

P(Kim | developer is david) = 0.5

P(Choi | developer is david) = 0.2

 

2. N-gram의 한계

n-gram은 앞의 단어 몇개만 보다보니, 의도하고 싶은대로 문장을 끝맺음 못하는 문제가 생기며, 문장을 읽다보면, 앞부분과 뒷부분의 문맥이 연결되지 않는 문제가 발생한다는 점이다. 결과적으로 전체 문장을 고려한 언어모델보다는 정확도가 떨어진다. 

 

(1) 희소 문제(Sparsity Problem)

(2) n을 선택하는 것은 trade-off 문제.

-> 결국 n을 높이면, 희소문제를 비롯한 계산복잡성등의 문제가 발생하나, 정확도는 높아진다. 

 

 

 

 

반응형
Comments