연속한 개의 단위를 하나로 묶은 것이다. 단위는 문맥에 따라 단어일 수도 문자일 수도 있다.
"오늘 날씨 좋다" 를 단어 단위로 보면
- 1-gram (unigram):
오늘,날씨,좋다 - 2-gram (bigram):
오늘 날씨,날씨 좋다 - 3-gram (trigram):
오늘 날씨 좋다
"where" 를 문자 단위로 3-gram 으로 자르면 whe, her, ere 가 된다.
언어 모델에서
신경망 이전의 언어 모델은 다음 단어의 확률을 앞의 개 단어만 보고 근사했다.
문장 전체를 조건으로 두면 가능한 앞 문맥의 가짓수가 폭발해서 어떤 말뭉치로도 확률을 셀 수 없다. 앞 몇 개로 자르면 셀 수 있게 되는데, 그 대가로 더 먼 문맥은 버린다.
을 키우면 문맥을 더 보지만 각 조합의 등장 횟수가 급격히 줄어 대부분의 조합이 0 이 된다. 한 번도 안 나온 조합에 확률 0 을 주면 그 문장 전체의 확률이 0 이 되므로, 계수에 작은 값을 더하는 smoothing 이나 짧은 n-gram 확률로 대체하는 back-off 를 함께 쓴다.
문자 n-gram 과 FastText
FastText 는 단어 자체가 아니라 단어를 이루는 문자 n-gram 을 학습 단위로 삼는다. skip-gram 구조는 그대로 두되, 단어 임베딩을 그 단어의 문자 n-gram 임베딩들의 합으로 정의한다.
where 를 3-gram 으로 보면 <wh, whe, her, ere, re> 가 되고(<, > 는 단어 경계 표시), 이 조각들의 벡터를 더해 where 의 벡터를 만든다. 학습 때 못 본 단어라도 조각은 대부분 본 것이므로 임베딩을 만들 수 있어서 out-of-vocabulary 에 강하다.