Skip to content

Repository files navigation

🎨 Analisis Sentimen Review Canva – Google Play Store

Python TensorFlow PyTorch HuggingFace Status

Proyek analisis sentimen berbasis deep learning dan transformer untuk mengklasifikasikan ulasan pengguna aplikasi Canva di Google Play Store ke dalam tiga kelas sentimen: Positif, Netral, dan Negatif.


πŸ“‹ Daftar Isi


πŸ“Œ Deskripsi Proyek

Proyek ini membangun pipeline end-to-end analisis sentimen ulasan pengguna Canva menggunakan empat pendekatan model:

Model Jenis Split
LSTM Recurrent Neural Network 80/20
BiLSTM Bidirectional LSTM 70/30
GRU Gated Recurrent Unit 80/20
IndoBERT Transformer (fine-tuning) 80/10/10

Pelabelan sentimen dilakukan menggunakan metode lexicon (bukan rating bintang), sehingga label lebih mencerminkan isi teks review secara akurat.


πŸ“¦ Dataset

Keterangan Jumlah
Data mentah hasil scraping 25.000 review
Setelah hapus duplikat & kosong 14.397 review
Setelah filter bahasa Indonesia 10.837 review
Setelah Random Oversampling 23.877 review

Distribusi sentimen (sebelum oversampling):

Kelas Jumlah Proporsi
😊 Positif 7.959 73,44%
😞 Negatif 2.165 19,98%
😐 Netral 713 6,58%

Data diperoleh dari hasil scraping Google Play Store (com.canva.editor) hingga Maret 2026 menggunakan google-play-scraper.


πŸ”§ Pipeline

Raw Data (25.000)
      ↓
Hapus duplikat & null β†’ 14.397
      ↓
Filter bahasa Indonesia (langdetect) β†’ 10.837
      ↓
Text Preprocessing
  β”œβ”€β”€ Lowercase & hapus emoji
  β”œβ”€β”€ Hapus URL, mention, hashtag
  β”œβ”€β”€ Normalisasi slang (15.272 kata dari JSON)
  β”œβ”€β”€ Hapus stopwords (pertahankan negasi)
  └── Stemming Sastrawi (skip PRESERVE_WORDS)
      ↓
Labeling Sentimen (Lexicon-based)
  β”œβ”€β”€ Leksikon positif: 3.607 kata
  β”œβ”€β”€ Leksikon negatif: 6.606 kata
  └── Penanganan negasi (tidak, bukan, jangan, dll)
      ↓
Random Oversampling β†’ 23.877 (balanced 3 kelas)
      ↓
Training: LSTM | BiLSTM | GRU | IndoBERT
      ↓
Evaluasi & Perbandingan Model

πŸ† Model & Hasil

Perbandingan Akurasi

Model Test Accuracy F1-Score (Macro) Split
πŸ₯‡ IndoBERT 98,07% 0,98 80/10/10
πŸ₯ˆ BiLSTM 95,41% 0,95 70/30
πŸ₯‰ LSTM 94,43% 0,94 80/20
GRU 93,57% 0,94 80/20

Classification Report per Model

IndoBERT (98,07%)
              precision    recall  f1-score   support

     negatif       0.97      0.99      0.98       796
      netral       0.98      1.00      0.99       796
     positif       0.99      0.95      0.97       796

    accuracy                           0.98      2388
   macro avg       0.98      0.98      0.98      2388
BiLSTM (95,41%)
              precision    recall  f1-score   support

     negatif       0.94      0.96      0.95      2388
      netral       0.95      0.98      0.97      2388
     positif       0.98      0.92      0.94      2388

    accuracy                           0.95      7164
   macro avg       0.95      0.95      0.95      7164
LSTM (94,43%)
              precision    recall  f1-score   support

     negatif       0.92      0.96      0.94      1592
      netral       0.95      0.99      0.97      1592
     positif       0.97      0.89      0.92      1592

    accuracy                           0.94      4776
   macro avg       0.95      0.94      0.94      4776
GRU (93,57%)
              precision    recall  f1-score   support

     negatif       0.91      0.96      0.94      1592
      netral       0.93      0.96      0.95      1592
     positif       0.96      0.89      0.92      1592

    accuracy                           0.94      4776
   macro avg       0.94      0.94      0.94      4776

πŸ’‘ Insight Bisnis

Review Positif

  1. Kemudahan penggunaan β€” Canva dinilai intuitif bahkan oleh pengguna pemula
  2. Hasil desain yang memuaskan β€” pengguna bisa menghasilkan desain terlihat profesional tanpa keahlian grafis khusus
  3. Fitur gratis yang cukup memadai β€” pengguna non-subscriber tetap merasa terbantu

Review Negatif

  1. Harga langganan premium terlalu mahal β€” terutama untuk standar daya beli pengguna Indonesia
  2. Bug, crash, dan error saat export β€” keluhan teknis paling sering muncul
  3. Loading lambat dan aplikasi berat β€” dikeluhkan pengguna dengan perangkat mid-low end
  4. Fitur tiba-tiba terkunci setelah update β€” pengguna merasa fitur favorit berpindah ke tier berbayar

Rekomendasi

  • πŸ”§ Prioritaskan perbaikan stabilitas (bug export & crash)
  • πŸ’° Pertimbangkan regional pricing untuk pasar Indonesia
  • ⚑ Optimasi performa untuk perangkat kelas menengah ke bawah
  • πŸ“Š Implementasikan monitoring sentimen real-time pasca-update menggunakan model ini

πŸ› οΈ Teknologi

Data Collection  : google-play-scraper
NLP              : Sastrawi, NLTK, langdetect
Imbalanced Data  : imbalanced-learn (RandomOverSampler)
Deep Learning    : TensorFlow / Keras (LSTM, BiLSTM, GRU)
Transformer      : HuggingFace Transformers (IndoBERT)
Visualization    : Matplotlib, Seaborn, WordCloud
Environment      : Google Colab (GPU: Tesla T4)

πŸš€ Cara Menjalankan

1. Clone repository

git clone https://github.com/Davynnelle/Analisis-Sentimen-Canva.git
cd Analisis-Sentimen-Canva

2. Install dependencies

pip install tensorflow scikit-learn pandas numpy matplotlib seaborn wordcloud
pip install transformers torch
pip install Sastrawi nltk langdetect
pip install imbalanced-learn emoji tqdm requests google-play-scraper

3. Siapkan file data

Letakkan file berikut di folder /content/data/:

/content/data/
β”œβ”€β”€ canva_reviews_raw.csv    ← hasil scraping
└── slang_words.json         ← kamus slang (15.272 kata)

4. Jalankan notebook

Buka Proyek_Analisis_Sentimen_Dhea_Yuza_Fadiya_Canva.ipynb di Google Colab dan jalankan sel secara berurutan.

⚠️ Pastikan GPU aktif sebelum training IndoBERT: Runtime β†’ Change runtime type β†’ T4 GPU


πŸ“ Struktur Proyek

canva-sentiment-analysis/
β”‚
β”œβ”€β”€ Proyek_Analisis_Sentimen_Dhea_Yuza_Fadiya_Canva.ipynb   ← notebook utama
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ canva_reviews_raw.csv                               ← data scraping mentah
β”‚   β”œβ”€β”€ canva_reviews_labeled.csv                           ← data setelah labeling
β”‚   └── slang_words.json                                    ← kamus normalisasi slang
β”‚
β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ best_LSTM.keras
β”‚   β”œβ”€β”€ best_BiLSTM.keras
β”‚   β”œβ”€β”€ best_GRU.keras
β”‚   β”œβ”€β”€ lstm_final.keras
β”‚   β”œβ”€β”€ bilstm_final.keras
β”‚   β”œβ”€β”€ gru_final.keras
β”‚   β”œβ”€β”€ indobert_final/                                    ← folder model BERT
β”‚   β”œβ”€β”€ tokenizer_seq.pkl
β”‚   └── label_map.json
β”‚
β”œβ”€β”€ requirements.txt                                       ← daftar semua library
β”‚
└── README.md

πŸ“Š Hyperparameter

Parameter Nilai
MAX_SEQUENCE_LEN 64
MAX_FEATURES 5.000
EMBED_DIM 64
HIDDEN_UNITS 128
DROPOUT_RATE 0,3
LEARNING_RATE 0,001
BATCH_SIZE 64
EPOCHS (LSTM/BiLSTM/GRU) 20 (early stopping)
EPOCHS (IndoBERT) 3
BERT_MAX_LEN 128

πŸ“„ Note: This project is based on an final submission from the course "Belajar Fundamental Deep Learning" on Dicoding Indonesia. The goal was to implement and expand on the core concepts introduced in the course.


πŸ’¬ "Dari 10.837 review pengguna Canva, model IndoBERT berhasil mengklasifikasikan sentimen dengan akurasi 98,07% β€” ini bisa berpotensi untuk deployment monitoring review secara real-time."

About

Repository ini berisi analisis sentimen lengkap pada ulasan aplikasi Canva di Google Play Store. Model yang dilatih meliputi LSTM, Bidirectional LSTM (BiLSTM), GRU, dan IndoBERT (fine-tuning transformer berbahasa Indonesia).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages