텍스트에 대한 감정 분석을 수행하고 여러 기사를 살펴보고 일부는 “Naive Bayes”를 사용 하고 다른 일부는 “Recurrent Neural Network (LSTM)”입니다 . 반면에 감정 분석을위한 Python 라이브러리를 보았습니다. NLTK입니다. 그것은 사용 “나이브 베이 즈 ‘ 깡통 사람이 두 가지를 사용 사이의 차이점은 무엇입니까 설명?
나는 또한이 게시물을 겪었지만 두 가지에 대해서는 명확하지 않습니다.
답변
Naive Bayes와 Recurrent Neural Networks의 차이점
우선 통계 분류 라고하는 문제를 해결하기 위해 두 분류기라고 말하면서 시작하겠습니다 . 이것은 많은 양의 데이터 (귀하의 기사)가 둘 이상의 범주 (귀하의 긍정적 / 부정적 감정)로 나뉘어져 있음을 의미합니다. 분류기의 목표는 기사가 두 범주로 분리되는 방법 을 배우고 새로운 기사를 독자적으로 분류하는 것입니다.
이 작업을 해결할 수있는 두 가지 모델은 Naive Bayes 분류기와 Recurrent Neural Networks입니다.
Naive Bayes
텍스트 분류에이 분류기를 사용하려면 일반적으로 텍스트를 미리 처리하여 ( bag of words + tf-tdf ) 숫자 값이 포함 된 벡터로 변환 할 수 있습니다. 이 벡터는 NB 모델에 대한 입력으로 사용됩니다.
이 분류기는 사용자의 기능 (우리가 생성 한 벡터의 속성)이 서로 독립적이라고 가정합니다. 이 가정이 적용되면 데이터가 거의 필요하지 않은 강력한 분류기입니다.
반복적 인 신경망 네트워크
는 이전에 읽은 내용의 “메모리”를 유지하면서 데이터를 순차적으로 읽는 네트워크입니다. 이것들은 상관 단어가 그들 사이에 있기 때문에 텍스트를 다룰 때 정말 유용합니다.
두 모델 (NB 및 RNN)은이 분류를 수행하는 방식이 크게 다릅니다.
-
NB는 generative 라는 모델 범주에 속합니다 . 이것은 훈련 (알고리즘이 분류를 배우는 과정) 동안 NB가 처음에 데이터가 어떻게 생성 되었는지 알아 내려한다는 것을 의미합니다 . 기본적으로 모델에 입력 한 예제를 생성 한 기본 분포를 파악하려고합니다.
-
반면에 RNN은 차별적 모델입니다. 분류를 수행하기 위해 긍정적 예와 부정적인 예의 차이점을 알아 내려고합니다.
mire를 배우고 싶다면 “차별 알고리즘과 생성 알고리즘”을 쿼리하는 것이 좋습니다.
NB는 수십 년 동안 인기가 있었지만 RNN은 높은 계산 리소스가 필요하기 때문에 지난 10 년 동안 응용 프로그램을 찾기 시작했습니다. 대부분의 RNN은 전용 GPU (CPU보다 훨씬 빠르게 계산)에 대해 교육을받습니다.
tl; dr : 그들은 동일한 작업을 해결하는 두 가지 매우 다른 방법입니다
라이브러리
두 알고리즘이 널리 사용되기 때문에 많은 라이브러리에서 구현됩니다. 당신이 언급 한 이후로 몇 개의 파이썬 라이브러리의 이름을 지정할 것입니다 :
NB의 경우 :
-
scikit-learn : Naive Bayes를 포함한 여러 머신 러닝 알고리즘의 구현을 포함하는 매우 사용하기 쉬운 파이썬 라이브러리입니다.
-
NaiveBayes : 그것을 사용하지는 않았지만 이름으로 판단하는 것이 적절하다고 생각합니다.
RNN은 딥 러닝 알고리즘 으로 간주되므로 모든 주요 딥 러닝 라이브러리에서 구현됩니다.
-
TensorFlow : 현재 가장 인기있는 DL 라이브러리. Google에서 게시하고 관리합니다.
-
theano : University of Montreal에서 출판 한 tf와 비슷한 라이브러리입니다.
-
keras : tf 및 theano 용 래퍼입니다. 훨씬 쉽게. RNN을 구현하려는 경우 사용하는 것이 좋습니다.
-
caffe : UC Berkeley에서 출판 한 DL 라이브러리. 파이썬 API가 있습니다.
CUDA 지원 NVIDIA GPU가있는 경우 위의 모든 GPU 지원 기능을 제공합니다.
Python의 NLTK 는 주로 자연어 처리 (stemming, tokenizing, 품사 태그)를 위한 라이브러리 입니다. 정서 패키지 가 있지만 핵심은 아닙니다. 나는 NLTK가 감정 분석에 NB를 사용한다고 확신합니다.