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

机器算法验证 机器学习 神经网络 Python 自然语言
2022-03-07 07:17:30

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

我也看过这个帖子,但不清楚他们两个..

贝叶斯网络、神经网络、决策树和 Petri 网之间的区别

1个回答

关于朴素贝叶斯和递归神经网络的区别

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

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

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

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

这两个模型(NB 和 RNN)在尝试执行此分类的方式上存在很大差异:

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

  • 另一方面,RNN 是一种判别模型。它试图找出正面和负面示例之间的差异,以便执行分类。

如果您想学习泥潭,我建议查询“判别式与生成式算法”

虽然 NB 已经流行了几十年,但由于需要大量计算资源,RNN 在过去十年开始寻找应用。RNN 大部分时间都在专用 GPU 上进行训练(其计算速度比 CPU 快得多)。

tl; dr:它们是解决同一任务的两种截然不同的方法

图书馆

因为这两种算法非常流行,所以它们在许多库中都有实现。既然你提到了,我会命名一些 python 库:

注意:

  • scikit-learn:是一个非常易于使用的 python 库,包含多种机器学习算法的实现,包括朴素贝叶斯。

  • NaiveBayes:没用过,但我想从名字上看它是相关的。

因为 RNN 被认为是一种深度学习算法,所以它们在所有主要的深度学习库中都有实现:

  • TensorFlow:目前最流行的深度学习库。由谷歌发布和维护。

  • theano:与 tf 类似的库,较旧,由蒙特利尔大学出版。

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

  • caffe:加州大学伯克利分校发布的深度学习库。有python API。

如果您有启用 CUDA 的 NVIDIA GPU,以上所有内容都提供 GPU 支持。

Python 的NLTK是一个主要用于自然语言处理(词干、分词、词性标注)的库。虽然它有一个情绪包,但它不是焦点。我很确定 NLTK 使用 NB 进行情绪分析。