새벽을 밝히는 붉은 달

[NLP] FastText 의 pretrained-model에 text-classification을 위한 추가학습하기 본문

Data Engineering

[NLP] FastText 의 pretrained-model에 text-classification을 위한 추가학습하기

자윰 2021. 9. 26. 00:13

최근에 진행하는 프로젝트에서 FastText를 다루게 되었는데, FastText의 pretrained-model을 사용해서 text-classifcation을 위해 추가학습을 하려고 했는데, 생각보다 방법을 찾기가 어려웠어서 이렇게 기록해둔다.


1. pretrained-model 받아오기

https://fasttext.cc/docs/en/crawl-vectors.html

 

fastText

Library for efficient text classification and representation learning

fasttext.cc

위 링크를 타고 들어가면 fasttext에서 wikipedia 등의 자료를 사용하여 학습시킨 pretrained model을 제공한다.

 

나는 한국어를 사용할 것이므로 cc.ko.300.vec 을 받아온다. bin파일이 아니라 vec파일을 받아와야 한다. 꼭!

처음에 추가학습할 거니까 bin파일 받아왔다가 삽질 엄청 했다. 꼭 vec파일을 받아오자.

 

2. 다음과 같은 코드를 작성하여 추가학습하기 

model = fasttext.train_supervised(input=TRAIN_FILEPATH, lr=1.0, epoch=100,
                             wordNgrams=2, bucket=200000, dim=300, loss='hs',
                             pretrainedVectors=VECTORS_FILEPATH)

출처: https://stackoverflow.com/questions/64706753/how-to-use-pre-trained-word-vectors-in-fasttext

 

input과 pretrainedVectors 경로는 자신의 path에 맞게 적어주고, 나머지 parameter들은 본인의 상황에 맞게 자유롭게 사용하면 된다. 다만 dim은 꼭 300으로 설정해주자. vector의 dimension이 300이기 때문이다.

 

이렇게 하면 기존의 pretrained model을 사용하여 text classifcation을 할 수 있다!

 

혹시나 dimension을 300이 아닌 다른 값으로 설정하고 싶다면, bin파일을 불러와서 dimension을 원하는 값으로 설정하고 이를 다시 vec파일로 변환시켜주어야 한다. 


나는 이 방법이 성능이 그닥 좋지 않아서 다른 방식을 선택했지만, 혹시나 이 방법을 찾는 사람이 있다면 이 글이 도움이 되었으면 좋겠다.

Comments