Sulla differenza tra Naive Bayes e reti neuronali ricorrenti
Prima di tutto cominciamo dicendo che sono entrambi classificatori, pensati per risolvere un problema chiamato classificazione statistica . Ciò significa che hai molti dati (negli articoli del tuo caso) suddivisi in due o più categorie (nel tuo caso sentimento positivo / negativo). L'obiettivo del classificatore è imparare come gli articoli sono suddivisi in quelle due categorie e quindi essere in grado di classificare i nuovi articoli da solo.
Due modelli in grado di risolvere questo compito sono il classificatore Naive Bayes e le reti neurali ricorrenti.
Naive Bayes
Per utilizzare questo classificatore per l'analisi del testo, di solito pre-elabora il testo ( sacchetto di parole + tf-tdf ) in modo da poterlo trasformare in vettori contenenti valori numerici. Questi vettori servono come input per il modello NB.
Questo classificatore presuppone che le tue caratteristiche (gli attributi dei vettori che abbiamo prodotto) siano indipendenti l'una dall'altra. Quando questo presupposto è valido, è un classificatore molto forte che richiede pochissimi dati per funzionare.
Reti neurali ricorrenti
Queste sono reti che leggono i tuoi dati in sequenza, mantenendo una "memoria" di ciò che hanno letto in precedenza. Questi sono davvero utili quando si tratta di testo a causa delle parole di correlazione che hanno tra di loro.
I due modelli (NB e RNN) differiscono notevolmente nel modo in cui tentano di eseguire questa classificazione:
NB appartiene a una categoria di modelli chiamati generativi . Ciò significa che durante l'allenamento (la procedura in cui l'algoritmo impara a classificare), NB cerca di scoprire come sono stati generati i dati in primo luogo. In sostanza, cerca di capire la distribuzione sottostante che ha prodotto gli esempi che hai inserito nel modello.
D'altra parte RNN è un modello discriminante . Cerca di capire quali sono le differenze tra i tuoi esempi positivi e negativi, al fine di eseguire la classificazione.
Suggerisco di interrogare "algoritmi discriminativi contro generativi" se vuoi imparare il fango
Mentre NB è popolare da decenni, gli RNN stanno iniziando a trovare applicazioni negli ultimi dieci anni a causa della loro necessità di elevate risorse di calcolo. La maggior parte delle volte le RNN sono addestrate su GPU dedicate (che calcolano molto più velocemente delle CPU).
tl; dr: sono due modi molto diversi di risolvere lo stesso compito
biblioteche
Poiché i due algoritmi sono molto popolari, hanno implementazioni in molte librerie. Chiamerò alcune librerie di Python da quando l'hai menzionato:
Per NB:
scikit-learn : è una libreria Python molto facile da usare che contiene implementazioni di diversi algoritmi di machine learning, incluso Naive Bayes.
NaiveBayes : non l'ho usato ma immagino sia rilevante a giudicare dal nome.
Poiché gli RNN sono considerati un algoritmo di deep learning , hanno implementazioni in tutte le principali librerie di deep learning:
TensorFlow : la libreria DL più popolare al momento. Pubblicato e gestito da google.
theano : biblioteca simile a tf, più vecchia, pubblicata dall'Università di Montreal.
keras : wrapper per tf e theano. Molto più facile. Cosa ti consiglio di usare se mai vuoi implementare RNN.
caffe : libreria DL pubblicata da UC Berkeley. Dispone di API Python.
Tutto quanto sopra offre supporto GPU se si dispone di una GPU NVIDIA abilitata CUDA.
NLTK di Python è una libreria principalmente per l' elaborazione del linguaggio naturale (derivazione, tokenizzazione, etichettatura parziale). Sebbene abbia un pacchetto sentiment , non è il punto focale. Sono abbastanza sicuro che NLTK usi NB per l'analisi del sentiment.