Language Model 언어 모델
Language Model 이란 단어 시퀀스에 확률을 할당하는 모델이다. (단어 시퀀스는 단어들로 이루어진 시퀀스, 즉 문장을 말한다.) 단어 시퀀스에 확률을 할당하기 위해 사용되는 방법은 ① 이전 단어들이 주어졌을 때 다음에 올 단어를 예측, ② 주변 (양쪽) 단어들로부터 가운데 단어를 예측하는 방법이 주로 사용된다.
이번 포스팅에서는 ① 이전 단어들(w1,w2,…,wn−1)이 주어졌을 때 다음에 올 단어(wn)를 예측하는 언어 모델에 대해서 이야기한다. 이 방법을 확률로 표현하면 아래와 같다.
P(wn|w1,w2,w3,...,wn−1)
단어 시퀀스 W의 확률은 아래와 같다.
P(W)=P(w1,w2,w3,...,wn)=Πni=1P(wi|w1,...,wi−1)
예를 들어 “An adorable little boy is spreading smiles”라는 문장의 확률 P(An adorable little boy is spreading smiles)은 아래와 같다.
P(An adorable little boy is spreading smiles)
=P(An)×P(adorable|An)×P(little|An adorable)
×P(boy|An adorable little)×P(is|An adorable little boy)
×P(spreading|An adorable little boy is)×P(smiles|An adorable little boy is spreading)
N-gram Language Model
statistical language model 통계적 언어 모델은 확률을 카운트에 기반하여 계산한다.
P(is|An adorable little boy)=count(An adorable little boy is)count(An adorable little boy)
이런 방법은 코퍼스에 해당 시퀀스가 없는 경우를 해결하지 못한다. 'An adorable little boy is'라는 시퀀스가 없으면 해당 시퀀스는 확률이 0 이 되고, 'An adorable little boy'라는 시퀀스가 없다면 분모가 0 이 되어 확률이 정의되지 않는다.
이러한 경우는 문장이 길어질수록 많아진다. 예를 들면 코퍼스에 'I am a super cool adorable student'가 정확히 존재하는 것보다 'I am a student'가 존재할 가능성이 더 높다는 의미이다. 그렇다면 참고하는 단어들을 줄이면 존재할 확률이 높아진다고 생각할 수 있다. 즉, 'An adorable little boy is'가 존재할 확률보다 'little boy is'가 존재할 확률이 더 높다.
N-gram Language Model은 통계적 언어 모델의 ‘확률을 계산할 수 없는 경우’의 한계를 개선하기 위해 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 방법이다. 이때 n은 고려하는 일부 단어의 개수를 의미한다.
unigrams : an, adorable, little, boy, is, spreading, smiles
bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
n-gram 언어 모델에서 단어의 예측은 오직 해당 단어 이전의 n-1개의 단어에만 의존한다.
예를 들어 4-gram LM 일 때 'An adorable little boy is spreading' 다음에 나올 단어를 예측하고 싶다면,
4-1개인 ‘?’ 이전 3개의 단어만을 고려하여 아래와 같이 확률을 계산한다.

P(w|boy is spreading)=count(boy is spreading w)count(boy is spreading)
만약 코퍼스에서 'boy is spreading'이 1,000번 등장, 'boy is spreading insults'가 500번, 'boy is spreading smiles'가 200번 등장했다면 각각의 확률은 아래와 같다.
P(insults|boy is spreading)=0.500P(smiles|boy is spreading)=0.200
확률 값에 따라 선택한다면 'boy is spreading' 뒤에 등장할 단어는 'insults'가 된다.
N-gram Language Model의 한계
- 통계적 모델의 한계를 근본적으로 해결한 것이 아님
- 그래서 n을 몇으로 할 것인가?
- n이 클수록 모델의 성능을 높일 수 있을 것 → unigram보다 bigram, bigram보다 trigram이 보편적으로 성능이 더 좋음
But! n이 계속 커진다면 모델의 계산량도 계속 증가하고 기존 모델의 한계에 근접해짐
- n이 클수록 모델의 성능을 높일 수 있을 것 → unigram보다 bigram, bigram보다 trigram이 보편적으로 성능이 더 좋음
본 포스팅은 딥러닝을 이용한 자연어 처리 입문을 참고하여 작성되었습니다.