NLP/AI/Statistics

Language Model: N-gram 언어모델 본문

NLP

Language Model: N-gram 언어모델

Danbi Cho 2020. 9. 29. 14:21

Language Model: 통계적 언어 모델에서 조건부 확률을 이용하여 문장 생성 확률을 나타내는 방법에 대하여 설명했다.

 

빈도 기반의 확률분포를 이용한 언어 모델은 특정한 연속된 단어열이 학습말뭉치에 존재하지 않아 확률이 정의되지 않는 문제가 발생한다.

 

또한, 빈도 기반의 확률을 나타내기 때문에 단어열의 길이가 길어질수록 해당 문장이 학습 말뭉치에 나타나지 않을 확률이 크다.

 

이러한 문제를 해결하기 위해 n-gram 언어 모델이라는 개념이 소개되었다.

 

n-gram은 임의의 개수 n에 따라 연속된 단어들을 하나의 토큰으로 처리한다.

 

이 때 지정한 임의의 개수에 따라 아래와 같이 unigram, bigram, trigram, ..., n-gram 으로 표현된다.

 

예시) "이번 글에서는 언어 모델에 대하여 설명합니다."

 

unigram(n=1): 이번, 글에서는, 언어, 모델에, 대하여, 설명합니다.

bigram(n=2): 이번 글에서는, 글에서는 언어, 언어 모델에, 모델에 대하여, 대하여 설명합니다.

trigram(n=3): 이번 글에서는 언어, 글에서는 언어 모델에, 언어 모델에 대하여, 모델에 대하여 설명합니다.

...

 

위와 같이 지정한 임의의 개수에 따라 하나의 토큰이 나타내는 단어의 갯수가 나열된다.

 

이러한 방식으로 연속된 단어열을 연속된 n-gram 토큰열로 나타내어 언어 모델에 대한 문장 생성확률을 구하면 아래와 같다.

 

1) unigram인 경우, $P(설명합니다.)$

$$ P_{uni}(w_1, w_2, ..., w_n) = \prod_{i}P(w_i)$$

 

2) bigram인 경우, $P(설명합니다.|대하여)$

$$P_{bi}(w_1, w_2, ..., w_n) = \prod_{i}P(w_i|w_{i-1})$$

 

3) trigram인 경우, $P(설명합니다.|모델에 대하여)$

$$P_{tri}(w_1, w_2, ..., w_n) = \prod_{i}P(w_i|w_{i-2}w_{i-1})$$

...

 

이를 n-gram으로 일반화하면

$$P(w_{1}^{n}) = \prod_{k=1}^{n}P(w_{k}|w_{k-N+1}^{k-1})$$

 

와 같이 표현된다.

 

즉, 기존에 조건부확률을 이용하여 문장 생성 확률을 나타낼 때는 특정 단어 $w_n$이 나올 확률을 구하기 위해 $w_1, w_2, ..., w_{n-1}$에 대한 확률이 필요하지만,

 

n-gram에서는 $w_n$이 나올 확률을 위해 bigram에서는 $w_{n-1}$의 확률이, trigram에서는 $w_{n-2} w_{n-1}$의 확률만 필요한 것처럼, 해당 단어의 n-gram 범위 토큰에 대한 확률만을 필요로한다.

 

n-gram 언어 모델을 활용하는 방법 중, 문장의 앞과 뒤에 start-token, 혹은 end-token을 포함하여 나타낼 수 있다.

 

예를 들어, 

 

"나는 학교에 간다"의 문장에서 bigram은 (나는 학교에) (학교에 간다)이지만,

 

앞, 뒤에 token을 추가함으로써 (start 나는) (나는 학교에) (학교에 간다) (간다 end)와 같이

 

문장의 시작과 끝에 대한 정보를 추가할 수 있다.

 

n-gram 언어 모델은 통계적 언어모델의 한계인 희소 문제를 해결하고자 나타났지만,

 

전체 문장을 고려하지 않기 때문에 정확도가 다소 낮아지는 문제가 발생할 수 있으며, 

 

희소문제를 완벽히 해결한다고 할 수 없기 때문에 통계적 언어 모델보다는 희소문제를 완화시키지만

 

이 또한 희소문제가 존재한다.

 

 

Comments