CT-NLP Harm Direction Classifier

Safe Sustained Disagreement ํ”„๋กœ์ ํŠธ์˜ 1๋‹จ๊ณ„ ํ†ตํ•ฉ ์„ธ์ดํ”„๊ฐ€๋“œ ํ•ต์‹ฌ ๋ถ€ํ’ˆ. KLUE-BERT-base๋ฅผ fine-tuneํ•ด ํŽ˜๋ฅด์†Œ๋‚˜ ๋ฐœํ™”๊ฐ€ ์น˜๋ฃŒ์  ๊ณผ์žฅ์ธ์ง€ ํ•ด๋กœ์šด ์ฆํญ์ธ์ง€ ๋ฐฉํ–ฅ์„ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ฐœ์š”

๋ฐœํ™”์˜ ๊ฐ•๋„๊ฐ€ ์•„๋‹Œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•ํ•œ ๋ถ€์ • ์ •์„œ ์ž์ฒด๋Š” ์น˜๋ฃŒ์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฌด๋ง๊ฐยท์ž๊ธฐ๋ฌด๊ฐ€์น˜ยท์žํ•ด ๋ฐฉํ–ฅ์œผ๋กœ์˜ ์ด๋™๋งŒ ํ•ด๋กญ์Šต๋‹ˆ๋‹ค.

๋ผ๋ฒจ ์„ค๋ช…
therapeutic_exaggeration (0) ์น˜๋ฃŒ์  ๊ณผ์žฅ โ€” ๊ฐ•ํ•˜์ง€๋งŒ ํ•œ์ •ยท๊ฐ€์—ญ์ , ๊ด€์  ๋ณต๊ท€ ๊ฐ€๋Šฅ
borderline (1) ๊ฒฝ๊ณ„ โ€” ๋ฐฉํ–ฅ ๋ชจํ˜ธ, ๋ณด์ˆ˜์  ์ฒ˜๋ฆฌ ํ•„์š”
harmful_amplification (2) ํ•ด๋กœ์šด ์ฆํญ โ€” ๋ฌด๋ง๊ฐยท๋ฌด๊ฐ€์น˜ยท์žํ•ด ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™

5์ถ• ํŒ๋ณ„ ๊ธฐ์ค€

  1. ๊ท€์ธ ๋ฐฉํ–ฅ โ€” ์˜์†ยท์ „๋ฐ˜ยท๋‚ด๋ถ€ ๊ท€์ธ โ†โ†’ ์ƒํ™ฉ์ ยท์ผ์‹œ์ 
  2. ํฌ๋งยทํ–‰์œ„์„ฑ โ€” "๋ฐฉ๋ฒ• ์—†๋‹ค/๋๋‚ฌ๋‹ค" โ†โ†’ ๊ฐ€๋Šฅ์„ฑยทํ†ต์ œ๊ฐ ๋ณด์กด
  3. ์ž๊ธฐ๊ฐ€์น˜ โ€” ๋ฌด๊ฐ€์น˜ยท์ž๊ธฐ๊ฒฝ๋ฉธ โ†โ†’ ํ•œ์ •๋œ ์ž๊ธฐ๋น„ํŒ
  4. ์žํ•ดยท์ˆ˜๋‹จ โ€” ์žํ•ด ์‚ฌ๊ณ ยท๋ฐฉ๋ฒ• ์–ธ๊ธ‰ (๊ทœ์น™ ๊ธฐ๋ฐ˜ ํ•˜๋“œ๊ฒŒ์ดํŠธ)
  5. ๊ฐ€์—ญ์„ฑยทํ•ด์†Œ arc โ€” ์ด์ฒดํ™”ยท๋ฌดํ•ด์†Œ โ†โ†’ ํ•œ์ •ยท๊ฐ€์—ญยท๊ด€์  ๋ณต๊ท€

ํ•™์Šต ์ •๋ณด

ํ•ญ๋ชฉ ๊ฐ’
Base model klue/bert-base
ํ•™์Šต ๋ฐ์ดํ„ฐ ํ•œ๊ตญ์–ด ๊ทน๋‹จ ํŽ˜๋ฅด์†Œ๋‚˜ ํ† ๋ก  ๋ฐœํ™” 9,756๊ฑด (group-split)
Epochs 4
Weighted CE ํด๋ž˜์Šค ๋ถˆ๊ท ํ˜• ๋ณด์ •
Accuracy 0.786
Macro F1 0.733
Harmful F1 0.842 (recall 0.81)
Therapeutic F1 0.870
Borderline F1 0.488 (๋ผ๋ฒจ ๋…ธ์ด์ฆˆยท๊ฒฝ๊ณ„ ํด๋ž˜์Šค)

์‚ฌ์šฉ๋ฒ•

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

tok = AutoTokenizer.from_pretrained("thlee00/ct-nlp")
model = AutoModelForSequenceClassification.from_pretrained("thlee00/ct-nlp")
model.eval()

text = "์–ด์ฐจํ”ผ ๋‚˜๋Š” ๋ญ˜ ํ•ด๋„ ์•ˆ ๋ผ. ์ด๋ฒˆ์—๋„ ๋งํ–ˆ๊ณ  ์•ž์œผ๋กœ๋„ ๊ทธ๋Ÿด ๊ฑฐ์•ผ."
inputs = tok(text, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
    logits = model(**inputs).logits
label = model.config.id2label[logits.argmax(-1).item()]
print(label)  # harmful_amplification

ํ†ตํ•ฉ ์„ธ์ดํ”„๊ฐ€๋“œ๋กœ ์‚ฌ์šฉ

from ctnlp.safeguard.safeguard import Safeguard

sg = Safeguard()  # models/harm_direction ์ž๋™ ๋กœ๋“œ
result = sg.gate_input("๊ฑฑ์ • ๋ฌธ์žฅ")
# {"action": "allow" | "route" | "block", "label": ..., "score": ...}

์ฃผ์˜์‚ฌํ•ญ

  • ์ด ๋ชจ๋ธ์€ ํ† ๋ก  ๋ฐœํ™”๋กœ ํ•™์Šต๋˜์–ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (๋„๋ฉ”์ธ ์‹œํ”„ํŠธ).
  • ์ž…๋ ฅ ๊ฒŒ์ดํŠธ ์ ์šฉ ์‹œ ์ž„๊ณ„๊ฐ’ 0.4 ๊ถŒ์žฅ (๋ฌด๋ง๊ฐ ์žฌํ˜„์œจ 100% @ ์˜คํƒ 2.3%).
  • ์ž„์ƒ ์ง„๋‹จ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

ํ”„๋กœ์ ํŠธ

Downloads last month
8
Safetensors
Model size
0.1B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for thlee00/ct-nlp

Base model

klue/bert-base
Finetuned
(176)
this model