본문 바로가기
Archive/자연어처리

[NLP] FastText란?

by 다람이도토리 2022. 4. 30.

FastText란?

Word Embedding 의 또 다른 방법이다.
Word2Vec으로 돌아가보면 주어지는 corpus를 기반으로 학습을 진행한다. 문제는, 학습되지 않은 단어를 던져주면 Word2Vec에는 에러가 발생한다. 

학습 되지 않은 단어에 대해 어떻게 보정을 해야할까에 대해 생각해 볼 수 있다. 이에 대한 보정을 고려한 것이 바로 페이스북에서 개발한 FastText이다.

FastText가 학습하는 방법.

FastText가, Word2Vec과 가장 큰 차이를 보이는 지점으로, FastText는 단어를 다시 n-gram으로 인식하여, 단어를 또 쪼개게 된다.

(1) 단어의 앞에 <를, 뒤에 >를 추가한다.
(2) 이 단어를 n-gram 값으로 쪼갠다.
(3) 추가로, 전체 단어에 <>를 추가한 토큰을 추가한다.

Example> apple -> <ap, app, ppl, ple, le>, <apple>  6개의 토큰 등장.

이렇게 학습할 경우 장점은, 예상하지 못한 단어에 대해서도 학습할 수 있다.
Ex) Korean을 3,4,5,6 gram에 대해 학습하게 되면 Korea를 학습할 수 있다. Word2Vec에서는 에러가 걸릴 수 있는 사항을 fastText에서는 에러가 발생되지 않고 결과를 얻을 수 있다.

또 다른 장점은, 오타에 대해서도 일정 수준의 성능을 보일 수 있게 된다는 점이다. 오타가 난 단어에 대해서도 유사한 토큰을 가지고 있을 것이기 때문이다.

그럼 한국어는 어떻게 처리할 수 있는가?

한국어에서 FastText를 처리할 때에는 2가지 방식을 사용할 수 있다.

(1) 음절 단위로 처리하는 방법
(2) 자모 단위로 처리하는 방법 : 종성이 존재하지 않으면 _로 분리한다.

자모 단위로 분리하게 될 경우에는, 오타 등에 더 강한 임베딩이 될 것이다.