|
|
--- |
|
|
language: |
|
|
- ko |
|
|
base_model: |
|
|
- naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B |
|
|
pipeline_tag: text-generation |
|
|
library_name: transformers |
|
|
metrics: |
|
|
- bleu |
|
|
- perplexity |
|
|
- bertscore |
|
|
license: other |
|
|
datasets: |
|
|
- haebo/meow-v3-dataset |
|
|
--- |
|
|
⭐ **Meow-Clovax-v3** ⭐ |
|
|
|
|
|
<p align="left"> |
|
|
<img src="https://cdn-uploads.huggingface.co/production/uploads/67f761f202eaa61b360510bd/iU65VJJ4Uin0mQLWJ6FNe.png" alt="title_page" width="720"/> |
|
|
</p> |
|
|
|
|
|
<!--  --> |
|
|
|
|
|
<!--  --> |
|
|
|
|
|
# Overview |
|
|
|
|
|
Meow-Clovax-v3는 카카오테크 부트캠프 팀 프로젝트의 일환으로 개발된 경량 한국어 언어 모델입니다. <br/> |
|
|
네이버의 HyperCLOVAX-SEED-Text-Instruct-1.5B를 기반으로 SNS 서비스 환경에 최적화되어, <br/> |
|
|
게시글이나 댓글의 말투를 동물(고양이, 강아지)의 스타일과 다양한 감정을 담아 자연스럽게 변환하도록 <br/> |
|
|
특별히 설계되었습니다. 팀원들의 협력으로 구축된 약 1만 2천 개의 데이터셋을 통해, 실제 사용자들이 <br/> |
|
|
쓰는 문장들을 보다 재미있고 감정적으로 풍부한 형태로 바꿔주는 것이 목표입니다. |
|
|
|
|
|
--- |
|
|
|
|
|
## 🧠 Model Details |
|
|
|
|
|
> `naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B`를 기반으로 Supervised Finetuning(SFT) 방식으로 학습되었습니다.<br/> |
|
|
> nick_name : haebo/Meow-HyperCLOVAX-1.5B_SFT-FFT_fp32_0710cfe_drop3_epoch2 |
|
|
|
|
|
| 항목 | 설명 | |
|
|
|------|------| |
|
|
| **Base Model** | HyperCLOVAX-SEED-Text-Instruct-1.5B | |
|
|
| **Fine-tuning Method** | Supervised Finetuning (SFT) | |
|
|
| **Model Type** | Decoder-only | |
|
|
| **Language** | Korean (primary) | |
|
|
| **Parameters** | 1.5B | |
|
|
| **Precision** | fp16 / fp32 | |
|
|
| **Version** | v3 | |
|
|
| **Framework** | Transformers | |
|
|
| **license** | hyperclovax-seed | |
|
|
|
|
|
--- |
|
|
|
|
|
## 📦 Training Details |
|
|
|
|
|
- **Dataset**: 감정 및 동물 말투에 따라 수집·합성된 style transfer 데이터셋 (비공개) |
|
|
- 각 샘플은 `content`, `emotion`, `post_type`, `transformed_content` 필드로 구성된 jsonl 데이터셋 |
|
|
- **Task**: Instruct-style fine-tuning (prompt → transformed response) |
|
|
- **Prompt 구조**: |
|
|
- system: "너는 동물 유형과 감정에 맞게 문장을 자연스럽게 변환하는 전문가야." |
|
|
- user: "다음 문장을 [감정] [동물] 말투로 바꿔줘.\nInput: ...\nOutput:" |
|
|
- assistant: 변환문 + EOS |
|
|
- **Epochs**: 2 |
|
|
- **Learning rate and Optimizer**: |
|
|
- Learning Rate: 2e-5 (0.00002) |
|
|
- Optimizer: AdamW (adam_beta1=0.9, adam_beta2=0.98, adam_epsilon=1e-8) |
|
|
- Weight Decay: 0.01 |
|
|
- Dropout: 0.3 |
|
|
- **Evaluation**: BLEU, KoBERTScore, Perplexity, Quality Score, Type Score, 수동 평가 등 사용 |
|
|
- **Training Infrastructure**: Google Colab Pro+ (A100) |
|
|
- **Instruction Infrastructure**: Google Colab Pro+ (T4) / GCP T4 |
|
|
|
|
|
--- |
|
|
|
|
|
## 🎯 Intended Use |
|
|
|
|
|
- 감정 기반 말투 변환 서비스 (예: 고양이 말투 + 화남 → “왜 건드냐옹! 안 건드렸으면 좋겠다옹!”) |
|
|
- SNS 캐릭터 보정, 댓글 자동 응답, 감정 기반 챗봇 등에 활용 가능 |
|
|
- 사용자 프롬프트 스타일 변경 or 톤 조정 등에 활용 |
|
|
- 다양한 비문에 대해서도 견고한 답변 가능 |
|
|
|
|
|
--- |
|
|
|
|
|
## ⚠️ Limitations |
|
|
|
|
|
- 사실 기반 생성보다는 말투 스타일링에 초점을 맞춤 |
|
|
- 부정확하거나 비논리적인 문장을 생성할 수 있음 |
|
|
- 실제 감정 상태 분석은 수행하지 않음 |
|
|
- 비상업적 용도로만 사용 가능 (라이선스 참조) |
|
|
|
|
|
--- |
|
|
|
|
|
## 🛠️ How to Use |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
|
|
|
model_id = "haebo/meow-clovax-v3" |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id) |
|
|
model = AutoModelForCausalLM.from_pretrained(model_id) |
|
|
|
|
|
prompt = ( |
|
|
"<|system|>\n" |
|
|
"너는 동물 유형과 감정에 맞게 문장을 자연스럽게 변환하는 전문가야.\n" |
|
|
"<|user|>\n" |
|
|
"다음 문장을 기쁜 고양이 말투로 바꿔줘.\n" |
|
|
"Input: 오늘은 정말 좋은 하루였어!\n" |
|
|
"Output:\n" |
|
|
"<|assistant|>\n" |
|
|
) |
|
|
inputs = tokenizer(prompt, return_tensors="pt") |
|
|
outputs = model.generate(**inputs, max_new_tokens=128) |
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
|
``` |
|
|
|
|
|
--- |
|
|
|
|
|
## 🧪 평가 기준 및 자동화 |
|
|
|
|
|
- **BLEU Score**: n-gram 기반 표면 유사도 (0~1, 높을수록 유사) |
|
|
- **KoBERTScore**: 의미적 유사도(BERT 임베딩, 0.8↑ 의미 유사) |
|
|
- **Perplexity**: 언어모델 자연스러움(60~180 구간 1.0점) |
|
|
- **Quality Score**: 금지어, 반복, 허용 문자, 이모지 등 서비스 품질 |
|
|
- **Type Score**: 목표 동물 말투 패턴 일치(1.0: 완벽, 0.2: 혼합, 0.1: 반대, 0: 없음) |
|
|
- **데이터 클랜징**: 한글/영문/숫자/주요구두점/이모지만 허용, URL·불용문자·다중공백·과도반복 제거 |
|
|
- **데이터 필터링**: 5가지 평가 기준에 따른 threshold를 설정 후 미달된 데이터 삭제 |
|
|
|
|
|
--- |
|
|
|
|
|
## 🗂️ 데이터셋 설명 |
|
|
|
|
|
> 본 프로젝트의 데이터셋은 감정 및 동물 말투 스타일 변환을 위해 설계된 한국어 jsonl 포맷입니다. 각 샘플은 다음과 같은 4개 필드로 구성되어 있습니다. |
|
|
|
|
|
| 필드명 | 설명 | 예시 값 | |
|
|
|----------------------|--------------------------------------|----------------| |
|
|
| `content` | 원본 문장 (일상 한국어) | 오늘은 정말 좋은 하루였어. | |
|
|
| `emotion` | 감정 레이블 (영문) | happy | |
|
|
| `post_type` | 동물 유형 (영문) | cat | |
|
|
| `transformed_content`| 감정 및 동물 말투로 변환된 문장 | 오늘은 정말 좋은 하루였다냥! 😸 | |
|
|
|
|
|
- **예시** |
|
|
```json |
|
|
{ |
|
|
"content": "오늘도 좋은 하루! 웃는 일만 가득하세요!", |
|
|
"emotion": "happy", |
|
|
"post_type": "cat", |
|
|
"transformed_content": "🐾 오늘도 좋은 하루냥! 냐하하! 웃는 일만 가득하길 바란다냥! 💛" |
|
|
} |
|
|
``` |
|
|
|
|
|
- **ver3 한글 매핑** |
|
|
|
|
|
> ver3에서는 감정(emotion)과 동물(post_type) 필드를 한글로 매핑하여 프롬프트 및 변환문에 자연스럽게 반영합니다. |
|
|
|
|
|
```python |
|
|
POST_TYPE_KR = { |
|
|
"cat": "고양이", |
|
|
"dog": "강아지" |
|
|
} |
|
|
EMOTION_KR = { |
|
|
"normal": "평범한", |
|
|
"happy": "기쁜", |
|
|
"sad": "슬픈", |
|
|
"angry": "화난", |
|
|
"grumpy": "까칠한", |
|
|
"curious": "호기심 많은" |
|
|
} |
|
|
``` |
|
|
예시 프롬프트: |
|
|
`"다음 문장을 기쁜 고양이 말투로 바꿔줘.\nInput: ...\nOutput:"` |
|
|
|
|
|
- **데이터셋 특징** |
|
|
|
|
|
- 감정/동물 스타일별 다양한 어미, 의성어, 이모지, 추임새 반영 |
|
|
- 데이터 클랜징: 한글/영문/숫자/주요구두점/이모지만 허용, URL·불용문자·다중공백·과도반복 제거 |
|
|
- 평가 자동화: BLEU, KoBERTScore, Perplexity, Quality, Type Score 등과 연동 |
|
|
- 서비스 품질: 금지어, 반복성, 이모지 활용 등 실제 서비스 기준 품질 관리 |
|
|
|
|
|
--- |
|
|
|
|
|
## 사용된 데이터셋 상세 설명 |
|
|
|
|
|
> 본 모델의 파인튜닝에는 여러 단계의 데이터셋을 통합·정제한 **최종 데이터셋**이 사용되었습니다.<br/> |
|
|
> 본 데이터셋은 실제 유저/댓글/합성/비문/safety 데이터를 통합·정제하여, 다양한 감정과 동물 말투 변환에 최적화되어 있습니다. |
|
|
|
|
|
- **총 샘플 수**: 11,845개 |
|
|
- **포함 데이터**: |
|
|
- **dataset_0515_made** (342개): 초기 유저 데이터 |
|
|
- **dataset_0527_made** (818개): 유저 게시글 기반 감정별/동물별 데이터 |
|
|
- **dataset_0530_made** (2,986개): 감정별 증폭된 게시글 기반 데이터 |
|
|
- **dataset_0613_made** (681개): 유저 댓글 입력에 대한 규칙 기반 변환(cat) |
|
|
- **dataset_0620_made** (681개): 유저 댓글 입력에 대한 규칙 기반 변환(dog) |
|
|
- **dataset_0622_made** (17,596개): Gemini로 생성된 합성 인풋 말투 변환 |
|
|
- **dataset_0709_made** (465개): 많이 사용되는 비문 + safety 데이터 |
|
|
- **주된 구성**: 유저 데이터, 댓글 데이터, 합성 데이터, 비문, safety 문장 등 다양한 유형 포함 |
|
|
- **전처리 사항**: |
|
|
- 중복 제거 |
|
|
- 클랜징/필터링 반영 |
|
|
- 부적절한 데이터 수기 제거 |
|
|
- **감정 범위**: normal, happy, sad, grumpy, curious, angry (6종) |
|
|
- **동물 유형**: cat, dog (2종) |
|
|
- **데이터 구조**: |
|
|
- 각 샘플은 `content`, `emotion`, `post_type`, `transformed_content` 필드로 구성된 JSONL 포맷 |
|
|
- **특징**: |
|
|
- Normal 감정은 댓글 데이터(0613, 0620)만 사용 |
|
|
- 다양한 길이/유형의 문장 포함 |
|
|
- 0709 데이터는 클랜징/필터링 처리하지 않음 |
|
|
- content/emotion/post_type/transformed_content의 4필드로 구성 |
|
|
- Jsonl 형태의 데이터 |
|
|
|
|
|
--- |
|
|
|
|
|
## 평가 결과 |
|
|
|
|
|
| 모델명 | 카테고리 | 학습 방식 | 주요 장점 | 주요 한계 | 데이터 특징 | |
|
|
|-------------|----------|-----------------------------|----------------------------------|------------------------------|------------------| |
|
|
| gemini_v1 | Gemini | 프롬프트 기반 튜닝 | 동물 유형별 말투 안정적, 자연스러움 | 대답 형태, 말투 변환 한계 | 유형별 설명 포함 | |
|
|
| gemini_v2 | Gemini | 프롬프트 기반 튜닝 | 감정별 변환 개선 | 불필요한 내용 포함 | 유형별 상황 추가 | |
|
|
| meow-base | ClovaX | - | 원문 재작성 | 말투 변환 없음 | - | |
|
|
| meow-v1 | ClovaX | Instruct 구조 맞춤 | 동물 유형 안정적 반영 | 감정 변환 어려움, 품질 저하 | 사용자 데이터 | |
|
|
| meow-v2 | ClovaX | SFT 구조 + 필터링 | 의미 유지/반영 | 비정형 글 변환 한계 | 합성 데이터 추가 | |
|
|
| meow-v3 | ClovaX | 프롬프트 한글화+클랜징+dropout| 견고한 변환, 다양한 상황 대응 | 의미 없는 요청 취약 | 비문 데이터 추가 | |
|
|
|
|
|
| 모델명 | Kobert | BLEU | Perplexity | Type | Quality | 종합 평균(%) | |
|
|
|-------------|---------------|----------------|----------------|----------------|---------------|---------------| |
|
|
| gemini_v1 | 0.68 (0.00%) | 0.32 (0.00%) | 0.90 (0.00%) | 0.99 (0.00%) | 0.87 (0.00%) | 0.00% | |
|
|
| gemini_v2 | 0.64 (−5.78%) | 0.31 (−3.33%) | 0.94 (+4.07%) | 0.97 (−1.36%) | 0.84 (−4.12%) | −1.66% | |
|
|
| meow-v1 | 0.56 (−18.26%)| 0.17 (−46.23%) | 0.38 (−57.58%) | 0.96 (−2.71%) | 0.57 (−34.65%)| −28.38% | |
|
|
| meow-v2 | 0.71 (+4.04%) | 0.46 (+41.29%) | 0.83 (−8.47%) | 0.98 (−0.68%) | 0.95 (+9.23%) | +5.41% | |
|
|
| meow-v3 | 0.75 (+9.87%) | 0.55 (+71.14%) | 0.85 (−6.46%) | 0.94 (−5.06%) | 0.89 (+2.23%) | +8.10% | |
|
|
|
|
|
<p align="left"> |
|
|
<img src="https://cdn-uploads.huggingface.co/production/uploads/67f761f202eaa61b360510bd/o22wvzcJZBWD6pg6RJd_B.png" alt="genini" width="420"/> |
|
|
<img src="https://cdn-uploads.huggingface.co/production/uploads/67f761f202eaa61b360510bd/HdiJdwASJnPRoP26ipw9H.png" alt="clovax" width="420"/> |
|
|
</p> |
|
|
|
|
|
--- |
|
|
|
|
|
## 📚 라이선스 및 활용 |
|
|
|
|
|
- 연구/비상업적 용도 우선, 상업적 활용은 별도 문의 |
|
|
- 데이터/모델/코드 재배포 시 출처 표기 권장 |
|
|
|
|
|
--- |