프로젝트 주제
AIVLE-EDU 1:1 문의 유형 분류하기
1. 데이터 확인
- Lavel별 데이터 개수 확인 및 길이 분포 확인
- Mecab 형태소 분석기를 통한 Label별 단어 빈도 분포
- Word Cloud를 통한 단어 빈도 확인
2. 데이터 분석
- 정규식 데이터 처리
- 한글 초성 제거 (ㅠㅠ, ㅎㅎ 등)
- 영어, 숫자는 포함
- 특수 문자 제거
- 불용어 처리
- 기본 조사 등 불용어 리스트 생성 후 제거
- 형태소 분석기를 통한 문장 분석 진행
- konlpy에 존재하는 다양한 한국어 형태소 분석기 중 Mecab을 사용하였다. (그 외, Okt, Hannanum)
- 조사, 어미 등 기준 설정 및 제거 후 성능 변화를 확인했다.
- 명사, 품사, 형태소 추출
3. 모델 학습
- 머신 러닝
머신머닝 모델 | 성능 |
Passive Aggressive Classifier | 0.8345 |
SGD Classifier | 0.8422 |
ComplementNB | 0.8449 |
- 딥러닝
- Bidirection을 사용한 기본적인 모델을 작성해서 학습 시켰다. Train data set에 대해서는 높은 성능을 보였으나, Validataion data set에 대해서는 좋은 성능이 나오지 않았다. 과적합 문제에 대해서 분석이 필요한 것으로 판단되었다.
- Pre-Trained 모델
Pre-Trained 모델 | 성능 |
KoBert | 0.7797 |
Klue | 0.8579 |
KoBigbird | 0.8729 |
4. 결론
최종 kaggle 제출 점수
0.87319
- 데이터 개수가 적어 다양한 전처리를 한 것보다 오히려 raw 데이터가 더 성능이 좋게 나왔다.
- Bidirection 딥러닝 모델이 Train data set에는 높은 성능을 보였으나, Validation data set에 대해서는 좋은 성능이 나오지 않았다. 과적합 문제에 대해서 분석이 필요할 것으로 판단하였다.
- 머신러닝보다는 Pre-Trained된 모델이 성능이 더 잘 나오는 것을 알 수 있었다.