
Word2Vec는 단어를 원자적 토큰(whole word) 단위로 학습합니다. 반면 fastText는 단어를 문자 n-그램(subword)들의 합으로 표현해 형태 정보와 희귀어까지 더 잘 담는다.
이 때문에 fastText는 OOV(Out-of-Vocabulary) 단어도 n-그램으로 쪼개 벡터를 만들 수 있어 희귀어/오탈자/신조어에 강하다.
학습은 Word2Vec과 같은 CBOW/Skip-gram 틀 위에서 돌아가며, n-그램은 버킷 해싱(bucket hashing)으로 관리해 메모리를 제어한다.
| 항목 | Word2Vec | fastText |
|---|---|---|
| 학습 단위 | 단어(whole word) | 문자 n-그램의 합(단어 = n-그램 벡터들의 합) |
| OOV 처리 | 불가(벡터 없음) | 가능: 미본 단어도 n-그램 합으로 벡터 생성 |
| 형태 정보 | 암시적(문맥만) | 명시적(접사/어근 등 서브워드로 반영) |
| 기본 구조 | CBOW/Skip-gram | CBOW/Skip-gram + subword |
| 파라미터 제어 | 단어 사전 크기에 비례 | n-그램을 해시 버킷에 넣어 상한 관리 |
| 학습/추론 비용 | 상대적으로 가벼움 | n-그램 합산 때문에 조금 더 무거움(코퍼스/하이퍼파라메터에 따라 다름) |
OOV 단어 벡터 생성: 사전에 없는 단어도 문자 n-그램 합으로 즉시 벡터화. 예: “gearshift” 같은 미등장 단어 예시.
희귀어·형태가 풍부한 언어에 강함: 접사/활용형 변화가 많은 언어(한국어 포함)에서 성능 향상 보고.
오탈자·변형에 견고: 철자 변형도 일부 n-그램이 겹쳐 의미가 덜 무너짐. (서브워드 기반의 일반적 효과)
Word2Vec과 동일한 사용성: 같은 CBoW/Skip-gram 틀이라 적용이 쉽고, 대규모 말뭉치에서도 빠른 학습이 가능하도록 설계됨.
메모리 관리: n-그램 수가 커도 버킷 해싱으로 파라미터 수 상한을 걸어 실용성을 확보. (충돌은 가능하지만 실무에서 관리 가능)