difficulty_klue / README.md
combe4259's picture
Update README.md
2951393 verified
metadata
language: ko
license: apache-2.0
base_model: klue/bert-base
tags:
  - klue-bert
  - text-classification
  - pytorch
  - ko
  - financial-domain
  - text-difficulty
datasets:
  - custom
metrics:
  - f1
  - accuracy
  - mae

Colab Notebook

Open In Colab

학습 데이터셋

https://huggingface.co/combe4259/difficulty_klue/blob/main/training_data_difficulty_klue.json

금융 문서 난이도 분류 모델 (Text Difficulty Classification)

이 모델은 klue/bert-base를 파인튜닝하여, 한국어 금융 문장의 난이도를 10단계(1~10)로 분류하는 Text Classification 모델입니다.

'어려운 문장'이 등장했는지 실시간으로 감지하여 '쉬운 문장 변환 AI'의 트리거 역할을 하도록 설계되었습니다.


사용 방법 (How to Use)

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# Hugging Face Hub 또는 저장된 로컬 경로에서 모델 로드
MODEL_PATH = "combe4259/difficulty_klue"
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH)
model.eval()

# 추론할 텍스트
text = "신용파생결합증권의 CDS 스프레드 변동에 따른 수익구조"

inputs = tokenizer(
    text,
    return_tensors="pt",
    truncation=True,
    max_length=512,
    padding=True
)

# 예측
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    
    # 모델은 0-9로 예측하므로, +1 하여 1-10 스케일로 변환
    prediction = torch.argmax(logits, dim=-1).item()
    difficulty = prediction + 1

print(f"텍스트: {text}")
print(f"예측 난이도: {difficulty}")
# 출력: 예측 난이도: 7

학습 데이터 (Training Data)

  • 자체 구축한 2,880개의 금융 문장/단락으로 구성된 JSON 데이터 사용
  • 데이터 분할: Train (2,016) / Validation (432) / Test (432)
  • 데이터 불균형: 난이도 7(28.2%)과 8(18.6%) 집중, 난이도 10(0.0%)은 1개 존재
  • 전처리: klue/bert-base 토크나이저 사용, max_length=512로 패딩 및 절단

학습 절차 (Training Procedure)

  • Base Model: klue/bert-base (num_labels=10)
  • Optimizer: AdamW
  • Loss Function: Weighted CrossEntropyLoss (클래스 가중치 적용)
    • 예: 샘플 1개인 난이도 10 → 10.0
    • 샘플 568개인 난이도 7 → 0.35
  • Epochs: 10
  • Batch Size: 16
  • Learning Rate: 2e-5 (with 500 warmup steps)
  • Best Model: metric_for_best_model='f1' (F1 점수가 가장 높은 체크포인트 저장)
  • Early Stopping: patience=3 (F1 점수가 3회 연속 개선되지 않으면 학습 조기 종료)

평가 결과 (Evaluation Results)

Test Set (432개) 기준 최종 성능입니다.
'F1 Score'와 'MAE, Within 1 Acc' 모두에서 안정적인 성능을 보였습니다.

Metric Score 설명
F1 Score (Weighted) 0.607 (핵심 지표) 모델의 전반적인 정밀도/재현율
Accuracy (정확도) 0.604 10개 중 정확히 맞힐 확률
MAE (평균 절대 오차) 0.560 (중요) 예측이 정답에서 평균 0.56칸 벗어남
Within 1 Acc 0.926 (중요) ±1 오차 범위 내 정확도 (92.6%)

샘플 예측

입력 텍스트 예측 난이도 (1-10)
"은행에 돈을 맡겨요" 1
"예금자보호법에 따라 5천만원까지 보호됩니다" 2
"신용파생결합증권의 CDS 스프레드 변동에 따른 수익구조" 7