--- title: SMS Spam Classifier emoji: 📩 colorFrom: pink colorTo: red sdk: gradio sdk_version: 5.31.0 app_file: app.py pinned: false --- # 📩 SMS Spam Classifier with MLflow Model Versioning Đây là một demo triển khai mô hình phân loại tin nhắn rác (spam) sử dụng **Gradio** và **MLflow Model Registry**, với khả năng chọn phiên bản mô hình để phục vụ. --- ## 🚀 Mục tiêu * Áp dụng kiến thức về **MLflow Model Versioning** * So sánh các mô hình huấn luyện khác nhau (nhiều version) * Triển khai online miễn phí bằng Hugging Face Spaces --- ## 📦 Dataset Dữ liệu được sử dụng là **SMS Spam Collection Dataset**, bao gồm hơn 5.000 tin nhắn đã được phân loại sẵn là `ham` (hợp lệ) hoặc `spam`. --- ## 🧐 Mô hình Các phiên bản được huấn luyện với pipeline gồm: * `TfidfVectorizer`: để chuyển văn bản thành vector đặc trưng * `Multinomial Naive Bayes`: mô hình phân loại đơn giản nhưng hiệu quả Các version chỉ khác nhau về giá trị `alpha` (tham số làm trơn trong Naive Bayes): * `model_spam_v1.pkl`: alpha = 1.0 * `model_spam_v2.pkl`: alpha = 0.5 * `model_spam_v3.pkl`: alpha = 0.3 --- ## 🧪 Hướng dẫn sử dụng 1. Nhập nội dung tin nhắn cần phân loại 2. Chọn phiên bản mô hình (v1, v2, hoặc v3) 3. Nhấn **Dự đoán** 4. Ứng dụng sẽ trả về kết quả: `Spam ❌` hoặc `Ham ✅` và độ tin cậy --- ## 📌 Công nghệ sử dụng * 🦍 Python * 📊 Scikit-learn * 📦 MLflow (log model & versioning) * 🎨 Gradio (UI) * ☁️ Hugging Face Spaces (hosting) --- ## 💻 Chạy offline trên máy local Nếu bạn muốn chạy ứng dụng trên máy cá nhân, làm theo các bước sau: ### 🔧 1. Tạo môi trường ảo (virtual environment) **Windows:** ```bash python -m venv .venv .venv\Scripts\activate ``` **macOS/Linux:** ```bash python3 -m venv .venv source .venv/bin/activate ``` --- ### 📦 2. Cài đặt thư viện ```bash pip install -r requirements.txt ``` --- ### ▶️ 3. Chạy ứng dụng Gradio ```bash python app.py ``` Ứng dụng sẽ chạy tại địa chỉ: [http://localhost:7860](http://localhost:7860) --- ### 📁 Cấu trúc thư mục mẫu ``` mlflow-spam-classifier/ ├── app.py ├── requirements.txt ├── model_spam_v1.pkl ├── model_spam_v2.pkl ├── model_spam_v3.pkl ├── README.md └── train_spam_model.py (tuỳ chọn) ``` --- ✅ Sau khi chạy xong, bạn có thể nhập nội dung tin nhắn và chọn phiên bản mô hình để dự đoán trực tiếp mà không cần kết nối Internet.