Downloads · 30 days
19
16% of all-time downloads
donghyun95/smishing-detection-roberta-base
smishing-detection-roberta-base is a text classification model from donghyun95. Use it when you need a label for a piece of text. The card lists the license as mit.
이 모델은 스미싱(Smishing, SMS Phishing) 문자를 실시간으로 탐지하기 위해 klue/roberta-base를 파인튜닝(Fine-tuning)한 모델입니다. 한국어 문자 메시지의 문맥을 분석하여 해당 메시지가 정상적인 대화인지, 아니면 악의적인 스미싱 시도인지 분류합니다.
Downloads · 30 days
19
16% of all-time downloads
All-time downloads
119
Public
Parameters
111M
443 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors443 MB · 100%
From the Hugging Face model README
이 모델은 스미싱(Smishing, SMS Phishing) 문자를 실시간으로 탐지하기 위해 klue/roberta-base를 파인튜닝(Fine-tuning)한 모델입니다.
한국어 문자 메시지의 문맥을 분석하여 해당 메시지가 정상적인 대화인지, 아니면 악의적인 스미싱 시도인지 분류합니다.
이 모델은 "Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System" 프로젝트의 일환으로 개발되었으며, 최신 뉴스 기반의 공격 시나리오(Red Team)와 이에 대응하는 방어 시스템(Blue Team) 간의 적대적 학습(Adversarial Training)을 통해 성능이 고도화되었습니다.
학습 데이터는 GPT-4를 활용하여 생성된 3,000건 이상의 합성 데이터셋으로 구성되어 있습니다.
합성 테스트 데이터셋(100건) 기준 성능입니다. (주의: 합성 데이터에 최적화된 결과이므로 실제 환경 성능과는 차이가 있을 수 있습니다.)
| Metric | Score |
|---|---|
| Precision | 1.00 |
| Recall | 1.00 |
| F1-Score | 1.00 |
Python의 transformers 라이브러리를 통해 쉽게 사용할 수 있습니다.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import re
# 1. 모델과 토크나이저 로드
model_name = "donghyun95/smishing-detection-roberta-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 2. 전처리 함수 (특수문자 제거 등 권장)
def preprocess(text):
text = re.sub(r'[^가-힣a-zA-Z0-9\s]', '', text) # 특수문자 제거
return text.strip()
# 3. 예측 함수
def predict_smishing(text):
clean_text = preprocess(text)
inputs = tokenizer(clean_text, return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
smishing_prob = probs[0][1].item() # Label 1이 스미싱
return smishing_prob
# 4. 테스트
sample_text = "엄마 나 폰 고장나서 수리맡겼어. 이 번호로 문자줘."
probability = predict_smishing(sample_text)
print(f"스미싱 확률: {probability * 100:.2f}%")
if probability > 0.7:
print("🚨 스미싱 의심 문자입니다!")
else:
print("✅ 정상 문자입니다.")
이 모델은 연구 및 교육 목적으로 개발되었습니다. 실제 금융 거래나 보안 시스템에 단독으로 의존하여 사용하기에는 위험이 따를 수 있으며, 보조적인 수단으로 활용하는 것을 권장합니다.
If you use this model in your research or project, please cite it as follows:
BibTeX:
@misc{smishing-forecast-2026,
author = {Hwang, Donghyun and Cho, Eunkyung and Ahn, Seongmin and Hwang, Sunwoo},
title = {Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System},
year = {2026},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/DongHyun925/SmishingForecast}}
}
APA: Hwang, D., Cho, E., Ahn, S., & Hwang, S. (2026). Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System. GitHub. https://github.com/DongHyun925/SmishingForecast