Python 中的情感分析

2025年1月12日 | 阅读 6 分钟

在本文中,我们将讨论 Python 中的情感分析。这个应用程序再次证明了这种编程语言是多么通用。但在开始情感分析之前,让我们先看看我们都应该了解的背景知识:

所以,在这里我们将讨论-

  1. 什么是自然语言处理?
  2. 什么是自然语言处理工具包?
  3. 朴素贝叶斯算法
  4. 情绪分析

让我们从自然语言处理开始-

简单来说,我们可以说计算机可以理解和处理人类语言。这里的目标是从文本数据中获取有用的信息。输入的原数据会经历不同的处理阶段,以便我们对其进行所需的操作。

在数据清理阶段,我们会得到一个称为“干净文本”的单词列表。其中一些步骤包括分词、停用词移除、词干提取和向量化(将单词转换为数字的过程),然后最后我们进行分类,也称为文本标记或文本分类,在这里我们将文本分类到明确定义的组中。

所以,以上就是关于自然语言处理的全部内容,现在让我们看看开源工具自然语言处理工具包可以如何帮助我们。

这是一个平台,我们使用它来编写 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 中实现它?

情感分析用于检测或识别文本中包含的情感。

这种分析有助于我们获取文本的参考,这意味着我们可以理解内容是积极的、消极的还是中性的。

纵观当前形势,所有商业巨头都需要清楚地了解他们的产品从客户那里收到了什么样的反馈,以及如何根据不断出现的需求进行改进。

以下是情感分析过程涉及的步骤-

  1. 导入数据集。
    数据集可以从真实来源获取,并使用 `read_csv` 导入到我们的代码编辑器中。
  2. 下一个关键步骤是找出影响我们目标情感的特征。
  3. 一旦我们根据可视化得出结论,就可以进行下一步,即创建“词云”。
  4. 下一步是将评论分为积极和消极。
  5. 现在我们将为两种评论创建词云。
  6. 可以通过条形图了解数据集中获得的词云数量。
  7. 模型可以使用以下方法构建-
    1. 首先,清理数据并确保遵循所有预处理阶段。
    2. 下一步是分割只包含所需特征的数据框。
    3. 创建词袋,这意味着进行向量化,将文本转换为整数矩阵。
    4. 现在我们将导入逻辑回归,它将实现具有分类变量的回归。
    5. 现在让我们将数据分割为自变量和目标变量。
    6. 让我们获取训练数据集并将其拟合到模型中。
    7. 接下来,我们可以获取测试数据集并进行预测。
    8. 最后的任务是使用评估指标测试我们模型的准确性。

让我们通过一个例子来理解这一点-

在这里,我们在训练数据集 (x_train) 中取了一些句子,在 y_train 中取了值 0 和 1,其中 1 表示积极,0 表示消极。

代码

输出

Sentiment Analysis in Python

2. 下一步是导入将帮助我们实现自然语言处理中主要过程所需的库。

让我们来理解分词、词干提取和停用词的过程-

  1. 分词- 这是将文本数据分解成更小的组成部分,如单词或短语的过程。
  2. 词干提取-词干提取通过删除前缀或后缀将单词还原为其词根形式。此过程有助于剥离单词以获取其基本形式,即使添加的词有时会改变单词的原始含义。
  3. 停用词 停用词移除是消除对句子结构和可读性有贡献但没有添加显著意义的常用词的过程。此步骤有助于隔离对情感分析等任务至关重要的关键词。

代码

输出

Sentiment Analysis in Python

3. 下一步是创建分词器、停用词和 PortStemmer 的对象。

我们想连接单词,所以我们将使用正则表达式并将 `\w+` 作为参数传递。

由于我们使用的是英语,我们将指定“english”作为停用词中的参数。

代码

输出

Sentiment Analysis in Python

4. 下一步是创建一个函数来清理我们的数据。

我们将把文本转换为小写,然后实现分词。

在给定的函数中,我们同时执行分词和停用词移除。(token for token in tokens if token not in en_stopwords)

接下来的事情是进行词干提取,然后连接词干化的词。

代码

输出

Sentiment Analysis in Python

5. 以下是我们将用于清理目的的 x_test 数据。

代码

输出

Sentiment Analysis in Python

6. 在此步骤中,我们已从 X_train 和 X_test 获取了数据并对其进行了清理。

代码

输出

Sentiment Analysis in Python

7. 当我们想查看清理后的数据时,可以通过键入 X_clean 来完成-

代码

输出

Sentiment Analysis in Python

8. 在进行分类之前,执行向量化以获得所需格式很重要。为此,我们需要导入一些库。

代码

输出

Sentiment Analysis in Python

9. 特征名称有助于我们了解 0 和 1 的值代表什么。可以使用以下方法完成:

代码

输出

Sentiment Analysis in Python

10. 现在,为了执行文本分类,我们将使用多项式朴素贝叶斯-

代码

输出

Sentiment Analysis in Python

预测时,它会以数组 [1,0] 的形式给出结果,其中 1 表示测试集中的积极,0 表示消极。

因此,在本文中,我们讨论了理解情感分析的先决条件以及如何在 Python 中实现它。