본문 바로가기
AI

자연어처리 : 언어모델 : N-gram

by 월곡동로봇팔 2020. 3. 5.

정의

SLM의 일종이지만, 단어 고려를 모든 단어를 고려하는 것이 아닌, n개로 정한 갯수만 고려한다.


1. corpus에서 카운트하지 못하는 경우의 확률 감소

SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다는 점이다.

또한 확률을 계산하고 싶은 문장이 길어질수록 갖고있는 코퍼스에서 그 문장이 존재하지 않을 가능성이 높다.

따라서 참고하는 단어를 줄이면, 즉 n을 설정해주면 카운트 가능성이 높아진다.

P(is|An adorable little boy) P(is|boy), P(is|An adorable little boy) P(is|little boy)

즉, 앞 단어 중 임의의 개수만 포함해서 카운트하여 근사하자는 뜻이다.


2. N-gram

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

4-grams : an ador
able little boy, adorable little boy is, little boy is spreading, boy is spreading smiles

N-gram

cf ) N 그램 추가 설명

N 개의 token으로 연속적으로 이루어져 있는 것을 말한다.

ex ) word, characters

 

 

  • n=1 일 때는 unigram 이다.
  • n=2 일 때는 bigram 이다.
  • n=3 일 때는 trigram 이다.

trigram의 예시

Word level : 띄어쓰기로 구분

Character level : 음절처럼 글자 하나씩 구분

 

Why N-gram??

  • 단어의 순서를 무시하는 bag of words를 보완할 수 있다.
  • 다른 언어를 예측한다.
  • 오타를 잡아낼 수 있다.

 

back of wods

-> back of words는 단어의 순서를 고려하지 않는다.

 

bigram

-> bigram으로 하면 단어의 순서를 정의할 수 있다.

 

Naive Next Word Prediction (Word Level) 

3문장들을 word level =3 으로 분리
how are 뒤에를 예측

위의 첫 사진은 3문장들을 word level 3으로 나누는 trigram을 이용한 것이다.

따라서 위의 표로 how are ___ 의 빈칸을 유추해보면,

how are 뒤에는 빈도수가 제일 높은 how are you 가 있기 때문에, you를 입력할 것이다.

 

Naive Spell Checker (character Level)

spell check

위의 3단어를 character level을 2로 나누는 bigram을 이용한 것이다.

 

client 는 qWal 을 입력하였고, bigram 안에 qW는 없다.

따라서 빈도수가 제일 높은, qu, ua로 결과를 도출해내서 qwal -> qual 이다.


3. N-gram Language Model의 한계

(1) 희소 문제(Sparsity Problem)

n-gram 언어 모델도 여전히 n-gram에 대한 희소 문제가 존재합니다.

n을 설정해도 데이터가 희소하다면, 성능은 적게 나온다.

(2) n을 선택하는 것은 trade-off 문제.

n을 선택하는 수치에 따라 성능이 변화하기 떄문에 trade-off라고 말한다.

n은 최대 5를 넘게 잡아서는 안 된다고 권장되고 있습니다. 

 

4. 해결책

(1) 적용 분야에 맞는 corpus 수집

적용 분야에 맞는 data를 수집함으로써, 같은 단어라도 분야에 따라 의미가 달라기도 하고, 그 분야에서 주로 쓰는 단어가 존재하기 때문에 분야에 맞는 corpus를 수집하는 것이 좋다.

(2) 인공 신경망을 이용한 언어 모델

성능이 매우 좋다

댓글