Sistem Rekomendasi Jurusan SMK dengan KNN dan NLP
Aplikasi web berbasis Flask yang membantu siswa SMK menentukan jurusan yang sesuai berdasarkan deskripsi bakat dan minat menggunakan algoritma K-Nearest Neighbors (KNN) dan NLP Bahasa Indonesia. Sistem melakukan preprocessing teks (stemming, stopwords removal), vektorisasi TF-IDF, dan klasifikasi KNN untuk menghasilkan rekomendasi 5 jurusan teratas beserta skor kepercayaan.
Source Code
Pendahuluan
Proyek ini adalah sistem rekomendasi jurusan untuk SMK Senopati yang dikembangkan menggunakan Python Flask di sisi backend dan Bootstrap 5 di sisi frontend. Siswa cukup menuliskan deskripsi bebas tentang bakat dan minat mereka dalam Bahasa Indonesia, kemudian sistem akan memproses teks tersebut melalui pipeline NLP (case folding, tokenisasi, stemming dengan Sastrawi, dan stopwords removal), mengonversinya menjadi vektor numerik menggunakan TF-IDF, dan mengklasifikasikannya dengan algoritma K-Nearest Neighbors (k=5). Hasil akhir berupa 5 rekomendasi jurusan teratas dari 5 pilihan jurusan yang tersedia (TKJ, RPL, Manajemen, TKR, TSM) lengkap dengan persentase skor kepercayaan, yang dapat diunduh dalam format PDF.
Fitur
Autentikasi Multi-Role*
ogin dan register dengan dua peran: admin (guru) dan siswa, menggunakan JWT token yang expires dalam 1 jam
Input Data Siswa
Form pendaftaran data pribadi siswa (nama, NISN, jenis kelamin, alamat sekolah) dengan validasi NISN unik
Deskripsi Bakat Bahasa Indonesi
Siswa menuliskan minat dan bakat dalam teks bebas Bahasa Indonesia yang diproses dengan NLP
ekomendasi Jurusan ML
Pipeline machine learning lengkap: preprocessing teks (stemming Sastrawi + stopwords NLTK), vektorisasi TF-IDF, dan klasifikasi KNN (k=5)
Top 5 Hasil dengan Skor*
Menampilkan 5 rekomendasi jurusan teratas (TKJ, RPL, Manajemen, TKR, TSM) dengan persentase kepercayaan
Deteksi Deskripsi Tidak Jelas
Jika skor kepercayaan di bawah threshold 20%, sistem meminta siswa mendeskripsikan bakat dengan lebih jelas
Riwayat Prediksi
Siswa dapat melihat seluruh riwayat hasil rekomendasi yang pernah dibuat
Download PDF
Hasil rekomendasi dapat diunduh dalam format PDF menggunakan jsPDF dengan tabel skor
Manajemen Data oleh Admin
Admin (guru) dapat melihat seluruh data siswa beserta rekomendasi jurusan, mengedit, dan menghapus data
Dataset 2000 Data Training
Model dilatih dengan 2000 sampel data narasi dan jurusan yang disimpan dalam file Excel - **Dashboard Visual** — Tampilan dashboard dengan DataTables untuk tabel interaktif dan ApexCharts untuk visualisasi data
How to Start this project
1. Clone using git
git clone https://github.com/username/knn-nlp.git2. Install dependencies
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows pip install -r requirements.txt # Setup database MySQL cp .env.example .env # Isi DATABASE_URL dan JWT_SECRET_KEY di .env # Jalankan migrasi database flask db upgrade3. Run development server
python app.py # atau flask run --debug