meow-clovax-v2 / README.md
haebo's picture
Update README.md
a40c298 verified
---
language:
- ko
base_model:
- naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B
pipeline_tag: text-generation
library_name: transformers
license: other
metrics:
- bertscore
- bleu
- perplexity
new_version: haebo/meow-clovax-v3
datasets:
- haebo/meow-v2-dataset
---
# 🐾 Meow-CLOVAX-v2
**Meow-CLOVAX-v2**는 감정 및 동물 말투 스타일 변환을 목표로 개발된 한국어 중심의 경량 LLM입니다.
사용자의 텍스트를 다양한 감정 및 동물(고양이/강아지) 말투로 자연스럽게 변환하는 SNS형 스타일 변환 시스템을 위해 파인튜닝된 모델입니다.
> 🧪 본 모델은 `naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B`를 기반으로 Supervised Finetuning(SFT) 방식으로 학습되었습니다.<br/>
> nick_name : haebo/Meow-HyperCLOVAX-1.5B_SFT-FFT_fp32_0629cfe
---
## 🧠 Model Details
| 항목 | 설명 |
|------|------|
| **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** | v2 |
| **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**: 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"
"다음 문장을 happy cat 말투로 바꿔줘.\n"
"Input: 오늘은 정말 좋은 하루였어!\n"
"Output:\n"
"<|assistant|>\n"
)
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=400)
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·불용문자·다중공백·과도반복 제거
---
## 🗂️ 데이터셋 설명
> 본 프로젝트의 데이터셋은 감정 및 동물 말투 스타일 변환을 위해 설계된 한국어 jsonl 포맷입니다. 각 샘플은 다음과 같은 4개 필드로 구성되어 있습니다.
| 필드명 | 설명 | 예시 값 |
|----------------------|--------------------------------------|----------------|
| `content` | 원본 문장 (일상 한국어) | 오늘은 정말 좋은 하루였어. |
| `emotion` | 감정 레이블 (영문) | happy |
| `post_type` | 동물 유형 (영문) | cat |
| `transformed_content`| 감정 및 동물 말투로 변환된 문장 | 오늘은 정말 좋은 하루였다냥! 😸 |
- **사용된 데이터셋**
> 본 모델의 파인튜닝에는 여러 단계의 데이터셋을 통합·정제한 **최종 데이터셋**이 사용되었습니다.<br/>
> 본 데이터셋은 실제 유저/댓글/합성 데이터를 통합·정제하여, 다양한 감정과 동물 말투 변환에 최적화되어 있습니다.
- **총 샘플 수**: 15,698개 (원문: 2,038개)
- **포함 데이터**:
- **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로 생성된 합성 인풋 말투 변환
- **주된 구성**: 유저 데이터, 댓글 데이터, 합성 데이터 문장 등 다양한 유형 포함
- **전처리 사항**:
- 중복 제거
- 필터링 반영
- **감정 범위**: normal, happy, sad, grumpy, curious, angry (6종)
- **동물 유형**: cat, dog (2종)
- **데이터 구조**:
- 각 샘플은 `content`, `emotion`, `post_type`, `transformed_content` 필드로 구성된 JSONL 포맷
- **특징**:
- 다양한 길이/유형의 문장 포함
- content/emotion/post_type/transformed_content의 4필드로 구성
- Jsonl 형태의 데이터
- **예시**
```json
{
"content": "내 얘기는 듣지도 않고 자기 말만 계속하네. 너무 화나서 그냥 나와버렸다.",
"emotion": "angry",
"post_type": "dog",
"transformed_content": "흥! 내 얄미운 녀석, 또 자기 말만 하는거냐왈! 😾 너무 화가 나서 그냥 나왔다 멍!🔥"
}
```