Downloads · 30 days
26
53% of all-time downloads
querypieai/dlp-tier2-ko-electra-auto-f2
dlp-tier2-ko-electra-auto-f2 is a text classification model from querypieai. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as apache-2.0.
이 모델은 DLP 파이프라인 2단계에서 사용하는 한국어 시퀀스 분류기입니다. monologg/koelectra-small-v3-discriminator를 기반으로 KO2 hard-negative 병합 데이터셋으로 파인튜닝했습니다.
Downloads · 30 days
26
53% of all-time downloads
All-time downloads
49
Public
Parameters
14.1M
56.5 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors56.5 MB · 99%
From the Hugging Face model README
이 모델은 DLP 파이프라인 2단계에서 사용하는 한국어 시퀀스 분류기입니다. monologg/koelectra-small-v3-discriminator를 기반으로 KO2 hard-negative 병합 데이터셋으로 파인튜닝했습니다.
여기서 "Tier2"는 모델 아키텍처나 버전을 뜻하지 않고, DLP 검출 파이프라인의 두 번째 단계를 뜻한다.
| 단계 | 역할 | 방식 |
|---|---|---|
| Tier 1 | 1차 후보 탐지 | 보안 규칙, 정규표현식, 키워드/문자열 매칭 등 빠른 규칙 기반 필터 |
| Tier 2 | 1차 후보 재검토 | 본 모델과 같은 문맥 분류 모델로 유출 위험 여부를 재판정 |
이 모델은 Tier 1이 이미 후보로 분류했거나 정책상 추가 검토가 필요한 텍스트를 입력받는 것을 전제로 설계되었다. 일반 문서 전체를 무조건 이 모델로 직접 분류하는 용도가 아니라, 규칙 기반 1차 필터 이후의 정밀 재검토 단계에서 사용한다.
| 레이블 ID | 의미 |
|---|---|
| 0 | benign |
| 1 | leakage_risk |
레이블 이름은 작업 이해를 위한 설명용 메타데이터입니다. 학습과 추론 코드에서는 정수 레이블을 사용합니다.
1차 DLP 필터가 표시했거나 2차 검토로 이관한 텍스트를 재검토할 때 사용합니다. 문장 또는 문단 수준의 위험도 분류를 위한 모델이며, 개체의 문자 범위를 추출하지 않습니다. 실제 운영에서는 청킹, 임계값, 정책 로직과 함께 사용해야 합니다.
192자 청크와 48자 겹침을 사용하고 각 청크를 독립적으로 평가합니다.truncation=True, padding=True, max_length=256으로 토크나이즈합니다.모델은 입력 청크마다 클래스 logits를 반환합니다.
logits[0]: benign 클래스 점수 (레이블 ID 0)logits[1]: leakage_risk 클래스 점수 (레이블 ID 1)softmax를 적용해 클래스 확률을 계산합니다. 권장 양성 클래스 확률은 probabilities[1]입니다. 이 값이 결정 임계값 이상이면 해당 청크를 leakage_risk로, 그보다 낮으면 benign으로 분류합니다.
다중 청크 문서에서는 프로젝트 파이프라인이 청크 점수의 최댓값을 문서 위험 점수로 사용한 뒤 동일한 임계값을 적용합니다. 모델 자체는 여러 청크를 집계하지 않습니다.
transformers, torchAutoTokenizer와 AutoModelForSequenceClassification 인터페이스를 사용하며, trust_remote_code나 커스텀 Python 코드가 필요하지 않습니다.model.eval()을 호출하고, 운영 추론에서는 gradient 계산을 비활성화합니다.truncation=True, padding=True, max_length=256입니다.querypieai/dlp-tier2-ko-electra-auto-f2 저장소 ID를 사용합니다. 오프라인 사용 시 이 모델카드가 포함된 로컬 디렉터리 경로를 사용합니다.0.3025619248임계값은 검증 데이터에서 recall_min=0.9, false_positive_rate_max=0.2 제약이 있는 F2 목표로 선택했습니다. 임계값은 모델 보정 파라미터가 아니라 확률 계산 이후에 적용하는 정책 결정입니다.
monologg/koelectra-small-v3-discriminator25,979 / 3,775 / 3,772 문서leakage_risk) 비율: 학습 6.94%, 검증 9.99%, 테스트 9.97%04.191505350515941e-053252560.010.0임계값 0.30에서 테스트 성능:
| 지표 | 값 |
|---|---|
| Accuracy | 0.9894 |
| Precision | 0.9264 |
| Recall | 0.9707 |
| F1 | 0.9481 |
| F2 | 0.9615 |
| False positive rate | 0.0085 |
| False negative rate | 0.0293 |
선택된 임계값과 최종 구성에서 검증 성능:
| 지표 | 값 |
|---|---|
| Accuracy | 0.9605 |
| Precision | 0.7209 |
| Recall | 0.9867 |
| F1 | 0.8331 |
| F2 | 0.9190 |
| False positive rate | 0.0424 |
| False negative rate | 0.0133 |
검증과 테스트 F1 차이가 큽니다. 운영 차단 기준으로 사용하기 전에 분할별 문체 편차와 그룹 구성을 점검해야 합니다.
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
model_id = "querypieai/dlp-tier2-ko-electra-auto-f2"
threshold = 0.30
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
model.eval()
text = "여기에 검사할 문장을 입력합니다."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=256, padding=True)
with torch.no_grad():
logits = model(**inputs).logits
positive_probability = torch.softmax(logits, dim=-1)[0, 1].item()
prediction = "leakage_risk" if positive_probability >= threshold else "benign"
print({"score": positive_probability, "prediction": prediction})