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