donghyun95 commited on
Commit
c63243b
ยท
verified ยท
1 Parent(s): 85e386d

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +130 -130
README.md CHANGED
@@ -1,130 +1,130 @@
1
- ---
2
- language:
3
- - ko
4
- tags:
5
- - security
6
- - smishing-detection
7
- - roberta
8
- - text-classification
9
- pipeline_tag: text-classification
10
- license: mit
11
- base_model: klue/roberta-base
12
- metrics:
13
- - f1
14
- - precision
15
- - recall
16
- ---
17
-
18
- # Smishing Detection RoBERTa Base ๐Ÿ›ก๏ธ๐Ÿ“ฑ
19
-
20
- ## ๐Ÿ“‘ Model Description
21
-
22
- ์ด ๋ชจ๋ธ์€ **์Šค๋ฏธ์‹ฑ(Smishing, SMS Phishing)** ๋ฌธ์ž๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `klue/roberta-base`๋ฅผ ํŒŒ์ธํŠœ๋‹(Fine-tuning)ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
23
- ํ•œ๊ตญ์–ด ๋ฌธ์ž ๋ฉ”์‹œ์ง€์˜ ๋ฌธ๋งฅ์„ ๋ถ„์„ํ•˜์—ฌ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ์ •์ƒ์ ์ธ ๋Œ€ํ™”์ธ์ง€, ์•„๋‹ˆ๋ฉด ์•…์˜์ ์ธ ์Šค๋ฏธ์‹ฑ ์‹œ๋„์ธ์ง€ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
24
-
25
- ์ด ๋ชจ๋ธ์€ **"Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System"** ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์ตœ์‹  ๋‰ด์Šค ๊ธฐ๋ฐ˜์˜ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค(Red Team)์™€ ์ด์— ๋Œ€์‘ํ•˜๋Š” ๋ฐฉ์–ด ์‹œ์Šคํ…œ(Blue Team) ๊ฐ„์˜ ์ ๋Œ€์  ํ•™์Šต(Adversarial Training)์„ ํ†ตํ•ด ์„ฑ๋Šฅ์ด ๊ณ ๋„ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
26
-
27
- - **Developed by:** Donghyun Hwang (and Smishing Forecast Team)
28
- - **Model Type:** Text Classification (Binary)
29
- - **Language:** Korean
30
- - **Base Model:** [klue/roberta-base](https://huggingface.co/klue/roberta-base)
31
-
32
- ## ๐ŸŽฏ Intended Uses & Limitations
33
-
34
- ### ์‚ฌ์šฉ ๋ชฉ์  (Intended Use)
35
- - **์Šค๋ฏธ์‹ฑ ํƒ์ง€**: SMS, ๋ฉ”์‹ ์ € ๋“ฑ์—์„œ ์ˆ˜์‹ ๋œ ํ…์ŠคํŠธ๊ฐ€ ์Šค๋ฏธ์‹ฑ์ธ์ง€ ํŒ๋ณ„
36
- - **๋ณด์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**: ๋ชจ๋ฐ”์ผ ๋ณด์•ˆ ์•ฑ, ์ŠคํŒธ ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์˜ ๋ฐฑ์—”๋“œ ๋ชจ๋ธ
37
- - **๊ธˆ์œต ์‚ฌ๊ธฐ ์˜ˆ๋ฐฉ**: ์€ํ–‰ ์‚ฌ์นญ, ๋Œ€์ถœ ์‚ฌ๊ธฐ, ์นด์นด์˜คํ†ก ์ง€์ธ ์‚ฌ์นญ ๋“ฑ์˜ ํƒ์ง€
38
-
39
- ### ์ œํ•œ ์‚ฌํ•ญ (Limitations)
40
- - **๋ฐ์ดํ„ฐ ํŽธํ–ฅ**: ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ๋Œ€๋ถ€๋ถ„์ด GPT-4๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ **ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ(Synthetic Data)**์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ๋ฆฌ์–ผ์›”๋“œ ๋ฐ์ดํ„ฐ(Wild Data)์— ๋Œ€ํ•ด์„œ๋Š” ์„ฑ๋Šฅ์ด ๋‹ค์†Œ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Overfitting possibility).
41
- - **์ตœ์‹  ๊ณต๊ฒฉ ์œ ํ˜•**: ํ•™์Šต๋˜์ง€ ์•Š์€ ์‹ ์ข… ๊ณต๊ฒฉ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ๋Š” ํƒ์ง€์œจ์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
42
-
43
- ## ๐Ÿ“š Training Data
44
-
45
- ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” **GPT-4**๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ 3,000๊ฑด ์ด์ƒ์˜ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
46
- - **Normal (Label 0)**: ์ผ์ƒ ๋Œ€ํ™”, ํƒ๋ฐฐ ์•Œ๋ฆผ, ์นด๋“œ ๊ฒฐ์ œ ๋ฌธ์ž, ๊ธฐ์ƒ์ฒญ ์•Œ๋ฆผ ๋“ฑ
47
- - **Smishing (Label 1)**:
48
- - ์ •๋ถ€ ๊ธฐ๊ด€ ์‚ฌ์นญ (์ง€์›๊ธˆ์‹ ์ฒญ ๋“ฑ)
49
- - ๊ฐ€์กฑ/์ง€์ธ ์‚ฌ์นญ (์•ก์ • ํŒŒ์†, ๊ธ‰์ „ ์š”์ฒญ)
50
- - ๊ธˆ์œต ๊ธฐ๊ด€ ์‚ฌ์นญ (์ €๊ธˆ๋ฆฌ ๋Œ€์ถœ, ํ—ˆ์œ„ ๊ฒฐ์ œ ์Šน์ธ)
51
- - ๊ฒฝ์กฐ์‚ฌ ์‚ฌ์นญ (๋ชจ๋ฐ”์ผ ์ฒญ์ฒฉ์žฅ, ๋ถ€๊ณ ์žฅ)
52
-
53
- ## ๐Ÿ“Š Evaluation Results
54
-
55
- ํ•ฉ์„ฑ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹(100๊ฑด) ๊ธฐ์ค€ ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค.
56
- *(์ฃผ์˜: ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์— ์ตœ์ ํ™”๋œ ๊ฒฐ๊ณผ์ด๋ฏ€๋กœ ์‹ค์ œ ํ™˜๊ฒฝ ์„ฑ๋Šฅ๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)*
57
-
58
- | Metric | Score |
59
- | :--- | :--- |
60
- | **Precision** | 1.00 |
61
- | **Recall** | 1.00 |
62
- | **F1-Score** | 1.00 |
63
-
64
- ## ๐Ÿš€ How to Use
65
-
66
- Python์˜ `transformers` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
67
-
68
- ```python
69
- from transformers import AutoTokenizer, AutoModelForSequenceClassification
70
- import torch
71
- import re
72
-
73
- # 1. ๋ชจ๋ธ๊ณผ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ
74
- model_name = "donghyun95/smishing-detection-roberta-base"
75
- tokenizer = AutoTokenizer.from_pretrained(model_name)
76
- model = AutoModelForSequenceClassification.from_pretrained(model_name)
77
-
78
- # 2. ์ „์ฒ˜๋ฆฌ ํ•จ์ˆ˜ (ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ ๋“ฑ ๊ถŒ์žฅ)
79
- def preprocess(text):
80
- text = re.sub(r'[^๊ฐ€-ํžฃa-zA-Z0-9\s]', '', text) # ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ
81
- return text.strip()
82
-
83
- # 3. ์˜ˆ์ธก ํ•จ์ˆ˜
84
- def predict_smishing(text):
85
- clean_text = preprocess(text)
86
- inputs = tokenizer(clean_text, return_tensors="pt", truncation=True, max_length=128)
87
-
88
- with torch.no_grad():
89
- outputs = model(**inputs)
90
-
91
- probs = torch.softmax(outputs.logits, dim=1)
92
- smishing_prob = probs[0][1].item() # Label 1์ด ์Šค๋ฏธ์‹ฑ
93
-
94
- return smishing_prob
95
-
96
- # 4. ํ…Œ์ŠคํŠธ
97
- sample_text = "์—„๋งˆ ๋‚˜ ํฐ ๊ณ ์žฅ๋‚˜์„œ ์ˆ˜๋ฆฌ๋งก๊ฒผ์–ด. ์ด ๋ฒˆํ˜ธ๋กœ ๋ฌธ์ž์ค˜."
98
- probability = predict_smishing(sample_text)
99
-
100
- print(f"์Šค๋ฏธ์‹ฑ ํ™•๋ฅ : {probability * 100:.2f}%")
101
- if probability > 0.7:
102
- print("๐Ÿšจ ์Šค๋ฏธ์‹ฑ ์˜์‹ฌ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค!")
103
- else:
104
- print("โœ… ์ •์ƒ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค.")
105
- ```
106
-
107
- ## โš ๏ธ Disclaimer
108
- ์ด ๋ชจ๋ธ์€ ์—ฐ๊ตฌ ๋ฐ ๊ต์œก ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธˆ์œต ๊ฑฐ๋ž˜๋‚˜ ๋ณด์•ˆ ์‹œ์Šคํ…œ์— ๋‹จ๋…์œผ๋กœ ์˜์กดํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์œ„ํ—˜์ด ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด์กฐ์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
109
-
110
- ## ๐Ÿ–Š๏ธ Citation
111
-
112
- If you use this model in your research or project, please cite it as follows:
113
-
114
- **BibTeX:**
115
- ```bibtex
116
- @misc{smishing-forecast-2026,
117
- author = {Hwang, Donghyun and Cho, Eunkyung and Ahn, Seongmin and Hwang, Seonwoo},
118
- title = {Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System},
119
- year = {2026},
120
- publisher = {GitHub},
121
- journal = {GitHub repository},
122
- howpublished = {\url{https://github.com/DongHyun925/SmishingForecast}}
123
- }
124
- ```
125
-
126
- **APA:**
127
- Hwang, D., Cho, E., Ahn, S., & Hwang, S. (2026). *Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System*. GitHub. https://github.com/DongHyun925/SmishingForecast
128
-
129
- ## ๐Ÿ“œ License
130
- [MIT License](https://opensource.org/licenses/MIT)
 
1
+ ---
2
+ language:
3
+ - ko
4
+ tags:
5
+ - security
6
+ - smishing-detection
7
+ - roberta
8
+ - text-classification
9
+ pipeline_tag: text-classification
10
+ license: mit
11
+ base_model: klue/roberta-base
12
+ metrics:
13
+ - f1
14
+ - precision
15
+ - recall
16
+ ---
17
+
18
+ # Smishing Detection RoBERTa Base ๐Ÿ›ก๏ธ๐Ÿ“ฑ
19
+
20
+ ## ๐Ÿ“‘ Model Description
21
+
22
+ ์ด ๋ชจ๋ธ์€ **์Šค๋ฏธ์‹ฑ(Smishing, SMS Phishing)** ๋ฌธ์ž๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `klue/roberta-base`๋ฅผ ํŒŒ์ธํŠœ๋‹(Fine-tuning)ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
23
+ ํ•œ๊ตญ์–ด ๋ฌธ์ž ๋ฉ”์‹œ์ง€์˜ ๋ฌธ๋งฅ์„ ๋ถ„์„ํ•˜์—ฌ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ์ •์ƒ์ ์ธ ๋Œ€ํ™”์ธ์ง€, ์•„๋‹ˆ๋ฉด ์•…์˜์ ์ธ ์Šค๋ฏธ์‹ฑ ์‹œ๋„์ธ์ง€ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
24
+
25
+ ์ด ๋ชจ๋ธ์€ **"Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System"** ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์ตœ์‹  ๋‰ด์Šค ๊ธฐ๋ฐ˜์˜ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค(Red Team)์™€ ์ด์— ๋Œ€์‘ํ•˜๋Š” ๋ฐฉ์–ด ์‹œ์Šคํ…œ(Blue Team) ๊ฐ„์˜ ์ ๋Œ€์  ํ•™์Šต(Adversarial Training)์„ ํ†ตํ•ด ์„ฑ๋Šฅ์ด ๊ณ ๋„ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
26
+
27
+ - **Developed by:** Donghyun Hwang (and Smishing Forecast Team)
28
+ - **Model Type:** Text Classification (Binary)
29
+ - **Language:** Korean
30
+ - **Base Model:** [klue/roberta-base](https://huggingface.co/klue/roberta-base)
31
+
32
+ ## ๐ŸŽฏ Intended Uses & Limitations
33
+
34
+ ### ์‚ฌ์šฉ ๋ชฉ์  (Intended Use)
35
+ - **์Šค๋ฏธ์‹ฑ ํƒ์ง€**: SMS, ๋ฉ”์‹ ์ € ๋“ฑ์—์„œ ์ˆ˜์‹ ๋œ ํ…์ŠคํŠธ๊ฐ€ ์Šค๋ฏธ์‹ฑ์ธ์ง€ ํŒ๋ณ„
36
+ - **๋ณด์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**: ๋ชจ๋ฐ”์ผ ๋ณด์•ˆ ์•ฑ, ์ŠคํŒธ ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์˜ ๋ฐฑ์—”๋“œ ๋ชจ๋ธ
37
+ - **๊ธˆ์œต ์‚ฌ๊ธฐ ์˜ˆ๋ฐฉ**: ์€ํ–‰ ์‚ฌ์นญ, ๋Œ€์ถœ ์‚ฌ๊ธฐ, ์นด์นด์˜คํ†ก ์ง€์ธ ์‚ฌ์นญ ๋“ฑ์˜ ํƒ์ง€
38
+
39
+ ### ์ œํ•œ ์‚ฌํ•ญ (Limitations)
40
+ - **๋ฐ์ดํ„ฐ ํŽธํ–ฅ**: ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ๋Œ€๋ถ€๋ถ„์ด GPT-4๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ **ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ(Synthetic Data)**์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ๋ฆฌ์–ผ์›”๋“œ ๋ฐ์ดํ„ฐ(Wild Data)์— ๋Œ€ํ•ด์„œ๋Š” ์„ฑ๋Šฅ์ด ๋‹ค์†Œ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Overfitting possibility).
41
+ - **์ตœ์‹  ๊ณต๊ฒฉ ์œ ํ˜•**: ํ•™์Šต๋˜์ง€ ์•Š์€ ์‹ ์ข… ๊ณต๊ฒฉ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ๋Š” ํƒ์ง€์œจ์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
42
+
43
+ ## ๐Ÿ“š Training Data
44
+
45
+ ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” **GPT-4**๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ 3,000๊ฑด ์ด์ƒ์˜ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
46
+ - **Normal (Label 0)**: ์ผ์ƒ ๋Œ€ํ™”, ํƒ๋ฐฐ ์•Œ๋ฆผ, ์นด๋“œ ๊ฒฐ์ œ ๋ฌธ์ž, ๊ธฐ์ƒ์ฒญ ์•Œ๋ฆผ ๋“ฑ
47
+ - **Smishing (Label 1)**:
48
+ - ์ •๋ถ€ ๊ธฐ๊ด€ ์‚ฌ์นญ (์ง€์›๊ธˆ์‹ ์ฒญ ๋“ฑ)
49
+ - ๊ฐ€์กฑ/์ง€์ธ ์‚ฌ์นญ (์•ก์ • ํŒŒ์†, ๊ธ‰์ „ ์š”์ฒญ)
50
+ - ๊ธˆ์œต ๊ธฐ๊ด€ ์‚ฌ์นญ (์ €๊ธˆ๋ฆฌ ๋Œ€์ถœ, ํ—ˆ์œ„ ๊ฒฐ์ œ ์Šน์ธ)
51
+ - ๊ฒฝ์กฐ์‚ฌ ์‚ฌ์นญ (๋ชจ๋ฐ”์ผ ์ฒญ์ฒฉ์žฅ, ๋ถ€๊ณ ์žฅ)
52
+
53
+ ## ๐Ÿ“Š Evaluation Results
54
+
55
+ ํ•ฉ์„ฑ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹(100๊ฑด) ๊ธฐ์ค€ ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค.
56
+ *(์ฃผ์˜: ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์— ์ตœ์ ํ™”๋œ ๊ฒฐ๊ณผ์ด๋ฏ€๋กœ ์‹ค์ œ ํ™˜๊ฒฝ ์„ฑ๋Šฅ๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)*
57
+
58
+ | Metric | Score |
59
+ | :--- | :--- |
60
+ | **Precision** | 1.00 |
61
+ | **Recall** | 1.00 |
62
+ | **F1-Score** | 1.00 |
63
+
64
+ ## ๐Ÿš€ How to Use
65
+
66
+ Python์˜ `transformers` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
67
+
68
+ ```python
69
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
70
+ import torch
71
+ import re
72
+
73
+ # 1. ๋ชจ๋ธ๊ณผ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ
74
+ model_name = "donghyun95/smishing-detection-roberta-base"
75
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
76
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
77
+
78
+ # 2. ์ „์ฒ˜๋ฆฌ ํ•จ์ˆ˜ (ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ ๋“ฑ ๊ถŒ์žฅ)
79
+ def preprocess(text):
80
+ text = re.sub(r'[^๊ฐ€-ํžฃa-zA-Z0-9\s]', '', text) # ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ
81
+ return text.strip()
82
+
83
+ # 3. ์˜ˆ์ธก ํ•จ์ˆ˜
84
+ def predict_smishing(text):
85
+ clean_text = preprocess(text)
86
+ inputs = tokenizer(clean_text, return_tensors="pt", truncation=True, max_length=128)
87
+
88
+ with torch.no_grad():
89
+ outputs = model(**inputs)
90
+
91
+ probs = torch.softmax(outputs.logits, dim=1)
92
+ smishing_prob = probs[0][1].item() # Label 1์ด ์Šค๋ฏธ์‹ฑ
93
+
94
+ return smishing_prob
95
+
96
+ # 4. ํ…Œ์ŠคํŠธ
97
+ sample_text = "์—„๋งˆ ๋‚˜ ํฐ ๊ณ ์žฅ๋‚˜์„œ ์ˆ˜๋ฆฌ๋งก๊ฒผ์–ด. ์ด ๋ฒˆํ˜ธ๋กœ ๋ฌธ์ž์ค˜."
98
+ probability = predict_smishing(sample_text)
99
+
100
+ print(f"์Šค๋ฏธ์‹ฑ ํ™•๋ฅ : {probability * 100:.2f}%")
101
+ if probability > 0.7:
102
+ print("๐Ÿšจ ์Šค๋ฏธ์‹ฑ ์˜์‹ฌ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค!")
103
+ else:
104
+ print("โœ… ์ •์ƒ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค.")
105
+ ```
106
+
107
+ ## โš ๏ธ Disclaimer
108
+ ์ด ๋ชจ๋ธ์€ ์—ฐ๊ตฌ ๋ฐ ๊ต์œก ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธˆ์œต ๊ฑฐ๋ž˜๋‚˜ ๋ณด์•ˆ ์‹œ์Šคํ…œ์— ๋‹จ๋…์œผ๋กœ ์˜์กดํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์œ„ํ—˜์ด ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด์กฐ์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
109
+
110
+ ## ๐Ÿ–Š๏ธ Citation
111
+
112
+ If you use this model in your research or project, please cite it as follows:
113
+
114
+ **BibTeX:**
115
+ ```bibtex
116
+ @misc{smishing-forecast-2026,
117
+ author = {Hwang, Donghyun and Cho, Eunkyung and Ahn, Seongmin and Hwang, Sunwoo},
118
+ title = {Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System},
119
+ year = {2026},
120
+ publisher = {GitHub},
121
+ journal = {GitHub repository},
122
+ howpublished = {\url{https://github.com/DongHyun925/SmishingForecast}}
123
+ }
124
+ ```
125
+
126
+ **APA:**
127
+ Hwang, D., Cho, E., Ahn, S., & Hwang, S. (2026). *Smishing Forecast: Self-Evolving AI-Powered Smishing Defense System*. GitHub. https://github.com/DongHyun925/SmishingForecast
128
+
129
+ ## ๐Ÿ“œ License
130
+ [MIT License](https://opensource.org/licenses/MIT)