File size: 5,464 Bytes
7d28c00
 
 
 
 
 
 
4520922
7d28c00
d564c9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6244161
 
7d28c00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
license: mit
title: 한국어 텍스트 비난독화 AI 모델 | Korean Text De-obfuscation Fine-tuning
sdk: streamlit
emoji: 📚
colorFrom: purple
colorTo: indigo
sdk_version: 1.45.1
---
# 🔤 한국어 텍스트 비난독화 AI 모델 | Korean Text De-obfuscation Fine-tuning

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![HuggingFace](https://img.shields.io/badge/🤗-HuggingFace-yellow)](https://huggingface.co/)

**숭실대학교 지능형시스템 과목****91veMe4Plus 팀**에서 설계하고 개발한 **난독화된 한국어 문자열의 원본을 추론하는 언어모델 파인튜닝** 연구 프로젝트입니다.

## 🎯 프로젝트 개요

**난독화된 한국어 텍스트를 원본으로 복원**하는 언어모델 파인튜닝 프로젝트입니다. **Naver HyperCLOVAX-SEED-Text-Instruct-0.5B** 모델을 **LoRA (Low-Rank Adaptation)**로 파인튜닝하여 왜곡되거나 변형된 한국어 문자열에서 원본 텍스트를 정확히 추론할 수 있는 AI 모델을 개발했습니다.

### 🔤 난독화 복원 예시

| 난독화된 텍스트 | 원본 텍스트 |
|----------------|--------------|
| ㅇㅏㄴㄴㅕㅇ하세요 | 안녕하세요     |
| ㅎㅏㅇㅏㄱㅣㅁㅏㄹ | 하늘이 맑음   |
| ㅁㅏㄹㅎㅏㅁㅅㅣㄴㄴㅏ | 말할 수 있는 나 |

### 핵심 성과
- **BLEU 점수**: 7-10배 향상 (0.0029 → 0.0233)
- **ROUGE-1**: 2배 향상 (0.138 → 0.279)
- **문자 정확도**: 2배 향상 (0.151 → 0.332)
- **추론 시간**: 50% 단축 (6.78s → 3.03s)

## 🏫 학술 정보

- **대학교**: 숭실대학교 (Soongsil University)
- **과목**: 지능형시스템 (Intelligent Systems)
- **팀명**: 91veMe4Plus
- **프로젝트**: 한국어 텍스트 비난독화 AI 모델 성능 최적화 연구

## 📊 모델 성능

| 모델 | BLEU | ROUGE-1 | ROUGE-2 | ROUGE-L | 문자 정확도 | 추론 시간 |
|------|------|---------|---------|---------|-------------|-----------|
| 원본 HyperCLOVAX | 0.0029 | 0.138 | 0.064 | 0.138 | 0.151 | 6.78s |
| **파인튜닝 모델** | **0.0233** | **0.276** | **0.148** | **0.279** | **0.332** | **3.03s** |

## 🛠️ 기술 스택

### 모델 아키텍처
- **베이스 모델**: Naver HyperCLOVAX-SEED-Text-Instruct-0.5B
- **파인튜닝 기법**: LoRA (Low-Rank Adaptation)
- **양자화**: 4-bit BitsAndBytes
- **최적화**: AdamW + Linear Warmup

### LoRA 설정
```python
LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", 
                   "gate_proj", "up_proj", "down_proj"],
    lora_dropout=0.1,
    task_type=TaskType.CAUSAL_LM
)
```

## 📈 실험 결과

### 하이퍼파라미터 최적화
- **Learning Rate**: 1e-4 vs 5e-4 비교
- **Batch Size**: 1, 2, 4 비교  
- **Dataset Size**: 10K vs 30K 샘플 비교

### 최적 설정
- **Learning Rate**: 1e-4
- **Batch Size**: 4
- **Dataset Size**: 10,000 샘플 (효율성 관점)

## 💾 데이터셋

**696,024개** 한국어 텍스트 샘플 (6가지 유형):
- 구어체/대화체 (16,878)
- 뉴스문어체 (281,932)
- 문화문어체 (25,628)
- 전문분야문어체 (306,542)
- 조례문어체 (36,339)
- 지자체웹사이트문어체 (28,705)

## 🚀 빠른 시작

### 설치
```bash
pip install transformers peft torch bitsandbytes
```

### 사용법
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

# 모델 로드
base_model = AutoModelForCausalLM.from_pretrained(
    "navercorp/HyperCLOVAX-SEED-Text-Instruct-0.5B"
)
model = PeftModel.from_pretrained(base_model, "path/to/lora/adapter")
tokenizer = AutoTokenizer.from_pretrained(
    "navercorp/HyperCLOVAX-SEED-Text-Instruct-0.5B"
)

# 추론
prompt = """### 지시사항:
다음 난독화된 한국어 텍스트를 원래 텍스트로 복원해주세요.

난독화된 텍스트: ㅇㅏㄴㄴㅕㅇ하세요

### 응답:"""

inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128, temperature=0.7)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
```

## 📁 주요 파일

```
FineTuningLLM/
├── 🧪 실험 노트북
│   ├── learning_rate_hyperclova_deobfuscation_finetuning.ipynb
│   ├── batch_size_hyperclova_deobfuscation_finetuning.ipynb
│   └── datasets_hyperclova_deobfuscation_finetuning.ipynb
├── 📊 성능 분석
│   ├── model_performance_analysis_*.ipynb
│   └── team_all_model_performance_analysis_*.ipynb
├── 🤖 훈련된 모델
│   ├── hyperclova-deobfuscation-lora-1e-4-learning-rate/
│   ├── hyperclova-deobfuscation-lora-*-batch-size/
│   └── hyperclova-deobfuscation-lora-*-datasets/
└── 📈 분석 결과 (CSV, PNG)
```

## 🔧 요구사항

- Python 3.8+
- PyTorch 2.0+
- CUDA 지원 GPU (권장)
- 16GB+ RAM

## 📝 라이선스

MIT License - Copyright (c) 2025 91veMe4Plus

## 🤝 기여하기

이슈나 PR은 언제든 환영합니다! 한국어 NLP 연구에 관심이 있으시면 참여해주세요.

## 📞 연락처

- **팀**: 91veMe4Plus
- **프로젝트**: 한국어 텍스트 비난독화 AI 모델 성능 분석

---

*이 프로젝트는 한국어 텍스트 처리 성능 향상을 위한 연구 목적으로 개발되었습니다.*