Python中的情感分析
在本文中,我们将讨论Python中的情感分析。这个应用程序再次证明了这种编程语言的多功能性。但在开始情感分析之前,让我们看看我们必须了解的背景是什么-
所以,我们将讨论以下内容-
- 什么是自然语言处理?
- 什么是自然语言处理工具包?
- 朴素贝叶斯算法
- 情感分析
让我们从自然语言处理开始-
简单来说,我们可以说计算机可以理解和处理人类语言。这里的目标是从文本数据中获取有用的信息。输入的原始数据经过各种处理阶段,以便我们对其执行所需的操作。
在数据清理阶段,我们获得一个称为干净文本的单词列表。其中涉及的一些步骤包括分词、停用词移除、词干提取和矢量化(将单词转换为数字的处理),最后我们进行分类,也称为文本标记或文本分类,将文本分类为明确定义的组。
所以,关于自然语言处理的介绍到此为止,现在让我们看看开源工具自然语言处理工具包如何帮助我们。
这是一个平台,我们使用它来编写可以应用于自然语言处理的所有预处理阶段的Python程序。
现在,下一个任务是使用朴素贝叶斯算法对文本进行分类,那么让我们了解一下它是如何工作的?
这种有监督算法的原理基于贝叶斯定理,并且我们使用该定理来找到条件概率。
贝叶斯定理由以下数学公式表示-
P(A|B) = P(B|A)*P(A)/P(B)
P(A|B)(后验概率)- 事件B已经发生时事件A发生的概率。
P(B|A)(似然概率)- 事件A已经发生时事件B发生的概率
P(A)(先验概率)- 事件A发生的概率。
P(B)(边际概率)- 事件B发生的概率。
情感分析
在了解前提条件后,让我们详细了解情感分析是什么以及我们如何在Python中实现它。
情感分析用于检测或识别文本中包含的情感。
这种分析帮助我们了解我们文本的态度,也就是说,我们可以理解内容是积极的、消极的还是中性的。
从当前的情况来看,所有的商业巨头都需要清楚地知道他们的产品从客户那里获得的反馈是什么,以及如何根据不断出现的需求进行调整。
情感分析的过程中涉及以下步骤-
- 导入数据集。可以从可靠资源中获得数据集,并使用read_csv将其导入到我们的代码编辑器中。
- 下一个关键步骤是找出影响我们目标情感的特征。
- 一旦我们根据可视化得出结论,我们可以进入下一步,即创建“词云”。
- 下一步是将评论分类为积极和消极。
- 现在我们将为两个评论创建词云。
- 可以通过条形图来了解数据集中获得的词云数量。
- 可以使用以下步骤构建模型:
1. 首先,清理数据并确保遵循所有预处理阶段。
2. 下一步是拆分只包含所需特征的数据框。
3. 创建一个词袋,即进行将文本转换为整数矩阵的向量化。
4. 现在我们将导入逻辑回归,它将使用分类变量实现回归。
5. 现在让我们将数据拆分为独立变量和目标变量。
6. 让我们将训练数据集拟合到模型中。
7. 接下来,我们可以将测试数据集用于预测。
8. 最后任务是使用评估指标测试模型的准确性。
让我们通过一个示例来理解:
在我们的训练数据集(x_train)中,我们选取了一些句子,其中y_train中的值为0和1,其中1表示积极,0表示消极。
代码
X_train=["JavaTpoint provides best tutorial for students",
"It is a great platform to start off your IT career",
"Concepts are explained very well",
"The articles have some interesting examples",
"Some tutorials are bad",
"Their content can confuse students"]
y_train=[1,1,1,1,0,0] #1-Positive, 0 -Negative
X_train
输出
2.下一步是导入所需的库,这些库将帮助我们实现自然语言处理中的主要过程。
让我们了解令牌化、词干提取和停用词这些过程 –
- 令牌化- 这个过程将我们的文本数据分割成更小的部分,比如单词和短语。
- 词干提取- 我们知道,通过给词干添加前缀和后缀,所有基本词都可以生成新词,但有时这些添加可以改变词根的实际含义,因此词干提取是将这些添加从词根中分离出来的过程。
- 停用词- 在停用词移除的过程中,我们去除用于构成句子并使其对读者来说易于理解的词。我们在文本上执行这个过程,以获取帮助我们分析情感的关键词。
代码
from nltk.tokenize import RegexpTokenizer
from nltk.stem.porter import PorterStemmer
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
输出
3.下一步是创建tokenizer、stopwords和PortStemmer的对象。