교내 알고리즘 및 ai 경진대회가 진행될 때 fastText를 이용하여 상품카테고리 분류를 진행했던 내용입니다.

fastText는 페이스북에서 발표한 단어 임베딩 기법입니다. fastText가 갖는 특징으로는 하나의 단어 안에 여러 단어가 존재한다고 간주하여 가령 n=3인 trigram 에서 bubblegum를 세 글자씩 잘라서 임베딩한다는 특징이 있습니다. 이전에 bubble와 gum를 학습한 적이 있으면 bubblegum를 학습하는데 도움을 주는 방식입니다.
다뤄볼 데이터는 다음과 같습니다.


트레이닝셋을 학습시켜서 테스트셋의 결과를 제출해야합니다.
import pandas as pd
import numpy as np
import fasttext
fasttext가 깔려있지 않다면 pip install fasttext 명령어를 통해 설치 후 import 합니다.
traindata = pd.read_csv("/content/drive/MyDrive/colabdata/train.csv")
testdata = pd.read_csv("/content/drive/MyDrive/colabdata/test.csv", sep = ',')
print(traindata)
저는 코랩을 이용하였기 때문에 코랩내에 파일을 넣고 불러주었습니다.
df2 = pd.DataFrame(columns=['category','document'])
df2['category'] = '__label__'+traindata['category']
df2['document'] = traindata['document']
print(df2)

df2.to_csv('labelingtrain.txt', sep = '\t', index = False)
labeling = pd.read_csv("/content/labelingtrain.txt", sep = '\t')
파일 관리의 편리를 위해 따로 txt 파일로 저장하고나서 학습시키기로 하였습니다.
model = fasttext.train_supervised('/content/labelingtrain.txt', wordNgrams=3, epoch=25, lr=0.35)
train_supervised 메소드를 이용해서 학습시키는 과정입니다.





anslist = []
for i in predictions :
try :
i = i[0].replace('_','').replace('label','')
anslist.append(i)
except :
continue

fasttext.cc/docs/en/supervised-tutorial.html을 참고하였습니다.
제출 당시에는 94점으로 대회 종료 이후 학교 커뮤니티를 참고했을때 썩 높은 점수는 아니었습니다만 알고리즘 접수와 합산하는 시스템이라서 좋은 결과를 받게되어 운이 좋았던 것 같습니다.
'Python' 카테고리의 다른 글
[PyQt5] 버튼 눌러서 새 창 띄우기 (0) | 2021.08.18 |
---|---|
암호화폐 거래소 공시봇 만들기 - (4) 무지성 공시봇 후기 (0) | 2021.03.31 |
암호화폐 거래소 공시봇 만들기 - (3) 업비트 API를 이용한 거래 (0) | 2021.03.31 |
암호화폐 거래소 공시봇 만들기 - (2) 코드 작성 (2) | 2021.03.25 |
암호화폐 거래소 공시봇 만들기 - (1) 구조 파악 (0) | 2021.03.23 |