|
|
||
|---|---|---|
| __pycache__ | ||
| frontend | ||
| venv | ||
| Readme.md | ||
| app.py | ||
| kamus_alay.csv | ||
| model_logistic_regression.pkl | ||
| models.py | ||
| new_kamusalay.csv | ||
| nlp.py | ||
| requirements.txt | ||
| sentiment_tiktok.db | ||
| sentiment_tiktok.sql | ||
| tfidf_vectorizer.pkl | ||
Readme.md
🧠 Analisis Sentimen Komentar TikTok (TF-IDF & Logistic Regression)
Sistem aplikasi web untuk klasifikasi dan analisis sentimen komentar video TikTok berbahasa Indonesia ke dalam kategori POSITIF atau NEGATIF. Sistem ditenagai oleh representasi fitur TF-IDF (1..2 n-gram) dan model Logistic Regression.
✨ Fitur Utama Sistem
- Dashboard & Analisis Video TikTok:
- Memasukkan tautan video TikTok (
https://www.tiktok.com/@.../video/...). - Menganalisis komentar secara otomatis (Mode Demo 300 komentar realistis) atau input komentar manual (one comment per line).
- Menghitung persentase sentimen, rasio sentimen, dan diagram visual (Donut Chart).
- Memasukkan tautan video TikTok (
- Riwayat Analisis (History):
- Menyimpan seluruh riwayat analisis ke database SQLite lokal (
sentiment_tiktok.db). - Tabel komentar interaktif dengan filter (Semua, Positif, Negatif) dan paginasi.
- Menyimpan seluruh riwayat analisis ke database SQLite lokal (
- Pengujian Model & Confusion Matrix (Admin):
- Evaluasi komprehensif performa model Logistic Regression & ekstraksi TF-IDF.
- Perhitungan otomatis Akurasi, Presisi, Recall, F1-Score, dan Matriks Kebingungan 2x2 (True Positive, True Negative, False Positive, False Negative).
- Mendukung 3 mode sumber data uji: Dataset Benchmark Bawaan (60 sampel seimbang), Upload File CSV/TXT berlabel, dan Input Manual Batch.
- Tabel Classification Report formal standar Scikit-Learn dan rincian prediksi per sampel komentar.
- Ekspor laporan pengujian ke format CSV dan cetak PDF.
- Autentikasi Pengguna:
- Sistem login dan registrasi akun peneliti.
- Akun default:
admin@tiktok.com(password:admin123).
📁 Struktur Direktori Proyek
project/
├── app.py # Server Flask utama (REST API, Autentikasi, Analisis TikTok, Static)
├── nlp.py # Modul pra-pemrosesan teks NLP (9 tahapan pembersihan)
├── models.py # Modul pemuatan model Logistic Regression & ekstraksi TF-IDF
├── model_logistic_regression.pkl # Bobot model Logistic Regression hasil latih
├── tfidf_vectorizer.pkl # Objek TF-IDF Vectorizer terlatih (4.732 fitur n-gram)
├── kamus_alay.csv # Dataset kamus normalisasi kata alay/slang
├── requirements.txt # Daftar pustaka Python yang dibutuhkan
├── Readme.md # Dokumentasi panduan lengkap (file ini)
├── PENJELASAN_PROJECT.txt # Dokumentasi teknis & simulasi perhitungan matematis
├── sentiment_tiktok.db # Database SQLite lokal untuk riwayat & pengguna
│
└── frontend/ # Aset Antarmuka Pengguna (Web SPA)
├── index.html # Halaman utama aplikasi Analisis Sentimen TikTok
├── style.css # Berkas tata letak dan tema modern
└── app.js # Logika SPA (Router, Auth, Dashboard, Riwayat, Donut Chart)
⚙️ Persyaratan Sistem & Dependensi
Proyek ini menggunakan Python 3.11 / 3.12.
| Pustaka | Versi | Kegunaan |
|---|---|---|
| Flask | >=3.0.0 |
Server web & penyedia endpoint REST API |
| scikit-learn | >=1.3.0 |
Model Logistic Regression & TF-IDF Vectorizer |
| joblib | >=1.3.0 |
Deserialisasi file model .pkl |
| pandas | >=2.0.0 |
Pembacaan dataset kamus kata gaul CSV |
| nltk | >=3.8.0 |
Tokenisasi kata (word_tokenize) & korpus stopword |
| Sastrawi | >=1.0.1 |
Algoritma stemming kata dasar bahasa Indonesia |
🚀 Cara Menjalankan Aplikasi
1. Buka PowerShell / Terminal pada folder proyek
cd "d:\SEMESTER 7\Tugas Akhir\project"
2. Aktifkan Virtual Environment
.\venv\Scripts\activate
3. Jalankan Server Flask
python App.py
(Atau .\venv\Scripts\python.exe App.py)
4. Buka di Browser
Kunjungi alamat:
http://127.0.0.1:5000
- Login Akun Bawaan:
- Email:
admin@tiktok.com - Password:
admin123
- Email:
- Atau klik "Daftar" untuk membuat akun baru.
📡 Dokumentasi Endpoint REST API
| Method | Endpoint | Keterangan |
|---|---|---|
GET |
/ atau /index.html |
Memuat aplikasi web utama (TikTok Sentiment Analysis) |
POST |
/api/login |
Autentikasi pengguna (email, password) |
POST |
/api/register |
Mendaftarkan pengguna baru |
GET |
/api/me |
Memeriksa sesi pengguna aktif |
POST |
/api/logout |
Mengakhiri sesi pengguna |
GET |
/api/stats |
Statistik total analisis, komentar, positif, negatif |
GET |
/api/analyses |
Mengambil seluruh riwayat analisis pengguna |
POST |
/api/analyses |
Menganalisis video TikTok baru (tiktok_url, manual_comments) |
GET |
/api/analyses/<id> |
Detail analisis video (ringkasan persentase sentimen) |
DELETE |
/api/analyses/<id> |
Menghapus data analisis dan komentarnya |
GET |
/api/analyses/<id>/comments |
Daftar komentar dengan filter (POSITIF/NEGATIF) dan paginasi |
POST |
/predict |
Inferensi satu komentar langsung via REST API |
GET |
/api/model-test/benchmark |
Mengambil dataset benchmark terkurasi 60 sampel berlabel |
POST |
/api/model-test/evaluate |
Evaluasi batch model menghasilkan Confusion Matrix & classification report |