# Analisis Sentimen Lengkap (GAP Model) ## 1. Distribusi Label Data Dataset ulasan Tokopedia dari Hugging Face (`farhamu/tokopedia-product-reviews-2019`) berisi 40.607 baris ulasan. Setelah membersihkan rating netral (rating 3 sebanyak 1.823 baris), tersisa **38.784 ulasan** dengan pembagian: - **Label 1 (Positif):** Ulasan dengan rating 4 dan 5 (37.860 sampel / ~97,62%) - **Label 0 (Negatif):** Ulasan dengan rating 1 dan 2 (924 sampel / ~2,38%) Dataset kemudian dibagi menjadi **80% data latih (31.027 ulasan)** dan **20% data uji (7.757 ulasan)** secara bertingkat (*stratified*). Grafik distribusi label telah disimpan pada direktori `results/03_nlp_sentiment/figures/distribusi_label_sentimen.png`. --- ## 2. Training History Model `Sentimen_GAP` dibangun dengan arsitektur: `Embedding(10000, 64) -> GlobalAveragePooling1D -> Dense(32, relu) -> Dropout(0.3) -> Dense(1, sigmoid)` Dilatih menggunakan *Optimizer* Adam, *Loss Function* `binary_crossentropy`, serta *callback* `EarlyStopping` (patience = 4). Kurva performa pelatihan (*Training vs Validation Accuracy & Loss*) disimpan pada berkas `results/03_nlp_sentiment/figures/histori_gap_sentimen.png`. - **Pengamatan:** Model belajar dengan stabil tanpa terjadi indikasi *overfitting* yang signifikan karena perbedaan antara *Training Accuracy* (~98%) dan *Validation Accuracy* (~97.8%) relatif kecil dan konvergen. --- ## 3. Classification Report & Confusion Matrix (GAP Evaluation) ### Classification Report pada Test Set (7.757 Ulasan): Laporan evaluasi lengkap disimpan pada `results/03_nlp_sentiment/reports/classification_report_gap_sentimen.txt`. | Kelas | Precision | Recall | F1-Score | Support | | :--- | :---: | :---: | :---: | :---: | | **Negatif (0)** | 0.59 | 0.22 | 0.32 | 185 | | **Positif (1)** | 0.98 | 1.00 | 0.99 | 7.572 | | **Accuracy** | | | **97.6% (0.98)** | 7.757 | | **Macro Avg** | 0.78 | 0.61 | 0.65 | 7.757 | | **Weighted Avg** | 0.97 | 0.98 | 0.97 | 7.757 | ### Analisis Ketimpangan Data (*Imbalance*): Karena kelas positif jauh mendominasi (97,6% ulasan Tokopedia bersifat positif), model mencetak akurasi keseluruhan yang sangat tinggi (97,6%), namun memiliki recall lebih rendah pada kelas minoritas negatif (22%). Untuk meningkatkan sensitivitas terhadap komplain pelanggan negatif, penyesuaian bobot kelas (*class weights*) atau teknik *oversampling* dapat diterapkan pada tahap iterasi berikutnya. ### Confusion Matrix: Visualisasi confusion matrix telah disimpan pada berkas `results/03_nlp_sentiment/figures/confusion_matrix_gap_sentimen.png`. Matrix ini menunjukkan jumlah prediksi *True Positive*, *True Negative*, *False Positive*, dan *False Negative* pada data uji. --- ## 4. Hasil Prediksi 5 Ulasan Custom (Inference) Berikut adalah hasil pengujian model pada 5 ulasan buatan sendiri: 1. **Ulasan:** *"Produk berkualitas tinggi, pengiriman cepat, packing aman!"* - **Prediksi:** **POSITIF** - **Confidence:** **0.985 (98.5%)** 2. **Ulasan:** *"Kecewa banget, barang datang rusak dan customer service tidak responsif"* - **Prediksi:** **NEGATIF** - **Confidence:** **0.042** (Probabilitas Positif: 4.2%, Keyakinan Negatif: **95.8%**) 3. **Ulasan:** *"Lumayan sih, tapi harganya kemahalan untuk kualitas segitu"* - **Prediksi:** **NEGATIF** - **Confidence:** **0.380** (Probabilitas Positif: 38.0%, Keyakinan Negatif: **62.0%**) 4. **Ulasan:** *"Tidak sesuai deskripsi sama sekali, mau return tapi ribet"* - **Prediksi:** **NEGATIF** - **Confidence:** **0.065** (Probabilitas Positif: 6.5%, Keyakinan Negatif: **93.5%**) 5. **Ulasan:** *"Barang bagus, sesuai dengan foto dan penjual sangat ramah"* - **Prediksi:** **POSITIF** - **Confidence:** **0.989 (98.9%)**