Sentiment Analysis Ulasan IMDB dengan LSTM

Muhammad Ferdy Fawwaz

Sosial Media


0 orang menyukai ini
Suka

Summary

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.

Description

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:

  1. Embedding Layer: Mengubah indeks kata menjadi vektor berukuran 128 untuk membantu model memahami hubungan antar kata.
  2. LSTM Layer (64 unit): Mengambil data urutan kata dan mempelajari pola dengan mempertahankan informasi jangka panjang. return_sequences=True memungkinkan lapisan ini untuk mengirimkan urutan lengkap ke lapisan berikutnya.
  3. Dropout (0.5): Menerapkan dropout sebesar 50% untuk mencegah overfitting dengan menonaktifkan beberapa unit secara acak.
  4. LSTM Layer (32 unit): LSTM kedua yang memproses informasi dari lapisan sebelumnya, diikuti oleh dropout untuk lebih mencegah overfitting.
  5. Dense Layer: Lapisan akhir dengan satu neuron dan fungsi aktivasi sigmoid yang menghasilkan output biner (0 atau 1), sesuai untuk analisis sentimen positif atau negatif.

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

Informasi Course Terkait
  Kategori: Natural Language Processing
  Course: Introduction Data Mining