自然语言处理——从文本数据中提取情感
介绍
自然语言处理 (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 个变量,如下所述:
- 推文:由用户的 Twitter 评论组成。Twitter 数据是公开的。
- 平均:推文的平均情绪(-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 进行自然语言处理的更多信息,请参阅以下指南:
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
 
                                 
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                 
                             
                                     
                                     
                                     
                                     
     
    
 
             
   
        
请先 登录后发表评论 ~