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) 자모 단위로 처리하는 방법 : 종성이 존재하지 않으면 _로 분리한다.
자모 단위로 분리하게 될 경우에는, 오타 등에 더 강한 임베딩이 될 것이다.
'Archive > 자연어처리' 카테고리의 다른 글
[NLP] ELMo란 무엇일까? (0) | 2022.04.28 |
---|---|
[NLP] N-gram, Word2Vec, Glove의 간단 개요. (0) | 2022.04.27 |
[NLP] Word Embeddings - Basics (0) | 2022.04.25 |
[자연어] BERT 모델, 찍먹해보자. (0) | 2021.09.06 |
[자연어] 트위터 문자 분류 문제를 통한 자연어 처리 실습(1) (0) | 2021.09.01 |