N-gram

장우솔·2023년 3월 28일
0

NLP

목록 보기
16/17

N-gram 개념

N-gram은 카운트에 기반한 통계적 접근을 사용하고 있으므로 SLM의 일종이다.

일부 단어를 몇 개 보느냐를 결정하는데 이것이 n-gram에서의 n이 가지는 의미이다. n개의 단어 뭉치 단위로 끊어서 하나의 토큰으로 간주하는 것






N-gram 종류

예시 : An adorable little boy is spreading smiles

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

4grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles






N-gram 한계

  • 단어 몇 개만 보다 보니 문장을 읽다보면 앞 부분과 뒷부분의 문맥이 전혀 연결 안되는 경우도 생길 수 있다. ⇒ 전체 문장을 고려한 언어모델보다는 정확도가 떨어질 수 있다.





N은 어떻게 선택할까? Trade-off 문제 발생

N이 클수록 정확도는 높아질 수 있지만 실제 훈련 코퍼스에서 해당 n-gram을 카운트할 수 있는 확률은 적어지므로 희소 문제는 점점 심각해진다.

trade-off 문제로 인해 정확도를 높이려면 n은 최대 5를 넘게 잡아서는 안 된다고 권장되고 있다.





반복문으로 N-gram 출력하기

text = 'this is python script'
words = text.split()
 
for i in range(len(text) - 1):     # 2-gram이므로 문자열의 끝에서 한 글자 앞까지만 반복함
    print(text[i], text[i + 1])    # 현재 문자와 그다음 문자 출력

Perplexity : PPL은 문장의 길이로 정규화된 문장 확률의 역수이다. ⇒ 헷갈리는 정도란 의미로 숫자가 작을수록 성능이 높은 것







N-gram 정확도 비교

https://colab.research.google.com/drive/1KhHMrRvRFhE6UPsGnCdngKVYOZqjBpPw?usp=share_link

profile
공부한 것들을 정리하는 블로그

0개의 댓글