我想对文本进行情感分析,浏览了几篇文章,其中一些正在使用“朴素贝叶斯”,另一些是“递归神经网络(LSTM)”,另一方面,我看到了用于情感分析的python库,是nltk。它使用“朴素贝叶斯”(Naive Bayes)谁能解释使用两者的区别?
我也阅读了这篇文章,但对两者都不清楚。
我想对文本进行情感分析,浏览了几篇文章,其中一些正在使用“朴素贝叶斯”,另一些是“递归神经网络(LSTM)”,另一方面,我看到了用于情感分析的python库,是nltk。它使用“朴素贝叶斯”(Naive Bayes)谁能解释使用两者的区别?
我也阅读了这篇文章,但对两者都不清楚。
Answers:
朴素贝叶斯与递归神经网络的区别
首先,让我们说它们都是分类器,这是为了解决统计分类问题。这意味着您有大量数据(在您的案例中为文章)分为两个或多个类别(在您的案例中为正面/负面情绪)。分类器的目标是学习如何将文章分为这两个类别,然后能够自己对新文章进行分类。
可以解决此任务的两个模型是朴素贝叶斯分类器和递归神经网络。
朴素贝叶斯
为了使用此分类器进行文本分析,通常需要对文本(词袋 + 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进行情感分析。