朴素贝叶斯与递归神经网络(LSTM)之间的区别


8

我想对文本进行情感分析,浏览了几篇文章,其中一些正在使用“朴素贝叶斯”,另一些是“递归神经网络(LSTM)”,另一方面,我看到了用于情感分析的python库,是nltk。它使用“朴素贝叶斯”(Naive Bayes)谁能解释使用两者的区别?

我也阅读了这篇文章,但对两者都不清楚。

贝叶斯网络,神经网络,决策树和Petri网之间的差异

Answers:


14

朴素贝叶斯与递归神经网络的区别

首先,让我们说它们都是分类器,这是为了解决统计分类问题。这意味着您有大量数据(在您的案例中为文章)分为两个或多个类别(在您的案例中为正面/负面情绪)。分类器的目标是学习如何将文章分为这两个类别,然后能够自己对新文章进行分类。

可以解决此任务的两个模型是朴素贝叶斯分类器和递归神经网络。

朴素贝叶斯
为了使用此分类器进行文本分析,通常需要对文本(词袋 + tf-tdf)进行预处理,以便可以将其转换为包含数值的向量。这些向量用作NB模型的输入。
此分类器假定您的特征(我们产生的向量的属性)彼此独立。当这个假设成立时,它是一个非常强大的分类器,只需要很少的数据即可工作。

循环神经网络
这些网络可以按顺序读取您的数据,同时保留其先前已读取内容的“内存”。这些在处理文本时非常有用,因为它们之间具有相关性。

两种模型(NB和RNN)在尝试执行此分类的方式上有很大不同:

  • NB属于一种称为生成模型的模型。这意味着在训练过程中(算法学习分类的过程),NB首先尝试找出数据是如何生成的。它实质上是试图找出产生您输入到模型的示例的基础分布。

  • 另一方面,RNN是一个判别模型。为了进行分类,它试图找出您的正面和负面例子之间的区别。

如果您想学习泥潭,建议您查询“歧视性算法与生成性算法”

尽管NB已经流行了几十年,但由于它们需要大量的计算资源,因此RNN在过去的十年中开始找到应用。大多数时候,RNN都是在专用GPU上训练的(比GPU运算速度快得多)。

tl; dr:它们是解决同一任务的两种非常不同的方式

图书馆

因为这两种算法非常流行,所以它们在许多库中都有实现。自从您提到它后,我将命名几个python库:

对于NB:

  • scikit-learn:是一个非常易于使用的python库,其中包含几种机器学习算法的实现,包括Naive Bayes。

  • NaiveBayes:还没有使用过,但我想它的名字与之相关。

由于RNN被视为深度学习算法,因此它们在所有主要的深度学习库中都有实现:

  • TensorFlow:目前最流行的DL库。由Google发布和维护。

  • theano:与tf类似的图书馆,由蒙特利尔大学发行。

  • keras:tf和theano的包装器。容易得多。如果您想实现RNN,我建议您使用什么。

  • caffe:由UC Berkeley发布的DL库。有python API。

如果您具有启用CUDA的NVIDIA GPU,则以上所有均提供GPU支持。

Python的NLTK是主要用于自然语言处理(词干,标记化,词性标记)的库。尽管它具有情感包,但它不是重点。我很确定NLTK使用NB进行情感分析。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.