Aplikasi web berbasis Streamlit untuk melakukan analisis sentimen terhadap teks berbahasa Indonesia, khususnya terkait Program MBG. Aplikasi ini menggunakan algoritma Support Vector Machine (SVM), pembobotan TF-IDF dengan preprocessing teks yang komprehensif (cleaning, casefolding, tokenisasi, normalisasi, stopwords removal, dan stemming).
Go to file
nand999 a2b89a6f1e first commit 2026-05-22 10:25:40 +07:00
nltk_data first commit 2026-05-22 10:25:40 +07:00
.gitignore first commit 2026-05-22 10:25:40 +07:00
LICENSE first commit 2026-05-22 10:25:40 +07:00
README.md first commit 2026-05-22 10:25:40 +07:00
dashboard.py first commit 2026-05-22 10:25:40 +07:00
data_mbg_labelled.csv first commit 2026-05-22 10:25:40 +07:00
generate_test_data.py first commit 2026-05-22 10:25:40 +07:00
mbg_processed.csv first commit 2026-05-22 10:25:40 +07:00
model_metrics.json first commit 2026-05-22 10:25:40 +07:00
requirements.txt first commit 2026-05-22 10:25:40 +07:00
requirements_lama.txt first commit 2026-05-22 10:25:40 +07:00
sentiment_model.pkl first commit 2026-05-22 10:25:40 +07:00
sentiment_model.py first commit 2026-05-22 10:25:40 +07:00
test_valid.csv first commit 2026-05-22 10:25:40 +07:00
test_with_dates.csv first commit 2026-05-22 10:25:40 +07:00

README.md

Analisis Sentimen Program MBG (Makan Bergizi Gratis)

Dashboard analisis sentimen berbahasa Indonesia untuk menganalisis opini publik terhadap Program Makan Bergizi Gratis (MBG) menggunakan Support Vector Machine (SVM) kernel Radial Basis Function (RBF) dan pembobotan TF-IDF.

Deskripsi

Aplikasi web berbasis Streamlit untuk melakukan analisis sentimen terhadap teks berbahasa Indonesia, khususnya terkait Program MBG. Aplikasi ini menggunakan algoritma Support Vector Machine (SVM) dengan preprocessing teks yang komprehensif.

Fitur Utama

1. Dashboard Utama

  • Visualisasi distribusi sentimen (pie chart)
  • Word cloud untuk sentimen positif dan negatif
  • Top 15 kata teratas per sentimen
  • Tampilan dataset training lengkap dengan text wrapping

2. Prediksi Sentimen

  • Input teks manual untuk prediksi real-time
  • Menampilkan confidence score
  • Demo preprocessing step-by-step

3. Analisis CSV Batch

  • Upload file CSV untuk analisis massal
  • Deteksi otomatis kolom tanggal
  • Visualisasi temporal (distribusi per tahun dan bulan)
  • Filter berdasarkan confidence threshold
  • Export hasil ke CSV
  • Interpretasi dan rekomendasi otomatis

4. Demo Preprocessing

  • Visualisasi tahapan preprocessing:
    • Text Cleaning
    • Case Folding
    • Tokenization
    • Normalization
    • Stopwords Removal
    • Stemming

Instalasi

Prasyarat

  • Python 3.8 atau lebih tinggi
  • pip (Python package manager)

Langkah Instalasi

  1. Clone repository:
git clone https://github.com/nand999/analisis-sentimen-mbg.git
cd analisis-sentimen-mbg
  1. Install dependencies:
pip install -r requirements.txt
  1. Download NLTK data (jika belum ada):
python -c "import nltk; nltk.download('punkt')"

Struktur File

analisis-sentimen-mbg/
├── dashboard.py              # Aplikasi Streamlit utama
├── sentiment_model.py        # Model SVM dan preprocessing
├── sentiment_model.pkl       # Model terlatih
├── kolom_lengkap.csv        # Dataset training
├── requirements.txt          # Dependencies Python
├── generate_test_data.py     # Untuk generate data test csv
├── README.md                # Dokumentasi ini

Cara Penggunaan

Menjalankan Dashboard

streamlit run dashboard.py

Dashboard akan terbuka di browser pada http://localhost:8501

Menggunakan Fitur Prediksi

  1. Pilih menu "Prediksi Sentimen"
  2. Masukkan teks dalam bahasa Indonesia
  3. Klik "Prediksi Sentimen"
  4. Lihat hasil prediksi dan confidence score

Analisis CSV Batch

  1. Pilih menu "📁 Analisis CSV"
  2. Upload file CSV dengan kolom text atau full_text
  3. Atur confidence threshold (default: 0.5)
  4. Klik "🚀 Proses Prediksi Sentimen"
  5. Lihat hasil analisis dan visualisasi
  6. Download hasil jika diperlukan

Format CSV untuk Upload

File CSV harus memiliki minimal kolom berikut:

  • text atau full_text: Kolom berisi teks untuk dianalisis

Opsional:

  • created_at atau kolom tanggal lainnya untuk analisis temporal

Contoh:

text,created_at
"Program MBG sangat membantu anak-anak",2025-07-06 10:30:00
"MBG tidak efektif dan boros anggaran",2025-07-07 14:20:00

Preprocessing Pipeline

  1. Text Cleaning: Menghapus URL, mention, hashtag, angka, dan karakter khusus
  2. Case Folding: Mengubah semua teks menjadi lowercase
  3. Tokenization: Memecah teks menjadi token/kata
  4. Normalization: Menormalkan kata-kata tidak baku
  5. Stopwords Removal: Menghapus kata-kata umum yang tidak bermakna
  6. Stemming: Mengubah kata ke bentuk dasarnya menggunakan Sastrawi

Model

  • Algoritma: Support Vector Machine (SVM) dengan kernel Radial Basis Function (RBF)
  • Features: TF-IDF Vectorization
  • Dataset: 1,906 data tweet tentang Program MBG
    • Positif: 793 data
    • Negatif: 1,113 data

Dependencies

  • streamlit >= 1.28.0
  • pandas >= 2.0.0
  • numpy >= 1.24.0
  • scikit-learn >= 1.3.0
  • nltk >= 3.8.0
  • Sastrawi >= 1.0.1
  • plotly >= 5.17.0
  • wordcloud >= 1.9.0
  • matplotlib >= 3.7.0
  • python-dateutil >= 2.8.0

Lihat requirements.txt untuk daftar lengkap.

Catatan Penting

Confidence Threshold

  • Data dengan confidence score di bawah threshold tidak dimasukkan dalam analisis utama
  • Default threshold: 0.5 (50%)
  • Dapat disesuaikan melalui slider di halaman Analisis CSV

Lisensi

MIT License

Acknowledgments

  • Dataset: Twitter/X data tentang Program MBG
  • Sastrawi: Indonesian stemmer library
  • NLTK: Natural Language Toolkit
  • Streamlit: Framework untuk web app