Portofolio Sentimen Analysis dengan PyTorch

MOHAMAD FRANANDA ADIEZWARA RAMADHAN

Sosial Media


0 orang menyukai ini
Suka

Summary

membuat Model Klasifikasi LSTM sederhana untuk Analisis Sentimen pada data ulasan Amazon

Description

DASAR TEORI :

Sentiment analysis adalah proses penggunaan text analytics untuk mendapatkan berbagai sumber data dari internet dan beragam platform media sosial. Tujuannya adalah untuk memperoleh opini dari pengguna yang terdapat pada platform tersebut

PyTorch merupakan library open source yang digunakan untuk mengembangkan dan melatih neural network

 

Langkah-Langkah sentiment analysis menggunakan Pytorch 

Hubungkan google drive dan google colab, setelah terhubunga baca dataset yang ada pada google drive, setelah dataset terbaca import library yang dibutuhkan seperti nltk,numpy dan library lainnya, NLTK (https://www.nltk.org) adalah library yang digunakan untuk pengolahan data bahasa manusia.  NumPy merupakan salah satu library Python yang berfungsi untuk proses komputasi numerik. NumPy memiliki kemampuan untuk membuat objek N-dimensi array. Array merupakan sekumpulan variabel yang memiliki tipe data yang sama

Dataset ini berisi total 4 juta ulasan - 3,6 juta pelatihan dan 0,4 juta pengujian. Kami tidak akan menggunakan seluruh dataset untuk menghemat waktu. Namun, jika Anda memiliki kekuatan dan kapasitas komputasi, lanjutkan dan latih model pada porsi data yang lebih besar

Selanjutnya, kita harus mengekstrak label dari kalimat. Datanya adalah format \__label__1/2 kalimat, sehingga kita dapat dengan mudah membaginya. Label sentimen positif disimpan sebagai 1 dan negatif disimpan sebagai 0.

Kita juga akan mengubah semua url menjadi "<url\>" standar karena url persisnya tidak relevan dengan sentimen dalam banyak kasus.

Setelah membersihkan data dengan cepat, kami akan melakukan tokenisasi kalimat, yang merupakan tugas NLP standar. Tokenisasi adalah tugas membagi kalimat menjadi token individu, yang dapat berupa kata atau tanda baca, dll. Ada banyak perpustakaan NLP yang dapat melakukan ini, seperti *spaCy* atau *Scikit-learn*, tetapi kita akan menggunakan *NLTK* di sini karena memiliki salah satu tokenizer yang lebih cepat.

Kata-kata tersebut kemudian akan disimpan dalam kamus yang memetakan kata tersebut ke jumlah kemunculannya. Kata-kata ini akan menjadi kosakata kita.

Untuk menghapus kesalahan ketik dan kata-kata yang mungkin tidak ada, kami akan menghapus semua kata dari kosakata yang hanya muncul sekali. Untuk memperhitungkan kata tidak diketahui dan padding, kita juga harus menambahkannya ke kosakata kita. Setiap kata dalam kosakata kemudian akan diberi indeks bilangan bulat dan kemudian dipetakan ke bilangan bulat ini

Dengan pemetaan, kami akan mengonversi kata-kata dalam kalimat ke indeks yang sesuai

Pada langkah pre-processing terakhir, kita akan mengisi kalimat dengan 0 dan memperpendek kalimat yang panjang sehingga data dapat dilatih dalam batch untuk mempercepat.

Kalimat empuk akan terlihat seperti ini, di mana 0 mewakili padding:

Dataset kita sudah dibagi menjadi data pelatihan dan pengujian. Namun, kita masih membutuhkan satu set data untuk validasi selama pelatihan. Oleh karena itu, kita akan membagi data pengujian kita menjadi setengahnya menjadi satu set validasi dan satu set pengujian

Selanjutnya, ini adalah titik di mana kita akan mulai bekerja dengan perpustakaan PyTorch. Pertama-tama kita akan mendefinisikan kumpulan data dari kalimat dan label, diikuti dengan memuatnya ke dalam pemuat data. Kami mengatur ukuran batch ke 256. Ini dapat diubah sesuai dengan kebutuhan Anda.

Kita juga dapat memeriksa apakah kita memiliki GPU untuk mempercepat waktu pelatihan kita berkali-kali lipat. Jika Anda menggunakan FloydHub dengan GPU untuk menjalankan kode ini, waktu pelatihan akan berkurang secara signifikan.

Pada titik ini, kita akan mendefinisikan arsitektur model. Pada tahap ini, kita dapat membuat Neural Networks yang memiliki lapisan dalam atau dan sejumlah besar lapisan LSTM yang ditumpuk di atas satu sama lain. Namun, model sederhana seperti di bawah ini bekerja dengan cukup baik dan membutuhkan waktu pelatihan yang jauh lebih sedikit. Kita akan melatih penyematan kata kita sendiri di lapisan pertama sebelum kalimat dimasukkan ke dalam lapisan LSTM.

Lapisan terakhir adalah lapisan yang sepenuhnya terhubung dengan fungsi sigmoid untuk mengklasifikasikan apakah ulasan itu sentimen positif/negatif.

Dengan ini, kita dapat membuat instance model kita setelah mendefinisikan argumen. Dimensi output hanya akan menjadi 1 karena hanya perlu output 1 atau 0. Tingkat pembelajaran, fungsi kerugian, dan pengoptimal juga ditentukan.

Akhirnya, kita bisa mulai melatih modelnya. Untuk setiap 1000 langkah, kami akan memeriksa keluaran model kami terhadap dataset validasi dan menyimpan model jika kinerjanya lebih baik dari waktu sebelumnya. State_dict adalah bobot model di PyTorch dan dapat dimuat ke dalam model dengan arsitektur yang sama pada waktu atau skrip yang terpisah sama sekali.

Setelah pelatihan selesai, saatnya untuk menguji model kita pada kumpulan data yang belum pernah dilihat sebelumnya - kumpulan data pengujian kita. Pertama-tama kita akan memuat bobot model dari titik di mana kehilangan validasi paling rendah. Kita dapat menghitung akurasi model untuk melihat seberapa akurat prediksi model kita.

Kita berhasil mencapai akurasi ~93,8% dengan model LSTM sederhana ini! Hal ini menunjukkan efektivitas LSTM dalam menangani tugas-tugas berurutan tersebut.

Hasil ini dicapai hanya dengan beberapa lapisan sederhana dan tanpa penyetelan hyperparameter. Ada begitu banyak perbaikan lain yang dapat dilakukan untuk meningkatkan efektivitas model, dan Anda bebas mencoba untuk mengalahkan akurasi ini dengan menerapkan peningkatan ini!

Beberapa saran perbaikan adalah sebagai berikut:

- Menjalankan pencarian hyperparameter untuk mengoptimalkan konfigurasi Anda.
- Meningkatkan kompleksitas model
    - Misalnya Menambahkan lebih banyak lapisan/menggunakan LSTM dua arah
    - Menggunakan penyematan kata yang telah dilatih sebelumnya seperti penyematan GloVe

Informasi Course Terkait
  Kategori: Artificial Intelligence
  Course: Sentimen Analysis dengan PyTorch