Sentiment Analysis
24 Sep 2022 | Development
- 1. Dev summary
- 2. Data Collection and Processing
- 3. Model
- 4. Train
- 5. Test result
- 6. Problems and Solutions
1. Dev summary
Project
Summary of the project Related Pages
Sentiment Analysis
base model:
- BERT
- ELECTRA
class num:
- 34 / 7 / 3
applied domains:
- General
- Literature
Related Paper Review (BERT)
ELECTRA
2. Data Collection and Processing
2.1 Dataset
출처 포맷 수량
data labeling 업체 수집 데이터(raw data: web crawling data) txt 302,028문장
data labeling 업체 수집 데이터(raw data: aihub 한국어 SNS, 자유대화 데이터) txt 184,585문장
aihub data (한국어 단발성 대화 데이터셋: 기쁨, 슬픔, 놀람, 분노, 공포, 혐오, 중립) txt 37,000문장
aihub data (감성 대화 말뭉치: 기쁨, 당황, 분노, 불안, 상처, 슬픔) txt 28,000문장
total 551,613문장
2.2 Data pre-processing
- 중복 문장 제거
- 중복 문장 추출 후 분리하여 저장 -> 모델 1차 학습 후 autolabeling을 통해 class tagging
- 이모티콘 제거. 텍스트 자체만 학습 (특수기호는 제거 x)
- 데이터 라벨 불균형 완화를 위해 “중립”에 속하는 데이터 일부 제거
2.3 Data class
{
"부정":{"분노": ["분노", "억울함"],
"싫음": ["싫음", "지루함", "미워함", "짜증남"],
"두려움": ["두려움", "창피함", "불안", "당황"],
"슬픔": ["슬픔", "미안함", "안타까움", "외로움", "실망", "괴로움", "부러움", "후회"]},
"긍정":{"행복": ["행복", "그리움", "기쁨", "사랑", "황홀함", "감동", "즐거움", "홀가분함", "설렘", "만족", "자신감", "고마움"],
"놀람": ["놀람"]},
"중립":{"중립": ["중립", "바람", "무관심"]}
}
2.4 Data augmentation method
- 1차 모델 학습 이후 autolabeling
3. Model
3.1 Model Architecture
- BERT
- Electra
3.2 Fine-tuning Hyperparameter
version batch_size max_len optimizer
34 emotion 64 64 Adam
8 emotion 64 64 Adam
3 emotion 64 64 Adam
4. Train
4.1 Training server environment
- Quadro RTX 8000 x3
- Ubuntu 20.04
5. Test result
version acc f1 score
34 emotion 77.559 0.7756
8 emotion 84 0.84
3 emotion 79 0.79
6. Problems and Solutions
- 데이터 라벨 불균형
- “중립” 문장 일부 제거
- 1차 학습 이후 web crawling 데이터 autolabeling 이후 부족한 라벨 보충 -> 예정
- 1. Dev summary
- 2. Data Collection and Processing
- 3. Model
- 4. Train
- 5. Test result
- 6. Problems and Solutions
1. Dev summary
Project | Summary of the project | Related Pages |
---|---|---|
Sentiment Analysis |
|
|
2. Data Collection and Processing
2.1 Dataset
출처 | 포맷 | 수량 |
---|---|---|
data labeling 업체 수집 데이터(raw data: web crawling data) | txt | 302,028문장 |
data labeling 업체 수집 데이터(raw data: aihub 한국어 SNS, 자유대화 데이터) | txt | 184,585문장 |
aihub data (한국어 단발성 대화 데이터셋: 기쁨, 슬픔, 놀람, 분노, 공포, 혐오, 중립) | txt | 37,000문장 |
aihub data (감성 대화 말뭉치: 기쁨, 당황, 분노, 불안, 상처, 슬픔) | txt | 28,000문장 |
total | 551,613문장 |
2.2 Data pre-processing
- 중복 문장 제거
- 중복 문장 추출 후 분리하여 저장 -> 모델 1차 학습 후 autolabeling을 통해 class tagging
- 이모티콘 제거. 텍스트 자체만 학습 (특수기호는 제거 x)
- 데이터 라벨 불균형 완화를 위해 “중립”에 속하는 데이터 일부 제거
2.3 Data class
{
"부정":{"분노": ["분노", "억울함"],
"싫음": ["싫음", "지루함", "미워함", "짜증남"],
"두려움": ["두려움", "창피함", "불안", "당황"],
"슬픔": ["슬픔", "미안함", "안타까움", "외로움", "실망", "괴로움", "부러움", "후회"]},
"긍정":{"행복": ["행복", "그리움", "기쁨", "사랑", "황홀함", "감동", "즐거움", "홀가분함", "설렘", "만족", "자신감", "고마움"],
"놀람": ["놀람"]},
"중립":{"중립": ["중립", "바람", "무관심"]}
}
2.4 Data augmentation method
- 1차 모델 학습 이후 autolabeling
3. Model
3.1 Model Architecture
- BERT
- Electra
3.2 Fine-tuning Hyperparameter
version | batch_size | max_len | optimizer |
---|---|---|---|
34 emotion | 64 | 64 | Adam |
8 emotion | 64 | 64 | Adam |
3 emotion | 64 | 64 | Adam |
4. Train
4.1 Training server environment
- Quadro RTX 8000 x3
- Ubuntu 20.04
5. Test result
version | acc | f1 score |
---|---|---|
34 emotion | 77.559 | 0.7756 |
8 emotion | 84 | 0.84 |
3 emotion | 79 | 0.79 |
6. Problems and Solutions
- 데이터 라벨 불균형
- “중립” 문장 일부 제거
- 1차 학습 이후 web crawling 데이터 autolabeling 이후 부족한 라벨 보충 -> 예정