N-gram 언어 모델
- 카운트에 기반한 통계적 접근 - SLM
- 이전에 등장한 모든 단어를 고려하는 것이 아니라 일부 단어만 고려
- 일부 단어 몇개를 보느냐 - N-1
SLM의 한계
- 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있음
- 확률을 계산하고 싶은 문장이 길어질수록 코퍼스에서 그 문장이 존재하지 않을 가능성이 높음
- 카운트할 수 없을 가능성 높음
갖고있는 코퍼스에 정확하게 An adorable little boy is가 있을 가능성 보다
boy is라는 더 짧은 단어 시퀀스가 존재할 가능성이 더 높음
기준 단어(is)의 앞 단어를 전부 포함해서 카운트 하는 것이 아니라
앞 단어 중 임의의 개수만 포함해서 카운트하여 근사


N-gram 언어모델
- 갖고있는 코퍼스에서 N개의 단어 뭉치 단위로 끊어서 하나의 토큰으로 간주
- 다음에 나올 단어의 예측은 오직 N-1개의 단어에만 의존한다
ex)
N=1 unigrams : an, adorable, little, boy, is, spreading, smiles
N=2 bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
N=3 trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
N=4 4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
An adorable little boy is spreading 다음에 나올 단어를 예측
N=4, 4-gram -> 앞의 3개 단어만을 고려

N-gram 언어모델의 한계
- 앞의 단어 몇 개만 보다 보니 의도하고 싶은 대로 문장을 끝맺음하지 못하는 경우 발생
- 전체 문장을 고려한 언어 모델보다는 정확도가 떨어질 수밖에 없음
- 여전히 희소 문제가 존재
- trade - off
- N을 크게 하면 성능은 높아짐, 정확도가 높아짐. 하지만 희소 문제 심각해짐.
- N을 작게 하면 희소 문제는 줄어듦. 하지만 근사의 정확도는 현실의 확률분포와 멀어짐
- N은 최대 5로 권장
'Python > NLP' 카테고리의 다른 글
| 피드 포워드 신경망 언어 모델(NNLM) (0) | 2023.03.14 |
|---|---|
| 펄플렉서티(Perplexity, PPL) (0) | 2023.03.14 |
| 언어 모델 - 통계적 언어 모델 (0) | 2023.03.14 |
| 정제, 정규화 (0) | 2023.02.19 |
| konlpy 사용 시 오류 (0) | 2023.02.18 |