본문 바로가기
  • 공부 기록 인생 기록
Python/NLP

N-gram 언어 모델

by 티권 2023. 3. 14.

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