rueki
언어 모델 - N-gram Language Model 본문
N-gram 언어 모델은 카운트에 기반한 SLM의 일종이다.
그러나 차이점은 일부 단어만 고려하는 접근 방법으로써, 일부 단어를 몇 개 보느냐를 결정해야 한다.
이에 대한 변수를 n이라고 일컫는다.
SLM에서 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다.
그래서 확률을 계산하고 싶은 문장이 길어질수록 갖고있는 코퍼스에서 그 문장이 존재하지 않을 수 있다.
마르코프의 가정을 사용해서 카운트를 해보자
P(is|An adorable little boy)≈ P(is|little boy)
is라는 단어가 An adorable little boy 다음에 나올 확률을 임의로 little boy 뒤에 나오게,
즉, 앞 단어 중 전체가 아니라 임의의 개수만 포함해서 Count를 해보자는 것이다.
그렇다면 갖고 있는 코퍼스 중에서, 해당 단어의 나열을 카운트할 확률이 높아진다.
임의의 개수를 정하기 위한 기준을 위해 사용하는 것이 N-gram 모델이다.
N개의 연속적인 단어 나열을 의미하는데,
코퍼스에서 n개의 단어 뭉치 단위로 끊어서 이를 하나의 토큰으로 간주한다.
n의 경우에 따라 An adorable little boy is spreading smiles를 진행해보자
1. unigrams : an, adorable, little, boy, is, spreading, smiles
2. bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
3. trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4. 4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
예를들어 4-gram 모델을 사용하고자 한다. 이 때 다음에 나올 단어의 예측은 오직 n-1개의 단어에만 의존한다.
그래서 4-gram의 경우는 앞의 3개의 단어만 고려한다.
An adorable little boy is spreading 다음을 예측할때 , boy is spreading만 뽑아내서 고려해야한다.
spreading 다음으로 insults가 500, smiles가 200번 나왔다고 가정할때, insults가 확률이 더 높기 때문에
insults가 맞다고 판단하게 된다.
그러나 n-gram 모델이 전체 문장이 아닌 앞에서 몇개의 단어만 잘라내서 예측을 하다보니, 의도하고 싶은대로
문장을 끝맺을 수가 없는 경우도 생긴다. 앞뒤 문맥이 안 맞는 경우도 있을 수 있다.
n이 작은 수라면 언어 모델의 성능은 높겠지만, n이 큰 숫자일때, OVV(out of value)가 발생할 수 있다.
그래서 적절한 개수를 택해야하는데, 최대 5개가 기준으로 권장되고 있다.
그래서 Neural Network 기반의 언어모델이 등장을 했고,
분모와 분자에 숫자를 더해서 카운트했을 때 0이 되는 것을 방지하는 등의 일반화 방법이 존재한다.
요즘은 N-gram보다는 인공신경망 언어 모델이 더 많이 사용되고 있다.
'DL > NLP' 카테고리의 다른 글
언어 모델 - 조건부 확률 (0) | 2019.07.02 |
---|---|
언어 모델 - 한국어 (0) | 2019.07.02 |
언어 모델 - 통계적 언어 모델(Statistical Language Model, SLM) (0) | 2019.07.02 |
언어 모델(Language Model) (0) | 2019.07.02 |
텍스트 전처리 - 원-핫 인코딩(One-hot encoding) (0) | 2019.07.02 |