Pada perbedaan antara Naif Bayes dan Jaringan Syaraf Berulang
Pertama-tama mari kita mulai dengan mengatakan bahwa mereka berdua adalah pengklasifikasi, dimaksudkan untuk menyelesaikan masalah yang disebut klasifikasi statistik . Ini berarti bahwa Anda memiliki banyak data (dalam artikel kasus Anda) dipecah menjadi dua atau lebih kategori (dalam kasus Anda sentimen positif / negatif). Tujuan pengklasifikasi adalah untuk mempelajari bagaimana artikel dibagi menjadi dua kategori tersebut dan kemudian dapat mengklasifikasikan artikel baru itu sendiri.
Dua model yang dapat menyelesaikan tugas ini adalah classifier Naive Bayes dan Recurrent Neural Networks.
Naif Bayes
Untuk menggunakan pengelompokan ini untuk analisis teks, Anda biasanya melakukan pra-proses teks ( sekumpulan kata + tf-tdf ) sehingga Anda dapat mengubahnya menjadi vektor yang berisi nilai numerik. Vektor ini berfungsi sebagai input ke model NB.
Penggolong ini mengasumsikan bahwa fitur Anda (atribut vektor yang kami hasilkan) tidak tergantung satu sama lain. Ketika asumsi ini berlaku, itu adalah penggolong yang sangat kuat yang membutuhkan data yang sangat sedikit untuk bekerja.
Jaringan Syaraf Berulang
Ini adalah jaringan yang membaca data Anda secara berurutan, sambil menjaga "memori" dari apa yang telah mereka baca sebelumnya. Ini sangat berguna ketika berhadapan dengan teks karena kata-kata korelasi ada di antara mereka.
Kedua model (NB dan RNN) sangat berbeda dalam cara mereka berusaha melakukan klasifikasi ini:
NB termasuk dalam kategori model yang disebut generatif . Ini berarti bahwa selama pelatihan (prosedur di mana algoritma belajar untuk mengklasifikasikan), NB mencoba mencari tahu bagaimana data dihasilkan pada awalnya. Pada dasarnya mencoba untuk mencari tahu distribusi yang mendasari yang menghasilkan contoh yang Anda input ke model.
Di sisi lain RNN adalah model diskriminatif . Itu mencoba untuk mencari tahu apa perbedaan antara contoh positif dan negatif Anda, untuk melakukan klasifikasi.
Saya sarankan untuk menanyakan "algoritma diskriminatif vs generatif" jika Anda ingin mempelajari lumpur
Sementara NB telah populer selama beberapa dekade, RNN mulai menemukan aplikasi selama dekade terakhir karena kebutuhan mereka akan sumber daya komputasi yang tinggi. RNNs sebagian besar waktu dilatih pada GPU khusus (yang menghitung jauh lebih cepat daripada CPU).
tl; dr: mereka adalah dua cara yang sangat berbeda untuk menyelesaikan tugas yang sama
Perpustakaan
Karena kedua algoritma tersebut sangat populer, mereka memiliki implementasi di banyak perpustakaan. Saya akan memberi nama beberapa pustaka python sejak Anda menyebutkannya:
Untuk NB:
scikit-learn : adalah python library yang sangat mudah digunakan yang berisi implementasi dari beberapa algoritma pembelajaran mesin, termasuk Naive Bayes.
NaiveBayes : belum pernah menggunakannya tapi saya kira itu relevan untuk menilai berdasarkan namanya.
Karena RNN dianggap sebagai algoritma pembelajaran yang mendalam , mereka memiliki implementasi di semua perpustakaan pembelajaran mendalam:
TensorFlow : Perpustakaan DL paling populer saat ini. Diterbitkan dan dikelola oleh google.
theano : Perpustakaan yang mirip dengan tf, lebih tua, diterbitkan oleh University of Montreal.
keras : Wrapper untuk tf dan theano. Jauh lebih mudah. Apa yang saya sarankan Anda gunakan jika Anda ingin mengimplementasikan RNNs.
caffe : perpustakaan DL yang diterbitkan oleh UC Berkeley. Memiliki python API.
Semua di atas menawarkan dukungan GPU jika Anda memiliki GPU NVIDIA yang diaktifkan CUDA.
Python NLTK adalah perpustakaan terutama untuk Pemrosesan Bahasa Alami (stemming, tokenizing, penandaan bagian khusus). Meskipun memiliki paket sentimen , itu bukan titik fokus. Saya cukup yakin NLTK menggunakan NB untuk analisis sentimen.