68 lines
3.6 KiB
Markdown
68 lines
3.6 KiB
Markdown
# 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%)** |