テキストの感情分析を実行したい、いくつかの記事を通過した、それらのいくつかは「Naive Bayes」を使用しており、その他は「Recurrent Neural Network(LSTM)」ですが、一方で、感情分析用のpythonライブラリを見ましたnltkです。それは「ナイーブベイズ」を使用しています誰もが2つの使用の違いは何であるか説明できますか?
私もこの投稿を通過しましたが、両方については明確ではありません。
テキストの感情分析を実行したい、いくつかの記事を通過した、それらのいくつかは「Naive Bayes」を使用しており、その他は「Recurrent Neural Network(LSTM)」ですが、一方で、感情分析用のpythonライブラリを見ましたnltkです。それは「ナイーブベイズ」を使用しています誰もが2つの使用の違いは何であるか説明できますか?
私もこの投稿を通過しましたが、両方については明確ではありません。
回答:
ナイーブベイズとリカレントニューラルネットワークの違いについて
まず最初に、統計分類と呼ばれる問題を解決するための両方の分類子であると言いましょう。これは、多くのデータ(あなたの場合は記事)が2つ以上のカテゴリ(あなたの場合は肯定的または否定的な感情)に分割されていることを意味します。分類子の目標は、記事がこれらの2つのカテゴリにどのように分割されるかを学習し、それから新しい記事を独自に分類できるようにすることです。
このタスクを解決できる2つのモデルは、単純ベイズ分類器とリカレントニューラルネットワークです。
ナイーブベイズ
この分類子をテキスト分析に使用するには、通常、テキスト(bag of words + tf-tdf)を前処理して、数値を含むベクトルに変換できるようにします。これらのベクトルは、NBモデルへの入力として機能します。
この分類子は、ユーザーの特徴(作成したベクターの属性)が互いに独立していることを前提としています。この仮定が当てはまる場合、それは機能するためにほとんどデータを必要としない非常に強力な分類子です。
再帰型ニューラルネットワーク
これらは、以前に読み取ったものの「メモリ」を保持しながら、データを順次読み取るネットワークです。これらは相関語がそれらの間にあるので、テキストを扱うときに本当に役立ちます。
2つのモデル(NBおよびRNN)は、この分類を実行する方法が大きく異なります。
NBは、生成と呼ばれるモデルのカテゴリに属しています。これは、トレーニング(アルゴリズムが分類を学習する手順)中に、NB が最初にデータがどのように生成されたかを見つけようとすることを意味します。基本的には、モデルに入力した例を作成した基になる分布を把握しようとします。
一方、RNNは判別モデルです。分類を実行するために、ポジティブとネガティブの例の違いを理解しようとします。
沼地を学びたい場合は、「識別アルゴリズムvs生成アルゴリズム」をクエリすることをお勧めします
NBは何十年も人気がありますが、RNNは高い計算リソースを必要とするため、過去10年間でアプリケーションを見つけ始めています。ほとんどの場合、RNNは専用のGPUでトレーニングされます(CPUよりもはるかに高速に計算されます)。
tl; dr:同じタスクを解決する2つの非常に異なる方法です
図書館
2つのアルゴリズムは非常に人気があるため、多くのライブラリに実装されています。あなたが言及したので、私はいくつかのpythonライブラリに名前を付けます:
NBの場合:
scikit-learn:Naive Bayesを含むいくつかの機械学習アルゴリズムの実装を含む非常に使いやすいPythonライブラリです。
NaiveBayes:使ったことはないが、名前から判断すると妥当だと思う。
RNNはディープラーニングアルゴリズムと見なされているため、すべての主要なディープラーニングライブラリに実装されています。
TensorFlow:現在最も人気のあるDLライブラリ。グーグルによって公開され、維持されます。
theano:モントリオール大学によって発行された古いtfに類似したライブラリ。
keras:tfとtheanoのラッパー。はるかに簡単です。RNNを実装したい場合に使用することをお勧めします。
caffe:UC Berkeleyによって公開されたDLライブラリ。Python APIがあります。
CUDA対応のNVIDIA GPUを使用している場合、上記のすべてがGPUサポートを提供します。
PythonのNLTKは、主に自然言語処理(ステミング、トークン化、スピーチの一部のタグ付け)用のライブラリです。それは感情パッケージを持っていますが、焦点ではありません。NLTKが感情分析にNBを使用すると確信しています。