자세한 코드는 아래 링크에서 1. 11번가 리뷰 긍부정 분류(KoBERT_fine_tuning).ipynb를 확인해주세요!
깃허브: https://github.com/ChangdaeVictorLee/NLP_11st_review
KoBERT를 활용해 주어진 리뷰를 긍정, 부정으로 분류하는 모델을 만들었습니다.
참고: SKT KoBERT https://github.com/SKTBrain/KoBERT
KoBERT에서 마지막 Fully Connected Layer만 fine-tuning해 학습을 진행했습니다.
학습을 위해 12L(transformer block ), 768H(hidden size), 12A(self-attention heads)를 사용하는 KoBERT 모델을 사용했습니다.
1에서 설명했던 대로 1,2 점은 부정리뷰로 0으로 라벨링했고 4,5점은 긍정리뷰로 1로 라벨링했습니다. 총 20만건의 데이터에 대해 test 데이터로 20%를 할당했습니다.
max_len = 90 # 3사분위수인 90
batch_size = 64
warmup_ratio = 0.1
num_epochs = 3
max_grad_norm = 1
log_interval = 200
learning_rate = 5e-5

모델 학습을 위한 parameter는 위와 같이 설정했습니다.
왼쪽은 20만건의 리뷰 길이에 대한 Box Plot입니다. 리뷰 문장 길이의 75%지점(3사분위수)인 90을 길이로 max_len을 설정했습니다. 만약 리뷰 단어 길이가 90보다 크다면 뒤는 버리고, 90보다 작다면 부족한 부분에 대해서는 padding을 진행합니다.
리뷰 길이에 대해서는 1사분위수 27, 2사분위수 49, 3사분위수 90이 나왔습니다.
batch_size는 64, epoch은 3으로 설정했습니다.

최종 학습 결과 94.5%의 높은 Test_accuracy가 나왔습니다. 이 모델을 활용해 아래에서 실제 리뷰에 대해 잘 작동하는지도 확인했습니다.

이 모델을 활용해 아래와 같이 소비자들의 리뷰에 대해 긍정과 부정을 구분할 수 있습니다.

FLY AI 기간에는 리뷰 긍부정 분류는 여기까지 진행했습니다. 개인적으로 아쉬움이 남아 리뷰에 대한 또 다른 NLP 문제를 생각해보았습니다. 이는 다음 포스팅에 자세히 설명하도록 하겠습니다.
'SKT FlyAI(인공지능 교육)' 카테고리의 다른 글
| 설명가능한 리뷰 긍부정 모델? (XAI) (0) | 2023.01.26 |
|---|---|
| 리뷰 크롤링 - AI를 활용한 유저친화적 CLEAN 리뷰 시스템 구현 (0) | 2023.01.24 |
| (개요) AI를 활용한 유저친화적 CLEAN 리뷰 시스템 구현 (1) | 2023.01.24 |