自然语言处理——从文本数据中提取情感

发布日期:2026-07-19 09:20:05  来源 : 杭州电子商务研究院    浏览量 :0
杭州电子商务研究院 发布日期:2026-07-19 09:20:05  
0

介绍

自然语言处理 (NLP) 无处不在,在各个领域都有多种应用。最常见的应用之一是分析文本数据的情绪或极性 - 以客户评论、社交媒体信息、员工反馈、调查等形式。

情绪分析基本上是确定文本的态度或情感的过程,即它是积极的、消极的还是中性的。在本指南中,您将学习如何使用 Python 中的 TextBlob 库从文本中提取情绪。我们将首先导入本指南中要使用的库。

加载所需的库和模块

      # Adding needed libraries and reading data
import pandas as pd
import numpy as np

import warnings
warnings.filterwarnings('ignore')

# for text 
import nltk
nltk.download('stopwords')
    

文本块

TextBlob 是一个 Python 库,它提供了一个简单的 API 来访问其方法来执行各种 NLP 任务。下面的代码行将安装 TextBlob 库并下载必要的 NLTK 语料库。

      # $ pip install -U textblob 
# $ python -m textblob.download_corpora 
from textblob import TextBlob, Word, Blobber
    

让我们通过一个示例来了解 TextBlob 库的工作原理。下面的第一行代码包含文本示例,而第二行则打印文本。第三行使用情感函数并返回两个属性 - 极性和主观性。让我们检查一下示例的情感。

      text = TextBlob("Pluralsight is a great place for learning amazing technology courses")
print (text)
text.sentiment
    

输出:

      Pluralsight is a great place for learning amazing technology courses

Sentiment(polarity=0.7000000000000001, subjectivity=0.825)
    

上面的输出显示该句子的极性为 0.7,表明情绪是积极的。极性是 'float' 类型,范围是 [-1,1],其中 1 表示较高的积极情绪,-1 表示较高的消极情绪。

输出还打印了文本的主观性,在我们的示例中为 0.825。主观性也是“浮点”类型,范围在 [0,1] 内。接近 1 的值表示该句子主要是公众观点,而不是事实信息,反之亦然。我们现在了解了 TextBlob 库的工作原理。现在让我们在数据集上运行这个练习。

问题陈述

在本指南中,我们将着手了解关于苹果公司的推文情绪。数据集包含 1181 个观测值和 2 个变量,如下所述:

  1. 推文:由用户的 Twitter 评论组成。Twitter 数据是公开的。
  2. 平均:推文的平均情绪(-2 表示最负面,而 +2 表示最正面)。此分类是使用 Amazon Mechanical Turk 完成的。但是,出于本指南的目的,我们不会使用此变量。

加载数据并执行基本数据检查

下面的第一行代码将数据读入为 pandas 数据框,而第二行打印形状 - 2 个变量的 1,181 个观测值。第三行打印前五个观测值。

      dat = pd.read_csv('tweetsdata.csv')
print(dat.shape)
dat.head()
    

输出:

      (1181, 2)

|   	| Tweet                                             	| Avg  	|
|---	|---------------------------------------------------	|------	|
| 0 	| iphone 5c is ugly as heck what the freak @appl... 	| -2.0 	|
| 1 	| freak YOU @APPLE                                  	| -2.0 	|
| 2 	| freak you @apple                                  	| -2.0 	|
| 3 	| @APPLE YOU RUINED MY LIFE                         	| -2.0 	|
| 4 	| @apple I hate apple!!!!!                          	| -2.0 	|
    

目标是检测推文的情绪。因此,我们将首先检查前五条推文的情绪,这在下面的代码行中完成。

      dat['Tweet'][:10].apply(lambda x: TextBlob(x).sentiment)
    

输出:

      0                                    (-0.7, 1.0)
    1                                     (0.0, 0.0)
    2                                     (0.0, 0.0)
    3                                     (0.0, 0.0)
    4                                    (-1.0, 0.9)
    5                                    (-1.0, 1.0)
    6    (-0.13333333333333333, 0.16666666666666666)
    7     (-0.13221153846153846, 0.3846153846153846)
    8                                     (0.0, 0.0)
    9     (-0.47500000000000003, 0.7000000000000001)
    Name: Tweet, dtype: object
    

上面的输出是一个元组,表示每条推文的极性和主观性。由于我们对情绪感兴趣,我们将只提取极性并将其应用于所有观察。下面的第一行代码提取所有观察的极性,并将其存储在新变量“情绪”中。第二行打印前五个观察结果。

      dat['sentiment'] = dat['Tweet'].apply(lambda x: TextBlob(x).sentiment[0])
dat.head()
    

输出:

      |   	| Tweet                                             	| Avg  	| sentiment 	|
|---	|---------------------------------------------------	|------	|-----------	|
| 0 	| iphone 5c is ugly as heck what the freak @appl... 	| -2.0 	| -0.7      	|
| 1 	| freak YOU @APPLE                                  	| -2.0 	| 0.0       	|
| 2 	| freak you @apple                                  	| -2.0 	| 0.0       	|
| 3 	| @APPLE YOU RUINED MY LIFE                         	| -2.0 	| 0.0       	|
| 4 	| @apple I hate apple!!!!!                          	| -2.0 	| -1.0      	|
    

上面的输出显示,每个观察结果现在都有一个情绪极性分数,其中 1 表示积极情绪,-1 表示消极陈述。第一条和第五条记录显然是消极的,而其余三条记录的极性值为零。

结论

在本指南中,您了解了如何使用强大的 Python 库“TextBlob”从文本数据中提取情感。要了解有关使用 Python 进行自然语言处理的更多信息,请参阅以下指南:

  1. 自然语言处理 - 使用文本数据的机器学习
  2. 自然语言处理 – 文本解析
  3. 自然语言处理 - 主题识别
  4. 使用词云可视化文本数据
  5. 命名实体识别 (NER)
以上内容来自杭州电子商务研究院推送
分享到:

长按或扫码识别 分享给好友

长按或扫码识别 分享给好友
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据