👼🏻学习日记|Day9:在 Python 中使用 NLP 进行情感分析
00 分钟
2023-4-30
2023-8-26
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
情感分析是自然语言处理 (NLP) 中的一个强大工具,可以帮助我们理解和量化文本数据中表达的情绪基调和情绪。随着社交媒体和用户生成内容的兴起,情绪分析已成为文本分析中越来越重要的部分,因为它使我们能够深入了解公众舆论、客户反馈和品牌声誉。
接下来,将探讨如何使用 Python 和三个流行的库(NLTK、TextBlob 和 VADER)执行情感分析。将从介绍情感分析的基本概念开始,包括极性、主观性和强度。然后我们将深入每个库并学习如何使用它们来分析文本数据中的情绪。
 
notion image

1. 使用 NLTK 进行情绪分析

NLTK(自然语言工具包)是一个流行的 NLP Python 库。要使用 NLTK 执行情感分析,可以从导入库并下载所需的数据集开始:
接下来,可以从 NLTK 库创建 SentimentIntensityAnalyzer 类的实例,它使用基于词典的方法来确定给定文本的情绪:
最后,可以使用polarity_scores()SentimentIntensityAnalyzer 类的方法来获取给定文本的情感分数。该方法返回一个包含四个项目的字典:negneuposcompound,分别代表负面、中性、正面和总体情绪得分:
上面的打印语句将产生以下内容:
在这里,复合分数 0.8516 表示积极情绪。
 
同样,TextBlob 和 VADER 是其他流行的库,可用于 Python 中的情感分析。TextBlob 库为情绪分析提供了一个简单的 API,而 VADER 是一个基于规则的情绪分析工具,它结合了词典和基于规则的方法。
 
notion image

2. 使用 TextBlob 执行情绪分析

下面是使用 TextBlob 库进行情感分析的示例代码:
在这里,我们首先导入 TextBlob 库并根据输入文本创建一个 TextBlob 对象。然后,我们使用sentimentTextBlob 对象的属性来获取文本的极性分数,范围从 -1(负)到 1(正)。最后,我们使用 if-else 语句根据极性分数打印情感标签。
上述代码片段的输出如下所示:
注意,TextBlob 还提供了一个subjectivity属性,取值范围从 0(客观)到 1(主观),表示文本中个人观点、情感或判断的程度。您可以使用此属性进一步分析文本的情感。
这是修改后的代码,除了极性之外还使用了主观性:
sentiment在这里,我们首先使用TextBlob 对象的属性计算极性和主观性分数。然后,我们使用 if-else 语句根据两个分数打印情绪标签。
上述代码片段的输出如下所示:
在此示例中,文本具有高度主观性(即个人意见、情感或判断)的强烈积极情绪。
 
notion image

3. 使用 VADER 进行情绪分析

下面是使用 VADER 库进行情绪分析的示例代码:
SentimentIntensityAnalyzer在这里,我们首先从模块中导入类nltk.sentiment.vader并创建类的实例。然后,我们使用polarity_scores()analyzer对象的方法得到输入文本的情感分数,包括正面、负面和中性分数以及总体复合分数,范围从-1(极度负面)到1(极度积极的)。最后,我们使用 if-else 语句根据复合分数打印情感标签。
上述代码片段的输出如下所示:
请注意,VADER 旨在很好地处理社交媒体文本和非正式语言,它结合使用基于词典和基于规则的方法来分析情绪。VADER 还提供了更细粒度的情感信息,例如文本中特定情感词的强度和极性。您可以使用这些信息进一步分析文本的情感。
Positive sentiment
Positive words and their intensity:
great 3.1
l 2.0
love 3.2
loved 2.9
这是一个修改后的代码,它使用 VADER 来提取除了整体情绪之外的情绪词的强度和极性:
polarity_scores()在这里,我们首先使用类的方法计算情感分数SentimentIntensityAnalyzer然后,我们使用 if-else 语句根据复合分数打印情感标签。
如果总体情绪是积极的,我们还使用 for 循环和条件语句从 VADER 词典中提取积极情绪词及其强度。我们按字母顺序对单词及其强度进行排序,并仅打印输入文本中出现的具有正强度的单词。
如果整体情绪是负面的,我们会做同样的事情,但对于负面情绪词及其强度。
上述代码片段的输出如下所示:
请注意,VADER 词典包含数千个单词及其情感强度,它旨在与社交媒体文本和非正式语言很好地配合使用。强度值的范围为 -4 到 +4,值越高表示情绪极性越强。
 
notion image

结论

总之,情感分析是自然语言处理中的一项强大技术,可以帮助我们深入了解文本数据中表达的情绪基调和情绪。Python 提供了一系列用于情感分析的库,在本教程中,探索了三个流行的库——NLTK、TextBlob 和 VADER。
我们首先讨论了情感分析的基本概念,包括极性、主观性和强度,然后展示了如何使用每个库来分析文本数据中的情感。我们还提供了代码示例和分步说明来帮助您开始使用每个库,并讨论了一些使用情绪分析的最佳实践和技巧。
通过学习如何使用 Python 中的 NLP 执行情感分析,可以为文本分析工具包添加一个强大的工具,并获得有关客户反馈、公众舆论和品牌声誉的宝贵见解。

 
作者:Soumen Atta
 

评论