정의
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
cf ) N 그램 추가 설명
N 개의 token으로 연속적으로 이루어져 있는 것을 말한다.
ex ) word, characters
- n=1 일 때는 unigram 이다.
- n=2 일 때는 bigram 이다.
- n=3 일 때는 trigram 이다.
Word level : 띄어쓰기로 구분
Character level : 음절처럼 글자 하나씩 구분
Why N-gram??
- 단어의 순서를 무시하는 bag of words를 보완할 수 있다.
- 다른 언어를 예측한다.
- 오타를 잡아낼 수 있다.
-> back of words는 단어의 순서를 고려하지 않는다.
-> bigram으로 하면 단어의 순서를 정의할 수 있다.
Naive Next Word Prediction (Word Level)
위의 첫 사진은 3문장들을 word level 3으로 나누는 trigram을 이용한 것이다.
따라서 위의 표로 how are ___ 의 빈칸을 유추해보면,
how are 뒤에는 빈도수가 제일 높은 how are you 가 있기 때문에, you를 입력할 것이다.
Naive Spell Checker (character Level)
위의 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) 인공 신경망을 이용한 언어 모델
성능이 매우 좋다
'AI' 카테고리의 다른 글
자연어처리 : 언어모델 : Perplexity (0) | 2020.03.06 |
---|---|
자연어처리 : 언어모델 : 통계적 언어모델 (0) | 2020.03.05 |
자연어처리 : 언어 모델 (Language Model) (0) | 2020.03.05 |
자연어처리 : 텍스트 전처리 : 단어 분리하기 (BPE) (0) | 2020.03.05 |
자연어처리 : 텍스트 처리 : one-hot-encoding (0) | 2020.03.04 |
댓글