새벽을 밝히는 붉은 달
[NLP] FastText 의 pretrained-model에 text-classification을 위한 추가학습하기 본문
[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에서 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파일로 변환시켜주어야 한다.
나는 이 방법이 성능이 그닥 좋지 않아서 다른 방식을 선택했지만, 혹시나 이 방법을 찾는 사람이 있다면 이 글이 도움이 되었으면 좋겠다.
'Data Engineering' 카테고리의 다른 글
[Hadoop] YARN capacity-scheduler 사용 기록 (0) | 2023.09.09 |
---|---|
Trino와 Presto 톺아보기 (1) | 2023.09.02 |
[Airflow] on_failure_callback에서 Xcom 사용하기 (1) | 2023.02.05 |
[밑바닥부터 시작하는 딥러닝] 퍼셉트론 (0) | 2021.04.10 |