Python中的Twitter情绪分析

2025年3月6日 | 阅读 5 分钟

什么是情感分析?

情感分析是一种用于确定文本片段情感基调的方法。它帮助我们将文本分类为正面、负面或中性,以了解人们对特定主题的感受。有时也被称为“意见挖掘”,它被广泛应用于不同领域——无论是商业、政治,还是分析社交媒体上的讨论。

例如,企业使用 情感分析 来了解客户对其品牌或产品的感受。它对于预测选举结果也很有帮助!

情感分析的必要性是什么?

  • 商业:在营销行业,企业使用它来制定营销计划,了解消费者对品牌或产品的感受,人们对其活动或新产品发布的反应,以及为什么客户选择不购买某些特定商品。
  • 政治:它被用于政治领域,以监测政治观点并识别官方言论和行动之间的模式或差异。它对于预测选举结果也很有用!

设置环境

在深入分析之前,您需要进行一些设置。

  • Pandas:这个库用于数据操作和处理
  • NumPy:另一个用于数值计算的 Python 库,它有助于处理大量数字的数组和矩阵。

要开始,请通过运行以下命令安装这些库

代码

此外,您还需要设置一些文本处理工具,我们将使用这些工具来清理和准备文本数据。

代码

使用 Python 实现 Twitter 情感分析

导入必要的模块

我们首先导入所需的模块,如下所示

代码

说明

此代码导入数据处理和 NLP 所需的库。

加载数据集

现在,让我们使用 pandas 加载数据集

代码

说明

数据集已加载到名为 pandas DataFrame 的数据框中。

输出

Twitter Sentiment Analysis Using Python

我们将重点关注对情感分析最重要的列,在本例中是推文的文本和情感标签。

代码

说明

该代码从 DataFrame 中选择“text”和“sentiment”列,分析文本数据和情感标签以供进一步处理。

输出

Twitter Sentiment Analysis Using Python

为了简化,让我们删除所有中性情感,因为我们专注于极端——正面或负面。

代码

输出

Twitter Sentiment Analysis Using Python

划分数据

我们将把数据划分为训练集和测试集。

代码

说明

train 变量保存了训练模型所需的信息。

输出

Twitter Sentiment Analysis Using Python

代码

输出

Twitter Sentiment Analysis Using Python

代码

输出

 
'RT @RWSurferGirl: It is very disappointing that Fox News is not conducting a "Fair & Balanced" Debate. ?? #GOPDebate  #GOPDebates'

代码

文本预处理

为了使数据更有用,我们需要对其进行清理。下面是一个函数,可以删除文本中不必要的部分,如标签、链接和特殊字符,并对单词进行词干提取或词形还原。

代码

说明

Clean_text 函数通过将每个单词还原为其基本形式、消除多余的字母以及更改文本的大小写来预处理文本数据。此外,它还会消除常用的停用词以突出重要单词。该函数遍历数据集中的每一行,将情感标签和清理后的文本添加到列表中,然后返回这些列表以供进一步检查。

现在,让我们将此函数应用于我们的训练数据。

代码

为建模准备数据

文本清理完毕后,我们将创建一个 DataFrame,并使用标签编码器将情感标签转换为数值。

代码

说明

pd = processed_data.DataFrame(final_data) 从 final_data 对象创建了一个 pandas 对象。Processed_data 是一个 DataFrame,它简化了数据处理和分析。

输出

Twitter Sentiment Analysis Using Python

代码

说明

该代码使用 LabelEncoder 将分类情感标签转换为数值。

输出

Twitter Sentiment Analysis Using Python

特征提取

代码

说明

CountVectorizer 使用一系列 ngrams 将文本数据转换为特征,捕捉各种单词组合以进行全面的建模。

输出

 
CountVectorizer(ngram_range=(1, 3))

代码

说明

该代码将预处理后的推文数据转换为适合模型训练的特征矩阵,并显示其尺寸。

输出

 
(9656, 81797)

代码

输出

 
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=int64)

代码

说明

target 是一个包含从 processed_data DataFrame 的 sentiments 列中提取的情感标签的集合。

输出

 
array([0, 0, 1, ..., 0, 0, 1])

构建模型

现在,让我们在训练数据上训练一个朴素贝叶斯分类器。

代码

说明

为了根据多项式 朴素贝叶斯 技术预测分类,将 MultinomialNB 分类器训练到特征矩阵 X_train(转换为数组)和目标标签上。这种方法通常应用于分类数据和文本分类。

输出

 
MultinomialNB()

评估模型

我们将清理并转换测试数据,然后使用训练好的模型来预测测试推文的情感。

代码

说明

该函数使用先前拟合的 CountVectorizer (cv) 将清理后的测试推文转换为名为 X_test 的特征矩阵。接下来,它通过检查 X_test 的形状来验证已更改数据的尺寸。

输出

 
(1073, 81797)

代码

说明

使用训练好的模型,代码会预测测试数据的感情。情感标签被编码为最终测试数据的数值。

输出

Twitter Sentiment Analysis Using Python

代码

输出

 
array([0, 0, 0, ..., 0, 1, 0])

代码

说明

使用准确率评分函数衡量总体预测。

输出

 
0.8527493010251631

代码

输出

Twitter Sentiment Analysis Using Python

代码

输出

 
array([0, 0, 0, ..., 0, 0, 0], dtype=int64)

代码

输出

 
array([0])