Proyek ini merupakan Ujian Akhir Praktikum (UAP) mata kuliah Pembelajaran Mesin, yang berfokus pada klasifikasi teks SMS spam dan ham menggunakan tiga pendekatan model, yaitu:
- Neural Network Base (Non-Pretrained β LSTM)
- Pretrained Model 1 β DistilBERT
- Pretrained Model 2 β BERT
Selain pelatihan dan evaluasi model, proyek ini juga dilengkapi dengan dashboard interaktif menggunakan Streamlit untuk melakukan inferensi dan analisis performa model.
- Nama : Khairy Zhafran H. Kastella
- NIM : 202210370311439
- Mata Kuliah : Pembelajaran Mesin
- Universitas : Universitas Negeri Malang
π¦ Praktikum-Text-UAP
β
βββ data/
β βββ spam.csv
β
βββ file_ipynb/
β βββ Model_Bert_UAP_Machine_Learning.ipynb
β βββ Model_Distilbert_UAP_Machine_Learning.ipynb
β βββ Model_LSTM_UAP_Machine_Learning.ipynb
β
βββ model_nn_base/
β βββ model_lstm.pth
β βββ tokenizer.pkl
β
βββ model_distilbert/
β βββ config.json
β βββ model.safetensors
β βββ tokenizer.json
β
βββ model_bert/
β βββ config.json
β βββ model.safetensors
β βββ tokenizer.json
β
βββ train_lstm.py
βββ train_distilbert.py
βββ train_bert.py
β
βββ evaluate_lstm.py
βββ evaluate_distilbert.py
βββ evaluate_bert.py
β
βββ app.py
βββ requirements.txt
βββ pyproject.toml
βββ README.md
Proyek ini menggunakan dataset SMS Spam Collection Dataset dari Kaggle.
-
Sumber Dataset
π https://www.kaggle.com/datasets/uciml/sms-spam-collection-dataset -
Jumlah Data : 5.574 SMS
-
Label :
hamβ SMS normalspamβ SMS spam
| Label | Teks |
|---|---|
| ham | Go until jurong point, crazy.. Available only in bugis |
| spam | Free entry in a weekly competition to win FA Cup tickets |
Langkah preprocessing yang dilakukan:
- Encoding label (
ham = 0,spam = 1) - Pembersihan teks dasar
- Tokenisasi:
- TF-IDF untuk model NN Base
- Tokenizer Transformer untuk DistilBERT dan BERT
- Padding & truncation (max length = 128)
- Embedding Layer
- LSTM Layer
- Fully Connected Layer
- Sigmoid Output
- Dilatih dari awal tanpa pretrained weight
Kelebihan:
- Lebih ringan
- Mudah dipahami
- Cocok untuk baseline
- Model Transformer ringan
- Transfer learning dari
distilbert-base-uncased - Fine-tuning pada dataset SMS Spam
Kelebihan:
- Lebih cepat dari BERT
- Akurasi tinggi
- Lebih efisien untuk deployment
- Model Transformer penuh
- Transfer learning dari
bert-base-uncased - Representasi konteks teks lebih kaya
Kelebihan:
- Akurasi tertinggi
- Pemahaman konteks lebih baik
Evaluasi dilakukan menggunakan:
- Classification Report
- Accuracy
- Precision
- Recall
- F1-Score
- Confusion Matrix
- Grafik Loss dan Accuracy
| Model | Accuracy |
|---|---|
| LSTM (NN Base) | ~87% |
| DistilBERT | ~96% |
| BERT | ~97% |
π Model pretrained menunjukkan performa yang lebih baik dibandingkan model non-pretrained.
- Grafik Training Loss vs Epoch
- Grafik Accuracy vs Epoch
Grafik menunjukkan bahwa BERT memiliki performa terbaik, diikuti oleh DistilBERT, sedangkan LSTM digunakan sebagai baseline non-pretrained.
Training Loss & Accuracy
Model LSTM menunjukkan proses pembelajaran yang stabil, namun performanya masih terbatas dibanding model pretrained karena keterbatasan pemahaman konteks bahasa.
Confusion Matrix
Masih terdapat kesalahan klasifikasi, terutama pada data spam yang memiliki struktur bahasa mirip pesan normal.
Training Loss & Accuracy
Kurva training menunjukkan konvergensi yang baik dan stabil. DistilBERT mampu belajar lebih cepat dengan performa yang mendekati BERT.
Confusion Matrix
Mayoritas prediksi berada pada diagonal utama, menandakan performa klasifikasi yang kuat dan konsisten.
Training Loss & Accuracy
BERT menunjukkan akurasi tertinggi dengan loss paling rendah, menandakan pemahaman konteks teks yang sangat baik.
Confusion Matrix
Hampir seluruh prediksi berada pada diagonal utama, menunjukkan performa klasifikasi terbaik di antara ketiga model.
Dashboard menyediakan fitur:
- Pilih model (LSTM / DistilBERT / BERT)
- Input teks SMS
- Prediksi real-time
- Tampilan hasil dengan:
- π₯ Background merah untuk SPAM
- π© Background hijau untuk HAM
- Informasi jumlah total data
git clone https://github.com/username/Praktikum-Text-UAP.git
cd Praktikum-Text-UAPpip install -r requirements.txtatau menggunakan PDM:
pdm installstreamlit run app.pyπ Belum tersedia / Opsional
- Model pretrained (DistilBERT & BERT) memberikan performa terbaik
- LSTM tetap layak sebagai baseline
- Streamlit mempermudah analisis dan presentasi model
- Transfer learning sangat efektif untuk klasifikasi teks
Proyek ini dibuat untuk keperluan akademik dan pembelajaran, bukan untuk penggunaan komersial.
β Jangan lupa beri star jika repository ini membantu!






