O różnicy między Naive Bayes a Recurrent Neural Networks
Po pierwsze zacznijmy od stwierdzenia, że obaj są klasyfikatorami, których celem jest rozwiązanie problemu zwanego klasyfikacją statystyczną . Oznacza to, że masz dużo danych (w twoim przypadku artykułów) podzielonych na dwie lub więcej kategorii (w twoim przypadku pozytywne / negatywne nastroje). Celem klasyfikatora jest, aby dowiedzieć się , jak artykuły są podzielone na te dwie kategorie, a następnie być w stanie sklasyfikować nowe artykuły na swój własny.
Dwa modele, które mogą rozwiązać to zadanie, to klasyfikator Naive Bayes i rekurencyjne sieci neuronowe.
Naiwne Bayes
Aby użyć tego klasyfikatora do analizy tekstu, zwykle wstępnie przetwarzasz tekst ( worek słów + tf-tdf ), abyś mógł go przekształcić w wektory zawierające wartości liczbowe. Wektory te służą jako dane wejściowe do modelu NB.
Ten klasyfikator zakłada, że twoje cechy (atrybuty wektorów, które stworzyliśmy) są od siebie niezależne. Kiedy to założenie się utrzymuje, jest to bardzo silny klasyfikator, który do działania wymaga bardzo mało danych.
Nawracające sieci neuronowe
Są to sieci, które odczytują twoje dane sekwencyjnie, zachowując „pamięć” tego, co wcześniej przeczytały. Są one bardzo przydatne podczas pracy z tekstem ze względu na korelację między słowami.
Dwa modele (NB i RNN) różnią się znacznie pod względem sposobu przeprowadzenia tej klasyfikacji:
NB należy do kategorii modeli zwanych generatywnymi . Oznacza to, że podczas szkolenia (procedura, w której algorytm uczy się klasyfikować), NB próbuje przede wszystkim dowiedzieć się, w jaki sposób dane zostały wygenerowane . Zasadniczo próbuje dowiedzieć się, jaka jest podstawowa dystrybucja, która dała przykłady, które wprowadzasz do modelu.
Z drugiej strony RNN jest modelem dyskryminującym . Próbuje dowiedzieć się, jakie są różnice między pozytywnymi i negatywnymi przykładami, aby przeprowadzić klasyfikację.
Sugeruję zapytanie o „algorytmy dyskryminujące vs generatywne”, jeśli chcesz nauczyć się błota
Chociaż NB jest popularny od dziesięcioleci, RNN zaczynają znajdować aplikacje w ciągu ostatniej dekady ze względu na zapotrzebowanie na wysokie zasoby obliczeniowe. RNN przez większość czasu są szkoleni na dedykowanych procesorach graficznych (które obliczają znacznie szybciej niż procesory).
tl; dr: są to dwa bardzo różne sposoby rozwiązania tego samego zadania
Biblioteki
Ponieważ oba algorytmy są bardzo popularne, mają implementacje w wielu bibliotekach. Wymienię kilka bibliotek Pythona, skoro o tym wspomniałeś:
Dla NB:
scikit-learn : to bardzo łatwa w użyciu biblioteka Pythona zawierająca implementacje kilku algorytmów uczenia maszynowego, w tym Naive Bayes.
NaiveBayes : nie użyłem go, ale sądzę, że jest to właściwe, sądząc po nazwie.
Ponieważ RNN są uważane za algorytm głębokiego uczenia , mają implementacje we wszystkich głównych bibliotekach głębokiego uczenia:
TensorFlow : obecnie najpopularniejsza biblioteka DL. Opublikowane i utrzymywane przez Google.
theano : Biblioteka podobna do tf, starsza, opublikowana przez University of Montreal.
keras : Wrapper dla TF i Theano. Dużo łatwiej. Sugeruję, aby użyć, jeśli kiedykolwiek chcesz zaimplementować RNN.
caffe : biblioteka DL opublikowana przez UC Berkeley. Ma API Pythona.
Wszystkie powyższe oferują obsługę GPU, jeśli masz procesor NVIDIA z obsługą CUDA.
Python's NLTK jest biblioteką głównie do przetwarzania języka naturalnego (wykrywanie, tokenizacja, tagowanie w części mowy). Chociaż ma pakiet sentymentów , nie jest punktem centralnym. Jestem prawie pewien, że NLTK używa NB do analizy nastrojów.