情感分析工具: TextBlob 与 VADER 的对比

news2025/1/19 2:27:35

一、说明

         在本文我们将看到,在情感分析方面,我们更喜欢哪个库。这取决于很多情况。例如。数据采集。在我们进行分析之前,让我们先看看这两个库是关于什么的。

二、亮相工具库 

2.1. 工具库TextBlob介绍:

图像。https://textblob.readthedocs.io/en/dev/index.html

图像。TextBlob: Simplified Text Processing — TextBlob 0.16.0 documentation

TextBlob 是一个 python 库,可用于多个自然语言处理 (NLP) 任务,例如:

  • 名词短语提取
  • 词性标记
  • 情绪分析
  • 分类
  • 标记化
  • 单词和短语频率
  • 解析
  • n 元语法
  • 词形变化(复数和单数化)和词形还原
  • 拼写更正

#VADER 图像

2.2. 工具库VADER介绍:

VADER(Valence Aware Dictionary and sEntiment Reasoner)是一种基于词典和规则的情感分析工具,(Lexicon 意味着 NLP 系统的组件,其中包含有关每个单词或单词字符串的语义或语法等信息。例如。“无击球手”,“前进跑”和“巴尔的摩排骨”等是棒球词典的一部分,“边界”,“死亡结束”,“杜斯拉”等是板球词典的一部分。这是根据社交媒体的表达进行训练的。

词典情绪分析输出从 -1 到 1 的极性分数,其中 -1 表示真正的负面情绪,1 表示真正积极的情绪。接近 0 的值表示中性情绪。

三、TextBlob对比VADER:

        TextBlob和VADER之间的关键区别在于VADER专注于社交媒体。因此,VADER 投入了大量精力来识别通常出现在社交媒体上的内容的情绪,例如表情符号、重复单词和标点符号。

现在,我们将在情感分析中比较 VADER 和 TextBlob,因为 VADER 是仅用于情感分析的库。

3.1 步骤:

让我们首先安装这两个库。以下代码片段将帮助我们进行安装。

!pip install textblob
!pip install vaderSentiment

现在,让我们导入库。

#Importing libraries
from textblob import TextBlob
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

现在,让我们创建函数:

#Define funcitons for VADER and textblob

def vader_score(text):
    
    #After using VADER we will get  4 values: pos, compound, neu and neg.
    #pos:positive, neu:neutral, neg:negative
    #Here we are only collecting the compound. Why?
    #Because compound score is computed by summing the valence scores of each word in the lexicon, 
    #adjusted according to the rules, and then normalized to be between -1 (most extreme negative) and +1 (most extreme positive).
    
    vader_sentiment = SentimentIntensityAnalyzer()
    score = vader_sentiment.polarity_scores(text) 
    return score['compound']
def textblob_score(text):
    
    #textblob_sentiment.sentiment will give us 2 values: polarity and subjectivity
    #The polarity score is a float within the range [-1.0, 1.0]. 
    #The subjectivity is a float within the range [0.0, 1.0] where 0.0 is very objective and 1.0 is very subjective.
    # Here we are interested in polarity, so we are using polaroty
    
    textblob_sentiment = TextBlob(text)
    score = textblob_sentiment.sentiment.polarity
    return score

        让我们看一下每种情绪(积极、消极和中性)的示例。

        让我们创建一个包含 3 个句子的列表,每个句子有一个肯定的、一个否定的和一个中性的句子。所以我们可以看到,VADER和TextBlob在它们上的表现。

#List of sentences with different emotions.
#First sentence is neutral.
#second is positive and 
#third is negative.
text_list = ["This is my first ever post on the internet.", 
             "I am very excited to write this post.", 
             "It's not good to work late hours."]

        现在让我们创建一个 for 循环,它将遍历每个句子,并为我们提供之前创建的 “vader_score” 和 “textblob_score” 函数的输出。

#Here it will iterate through every sentence from the text_list list
#and will output the sentence first and on the next line it will
#print the vader score and in the next line it will print the
#textblob score.
for text in text_list:
    print(f'sentence: {text} \n VADER sentiment score: {vader_score(text)} \n TextBlob score: {textblob_score(text)}')
    print("=" * 30)

我们将得到这样的输出。

sentence: This is my first ever post on the internet. 
 VADER sentiment score: 0.0 
 TextBlob score: 0.25
==============================
sentence: I am very excited to write this post. 
 VADER sentiment score: 0.4005 
 TextBlob score: 0.48750000000000004
==============================
sentence: It's not good to work late hours. 
 VADER sentiment score: -0.3412 
 TextBlob score: -0.32499999999999996
==============================

        从上面的单元格中,我们可以得出结论,VADER完美地将第一句话识别为中性句子,而TextBlob离它并不远。然后对于第二句话,VADER给出了正分数,但TextBlob给了我们一个更积极的分数。对于最后一句话,VADER给出的负分比TextBlob更高。

        现在,我们可以说VADER和TextBlob都给出了相似的分数。

        现在,由于它看起来很棒,我们需要对句子进行一些更改以进一步深化我们的研究。例如。我们可以添加表情符号,标点符号,大写,重复等。然后我们将看到哪个表现更好。

        检查标点符号的影响:

#Adding punctuations
text_list = ["This is my first ever post on the internet!", 
             "I am very excited to write this post!", 
             "It's not good to work late hours!"]
sentence: This is my first ever post on the internet! 
 VADER sentiment score: 0.0 
 TextBlob score: 0.3125
==============================
sentence: I am very excited to write this post! 
 VADER sentiment score: 0.4561 
 TextBlob score: 0.609375
==============================
sentence: It's not good to work late hours! 
 VADER sentiment score: -0.4015 
 TextBlob score: -0.3625
==============================

        现在,从上面的单元格中,我们可以说,感叹号确实提高了我们在所有句子中的分数。但是对于我们的中性句子(句子 1),TextBlob 走得更远了。

        检查大写的影响:

#Capitalizing words
text_list = ["This is my FIRST EVER post on the internet!", 
             "I am very EXCITED to write this post!", 
             "It's NOT GOOD to work late hours!"]
sentence: This is my FIRST EVER post on the internet! 
 VADER sentiment score: 0.0 
 TextBlob score: 0.3125
==============================
sentence: I am very EXCITED to write this post! 
 VADER sentiment score: 0.5744 
 TextBlob score: 0.609375
==============================
sentence: It's NOT GOOD to work late hours! 
 VADER sentiment score: -0.5007 
 TextBlob score: -0.3625
==============================

        现在,我们可以说,我们的VADER分数提高了,但TextBlob分数保持不变。为什么会这样?好吧,原因是VADER认为大写版本具有更强的情绪并增加了情绪得分。同时,TextBlob 没有区分单词的大写和小写版本之间的情绪。

        检查重复单词的影响:

text_list = ["This is my VERY VERY FIRST EVER post on the internet!", 
             "I am very very EXCITED to write this post!", 
             "It's NOT NOT NOT GOOD to work late hours!"]
sentence: This is my VERY VERY FIRST EVER post on the internet! 
 VADER sentiment score: 0.0 
 TextBlob score: 0.40625
==============================
sentence: I am very very EXCITED to write this post! 
 VADER sentiment score: 0.6119 
 TextBlob score: 0.609375
==============================
sentence: It's NOT NOT NOT GOOD to work late hours! 
 VADER sentiment score: -0.3311 
 TextBlob score: -0.3625
==============================

        通过重复的单词,我们可以看到VADER分数的明显变化,但这不会影响TextBlob分数。这是为什么呢?简单地说,这是因为VADER认为重复的单词具有更强的情感,而TextBlob没有解释重复的单词。

检查表情符号的影响:

text_list = ["This is my VERY VERY FIRST EVER post on the internet🫡🤔!",
             "I am very very EXCITED to write this post😍😇!", 
             "It's NOT NOT NOT GOOD to work late hours☹️😳!"]
sentence: This is my VERY VERY FIRST EVER post on the internet🫡🤔! 
 VADER sentiment score: 0.0 
 TextBlob score: 0.40625
==============================
sentence: I am very very EXCITED to write this post😍😇! 
 VADER sentiment score: 0.8749 
 TextBlob score: 0.609375
==============================
sentence: It's NOT NOT NOT GOOD to work late hours☹️😳! 
 VADER sentiment score: -0.5802 
 TextBlob score: -0.3625
==============================

我们可以清楚地看到,维德分数正在提高。但是 TextBlob 分数根本没有变化。

四、结论:

根据我们所做的实验,这是否意味着VADER库比TextBlob更好?答案是否定的。但是为什么?因为:

TextBlob 可以做的不仅仅是情绪分类。

VADER-情感分析主要针对基于社交媒体数据的情感分析进行训练。TextBlob 的情况并非如此。

因此,我们不能得出VADER更好或TextBlob更好的结论。每个都有自己的用例。您可以根据问题陈述选择要使用的一个。

哈沙德·帕蒂尔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对自定义表格数据设计自定义查询/汇总

目录 1 前言 2 生成数据 3 设计一个汇总 4 试一下效果 5 导出为excel文件的源代码 6 后记 1 前言 对自定义表格中录入或者导入的数据,必须能定义查询和汇总,否则程序基本没什么用。就是说,程序应该具备对任意表格进行方便的查询汇总公式…

VS Code终端系统启动失败的问题

一百度真的是各种各样打不开,有的配置一下就可以了,有的改成管理员权限就可以了,我的是怎么设置都不行,安装了最新版本的不行,又退了几个版本才行了,1.56版本内网行,1.55版本能行,比…

企业权限管理(十五)-方法级别权限控制

方法级别权限控制 jsr-250 3.Secured注解使用 开启表达式的使用 页面控制 显示xxx在线 <div class"pull-left info"><p><security:authentication property"principal.username"></security:authentication></p><a h…

Blazor:子组件deep:: 样式修改无效

文章目录 资料无效代码有效代码 资料 Blazor Css隔离 简单来说&#xff0c;就是外层要加个div&#xff0c;不加div就无法识别。 无效代码 <Layout ShowFooter"true" class"Layout" SideWidth"100px"><Header><div class"t…

C语言刷题训练DAY.3

1.ASCII码 解题思路&#xff1a; 这里直接以字符的形式打印就行&#xff1a; 解题代码&#xff1a; #include<stdio.h> int main() {printf("%c%c%c%c%c%c%c%c%c%c%c%c", 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33);return 0; } 2.出生日期输…

09 - 连续的多个commit整理成1个

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 将连续的多个commit整理成1个 将连续的多个commit整理成1个 将anranxiaohunzhang和xianglongshibazhang合并起来&#xff08;将anranxiaohunzhang合并到降龙十八掌上&#xff0c;生成新…

概要设计完整版word文档,《某信息管理平台总体设计方案》,505页20万字供参考,附下载

上一篇介绍了软件生命周期全过程&#xff0c;软件工程全周期全过程20项文档模板&#xff0c;附下载。从《合同》到《需求规格说明书》到软件设计、开发、实施、验收、维护等全过程相关文档模板。有朋友反馈附件内容没有补全&#xff0c;本次及后续会用实际案例补全附件内容&…

竞赛项目 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

5_docker-compose多服务统一编排管理

系列文章目录 第1章 Linux安装Docker 第2章 Docker安装jdk1.8和MySql 第3章 Docker安装redis 第4章 Jar包部署Docker 第5章 Docker-compose多服务统一编排管理 第6章 AccessKeyId和AccessKeySecret的环境变量配置 文章目录 系列文章目录前言 一、编写docker-compose.yml二、上…

如何控制项目范围?

大家好&#xff0c;我是沐尘而生&#xff0c;今天让我和大家一起走进&#xff0c;产品经理实战百问百答&#xff0c;从问题入手&#xff0c;一步一个脚印&#xff0c;习惯产品经理岗位。如有错误或不当之处&#xff0c;请指正&#xff0c;谢谢&#xff01; 1. 项目范围与项目成…

Ae 效果:CC Cylinder

透视/CC Cylinder Perspective/CC Environment CC Cylinder&#xff08;CC 圆柱体&#xff09;效果可将图层映射到受光照的圆柱体上&#xff0c;支持 Alpha 通道&#xff0c;圆柱体可呈镂空状。 要注意&#xff0c;虽然本效果可生成一个非常生动的 3D 圆柱体外观&#xff0c;但…

PyQt6安装教程

目录 1、安装PyQt6和pyqt6-tools 2、在Pycharm里配置Qt Designer 3、配置Pyuic工具 4、配置Pyrcc工具 5、三个工具的作用 1、安装PyQt6和pyqt6-tools pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install PyQt6-tools -i https://pypi.tuna.tsin…

CloudCompare进行点云数据样本标注

1.下载安装CloudCompare。 2.打开点云数据&#xff0c;鼠标左键用于旋转数据&#xff0c;鼠标右键用于平移数据&#xff0c;滚轮调整数据大小远近。 3.点击选中左侧数据&#xff0c;点击“剪刀”工具。 4.框选目标对象进行裁剪。 5.先后点击“五边形”和“对号”。 6.完成第…

山西电力市场日前价格预测【2023-08-16】

日前价格预测 预测明日&#xff08;2023-08-16&#xff09;山西电力市场全天平均日前电价为363.90元/MWh。其中&#xff0c;最高日前电价为430.17元/MWh&#xff0c;预计出现在19: 30。最低日前电价为318.33元/MWh&#xff0c;预计出现在13: 00。 价差方向预测 1&#xff1a; 实…

从数据到价值:数据中台如何加速数字化转型?

在当今数字化时代&#xff0c;数据已经成为企业成功的关键因素之一。企业不再只是生产产品或提供服务&#xff0c;而是需要从大量的数据中获取洞察&#xff0c;优化运营并创造价值。在这个背景下&#xff0c;数据中台成为了加速数字化转型的重要策略之一。本文将深入探讨数据中…

MAUI+Masa Blazor APP 各大商店新手发布指南(一)App Store篇

文章目录 前言新手常见审核意见Guideline 2.1 - Information NeededGuideline 3.2 - BusinessGuideline 2.1 - Performance - App CompletenessGuideline 2.3.8 - Performance - Accurate MetadataGuideline 5.1.1(v) - Data Collection and StorageGuideline 4.2 - Design - M…

使用Python统计字符内容的占比

说明&#xff1a;如果有自己动手做过字符动画&#xff0c;会知道字符动画的“灵动性”核心在于使用的字符集。 简单来说&#xff0c;动画转为字符动画&#xff0c;原理是将动画转为灰阶图&#xff0c;灰度范围是0~255&#xff0c;然后将对应灰度的像素点转为对应比值的字符。这…

【数据结构OJ题】链表的中间结点

原题链接&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 快慢指针法 通过快慢指针找到中间结点&#xff0c;快指针每次走两步&#xff0c;慢指针每次走一步&#…

ignition gazebo || 解决ignition gazebo启动后所有图标都是黑方块的问题

问题&#xff1a; 启动ignition gazebo出现图表全黑的情况 ign gazebo 解决方案 sudo apt install aptitude aptitude是一款针对debian系系统的系统依赖管理更加有效的包管理工具。我建议以后都使用aptitude进行包管理。 下面正式开始解决问题。 出现这个问题毫无疑问是qt…

java的类和对象详解

一、java是面向对象的编程语言 首先一般的编程语言有两种&#xff0c;一种是面向对象&#xff0c;一种是面向过程。前者更加关注代码中对象与对象之间关系与协作&#xff0c;而后者更加注重代码的执行过程。 举个例子 传统的方式&#xff1a;注重的是洗衣服的过程&#xff0c;…