Muhammad Ferdy Fawwaz
Project ini menghadirkan pendekatan inovatif dalam analisis sentimen film dengan memanfaatkan kekuatan pemrosesan bahasa alami (NLP) berbasis arsitektur jaringan saraf berulang (LSTM). Dengan model LSTM dilatih untuk mengenali pola yang berkaitan dengan emosi dan sentimen.
Long Short-Term Memory (LSTM) adalah jenis jaringan saraf berulang (Recurrent Neural Network/RNN) yang dirancang untuk mengatasi masalah vanishing gradient yang sering terjadi pada jaringan RNN tradisional. LSTM dirancang untuk menangani data sekuensial dan memiliki kemampuan untuk mengingat informasi dalam jangka waktu yang lama, membuatnya sangat efektif untuk pemrosesan data seperti teks, audio, dan urutan temporal lainnya.
Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780.
Objective
Project ini menghadirkan pendekatan inovatif dalam analisis sentimen film dengan memanfaatkan kekuatan pemrosesan bahasa alami (NLP) yang dikombinasikan dengan arsitektur jaringan saraf berulang (LSTM). Model LSTM yang digunakan dilatih secara intensif untuk mengenali dan memahami pola linguistik yang berkaitan dengan emosi dan sentimen dalam ulasan film. Melalui pendekatan ini, project bertujuan untuk meningkatkan akurasi dan kedalaman analisis sentimen, memungkinkan identifikasi nuansa emosi positif, negatif, atau netral dengan lebih efektif. Dengan demikian, solusi ini diharapkan dapat memberikan wawasan yang lebih tajam dalam memahami reaksi penonton terhadap film serta membantu pengembang konten, pengulas, dan peneliti dalam mengevaluasi opini secara mendalam.
Data Collection
Tahap Pengembangan Model dan Pelatihan
Import Libary dan Menghubungkan Google Drive
Mengimpor berbagai pustaka yang dibutuhkan untuk melakukan analisis sentimen pada data teks menggunakan model LSTM. Pandas dan numpy digunakan untuk manipulasi data dan array, sementara train_test_split dari sklearn.model_selection digunakan untuk membagi data menjadi data pelatihan dan pengujian. Tokenizer dan pad_sequences dari tensorflow.keras.preprocessing.text digunakan untuk mempersiapkan data teks, yakni mengonversi teks menjadi urutan angka dan memastikan panjang input yang konsisten. Model LSTM dibangun dengan Sequential, menambahkan lapisan Embedding untuk representasi kata, LSTM untuk pemrosesan urutan, dan Dense serta Dropout untuk klasifikasi dan regularisasi. EarlyStopping digunakan untuk menghentikan pelatihan jika model tidak menunjukkan perbaikan dalam validasi. LabelEncoder digunakan untuk mengubah label kategori menjadi numerik. Terakhir, kode ini memuat model yang sudah dilatih sebelumnya dengan load_model dan menghubungkan Google Drive menggunakan drive.mount untuk mengakses file yang diperlukan.
Load Dataset
Memuat dataset dari file CSV yang berada di Google Drive dan menampilkannya. Baris pertama menggunakan pd.read_csv() untuk membaca file CSV yang berisi dataset IMDB, di mana jalur file yang diberikan adalah /content/drive/MyDrive/Colab Notebooks/IMDB Dataset.csv. Pastikan untuk mengganti jalur file dengan yang sesuai jika file berada di lokasi lain. Baris kedua, print(df), digunakan untuk menampilkan seluruh dataset atau beberapa baris pertama, sehingga kita dapat memverifikasi data yang telah dimuat. Biasanya, untuk mengecek beberapa baris pertama, Anda bisa menggunakan df.head(), tetapi print(df) akan menampilkan seluruh isi dataset.
Preprocessing Data
Data ulasan yang sudah dibersihkan dan siap untuk diolah lebih lanjut, dengan label sentimen yang telah dienkode secara numerik. Secara rinci:
Pembersihan Teks: Setiap ulasan teks mengalami pembersihan untuk menghapus URL, mention, hashtag, karakter spesial, dan spasi berlebih. Hasilnya adalah teks yang lebih sederhana dan relevan bagi model, karena informasi tidak penting telah dihilangkan.
Penyandian Label Sentimen: Label sentimen yang semula berbentuk teks (misalnya "positif" dan "negatif") dikonversi menjadi angka — "positif" menjadi 1 dan "negatif" menjadi 0. Penyandian ini membuat label dapat dimengerti oleh model dalam proses pelatihan.
Tokenizer
Build The Model LSTM
Membangun sebuah model jaringan saraf berbasis Long Short-Term Memory (LSTM) menggunakan Keras. Model dimulai dengan layer Embedding yang mengubah model LSTM yang akan digunakan untuk analisis sentimen. Model ini terdiri dari beberapa lapisan yang diatur sebagai berikut:
Ringkasan model (model.summary()) menampilkan jumlah parameter yang dapat dilatih dan bentuk setiap lapisan, memberikan gambaran tentang kompleksitas model.
Train the Model
Pelatihan model dengan menggunakan teknik early stopping untuk mencegah overfitting. Berikut adalah penjelasan singkat:
Early Stopping: Monitor val_loss (loss pada data validasi) untuk mendeteksi kapan model mulai overfitting, dan menghentikan pelatihan jika tidak ada peningkatan selama 3 epoch berturut-turut. restore_best_weights=True memastikan model mengembalikan bobot terbaik yang dicapai selama pelatihan.
Pelatihan Model: Model dilatih dengan data pelatihan, dibagi menjadi 80% untuk pelatihan dan 20% untuk validasi, selama maksimum 10 epoch dengan batch size 64. Early stopping mungkin menghentikan pelatihan lebih awal jika diperlukan.
Model Evaluation
Melakukan evaluasi terhadap model yang telah dilatih dengan menggunakan data uji (X_test_padded). Pertama, model menghasilkan prediksi untuk data uji melalui fungsi model.predict, yang memberikan output probabilitas untuk setiap kelas. Prediksi probabilitas ini kemudian dikonversi menjadi nilai biner (0 atau 1) dengan cara membandingkan nilai probabilitas dengan threshold 0.5 (y_prediction = (y_prediction > 0.5).astype("int32")), di mana nilai lebih besar dari 0.5 diklasifikasikan sebagai 1 (Positif) dan yang lebih kecil atau sama dengan 0.5 diklasifikasikan sebagai 0 (Negatif).
Save Model and Tokenizer
Flask in Backend
Upload File Model and Tokenizer
Code Flask
Running Flask