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.
- Deskripsi Proyek
- Dataset
- Pipeline
- Model & Hasil
- Insight Bisnis
- Teknologi
- Cara Menjalankan
- Struktur 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.
| 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.
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 | 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 |
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
- Kemudahan penggunaan β Canva dinilai intuitif bahkan oleh pengguna pemula
- Hasil desain yang memuaskan β pengguna bisa menghasilkan desain terlihat profesional tanpa keahlian grafis khusus
- Fitur gratis yang cukup memadai β pengguna non-subscriber tetap merasa terbantu
- Harga langganan premium terlalu mahal β terutama untuk standar daya beli pengguna Indonesia
- Bug, crash, dan error saat export β keluhan teknis paling sering muncul
- Loading lambat dan aplikasi berat β dikeluhkan pengguna dengan perangkat mid-low end
- Fitur tiba-tiba terkunci setelah update β pengguna merasa fitur favorit berpindah ke tier berbayar
- π§ 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
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)
git clone https://github.com/Davynnelle/Analisis-Sentimen-Canva.git
cd Analisis-Sentimen-Canvapip 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-scraperLetakkan file berikut di folder /content/data/:
/content/data/
βββ canva_reviews_raw.csv β hasil scraping
βββ slang_words.json β kamus slang (15.272 kata)
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
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
| 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."