Sobre a diferença entre Naive Bayes e Redes Neurais Recorrentes
Antes de tudo, vamos começar dizendo que ambos são classificadores, destinados a resolver um problema chamado classificação estatística . Isso significa que você tem muitos dados (nos artigos do seu caso) divididos em duas ou mais categorias (no seu caso, sentimento positivo / negativo). O objetivo do classificador é aprender como os artigos são divididos nessas duas categorias e poder classificar novos artigos por si próprio.
Dois modelos que podem resolver essa tarefa são o classificador Naive Bayes e Redes Neurais Recorrentes.
Naive Bayes
Para usar esse classificador para análise de texto, você geralmente pré-processa o texto (conjunto de palavras + tf-tdf ) para poder transformá-lo em vetores contendo valores numéricos. Esses vetores servem como uma entrada para o modelo NB.
Esse classificador assume que seus recursos (os atributos dos vetores que produzimos) são independentes um do outro. Quando essa suposição é válida, é um classificador muito forte que requer muito poucos dados para funcionar.
Redes neurais recorrentes
São redes que lêem seus dados sequencialmente, mantendo uma "memória" do que eles leram anteriormente. Isso é realmente útil quando se lida com texto devido às palavras de correlação existentes entre elas.
Os dois modelos (RN e RNN) diferem bastante na maneira como tentam realizar essa classificação:
O RN pertence a uma categoria de modelos denominada generativa . Isso significa que durante o treinamento (o procedimento em que o algoritmo aprende a classificar), o NB tenta descobrir como os dados foram gerados em primeiro lugar. Essencialmente, ele tenta descobrir a distribuição subjacente que produziu os exemplos inseridos no modelo.
Por outro lado, a RNN é um modelo discriminativo . Ele tenta descobrir quais são as diferenças entre seus exemplos positivos e negativos, para realizar a classificação.
Sugiro consultar "algoritmos discriminativos versus algoritmos generativos" se você quiser aprender lamaçal
Embora o NB seja popular há décadas, as RNNs estão começando a encontrar aplicativos na última década devido à necessidade de altos recursos computacionais. As RNNs na maioria das vezes são treinadas em GPUs dedicadas (que calculam muito mais rápido que as CPUs).
tl; dr: são duas maneiras muito diferentes de resolver a mesma tarefa
Bibliotecas
Como os dois algoritmos são muito populares, eles têm implementações em muitas bibliotecas. Vou citar algumas bibliotecas python desde que você mencionou:
Para NB:
scikit-learn : é uma biblioteca python muito fácil de usar, que contém implementações de vários algoritmos de aprendizado de máquina, incluindo Naive Bayes.
NaiveBayes : não usei, mas acho que é relevante a julgar pelo nome.
Como as RNNs são consideradas um algoritmo de aprendizado profundo , elas têm implementações em todas as principais bibliotecas de aprendizado profundo:
TensorFlow : a biblioteca DL mais popular no momento. Publicado e mantido pelo google.
theano : Biblioteca semelhante à tf, mais antiga, publicada pela Universidade de Montreal.
keras : Wrapper para tf e theano. Muito facil. O que eu sugiro que você use se quiser implementar RNNs.
caffe : biblioteca DL publicada pela UC Berkeley. Possui API python.
Todas as opções acima oferecem suporte à GPU se você tiver uma GPU NVIDIA habilitada para CUDA.
O NLTK do Python é uma biblioteca principalmente para processamento de linguagem natural (derivação, tokenização, marcação de parte do discurso). Embora tenha um pacote de sentimentos , esse não é o ponto de foco. Tenho certeza que o NLTK usa o NB para análise de sentimentos.