当前位置: 首页 > news >正文

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

一、说明

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

二、亮相工具库 

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 textblobdef 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 polarotytextblob_sentiment = TextBlob(text)score = textblob_sentiment.sentiment.polarityreturn 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更好的结论。每个都有自己的用例。您可以根据问题陈述选择要使用的一个。

哈沙德·帕蒂尔

相关文章:

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

一、说明 在本文我们将看到,在情感分析方面,我们更喜欢哪个库。这取决于很多情况。例如。数据采集。在我们进行分析之前,让我们先看看这两个库是关于什么的。 二、亮相工具库 2.1. 工具库TextBlob介绍: 图像。TextBlob: Simplif…...

uft8和utf8mb4的区别

文章目录 1、Unicode字符集2、UTF-8 编码3、utf8mb3 字符集4、utf8mb4 字符集5、utf8mb3和utf8mb4的区别 1、Unicode字符集 Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传…...

针对低分辨率或小目标的卷积-SPDConv

针对低分辨率或小目标的卷积-SPDConv 摘要引言A New Building Block:SPD-Conv附录代码: 摘要 卷积神经网络在许多计算机视觉任务中取得了巨大成功。然而,在图像低分辨率或目标较小任务上,他们的性能迅速下降。在本文中,我们指出&…...

vue基础-vue监听当前屏幕大小做不同的操作

文章目录 前言一、代码如下:总结 前言 在vue项目开发过程中,有个需求,就是当屏幕大于1024时,我们默认为PC模式。小于1024时,我们默认为H5模式。但是有的界面我们想在PC和H5上面展示不同的数据,请求不同的接…...

Unity框架学习--3

单例模式基类 构造函数私有化,防止外部创建对象 提供一个属性给外部访问,这个属性就相当于是这个类的唯一对象 分为懒汉模式和饿汉模式 不继承MonoBehaviour的单例模式 public static MyUiManager Instance {get{if (instance null){instance new …...

ARMday2

.text .global _start _start:mov r0,#0x1mov r1,#0x0sum:cmp r0,#0x64bhi stopaddls r1,r1,r0addls r0,r0,#0x1bls sumstop:b stop .end...

IntelliJ IDEA和Android studio怎么去掉usage和作者提示

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码&#xf…...

ssm营业厅宽带系统源码和论文

ssm简易版营业厅宽带系统源码和论文018 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储&#xff0c…...

CSS:background 复合属性详解(用法 + 例子 + 效果)

目录 background 复合属性background-color 背景颜色(纯)background-image 背景图片 或者 渐变颜色background-repeat 背景是否重复background-size 设置图片大小background-position 设置背景图片显示位置background-attachment 设置背景图片是否随页面…...

django中实现事务/django实现悲观锁乐观锁案例

django中实现事务的几种方式 # 1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程DATABASES {default: {#全局开启事务,绑定的是http请求响应整个过程ATOMIC_REQUESTS: True, }}from django.db import transaction# 局部禁用事务trans…...

自动驾驶技术:改变交通出行的未来

自动驾驶技术,这个让人充满期待的技术,正在改变我们的交通方式,带来一种全新的出行体验。它可以让汽车、无人机等交通工具像人类驾驶一样自主行驶,通过人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,实现…...

5.利用matlab完成 符号矩阵的转置和 符号方阵的幂运算(matlab程序)

1.简述 Matlab符号运算中的矩阵转置 转置向量或矩阵 B A. B transpose(A) 说明 B A. 返回 A 的非共轭转置,即每个元素的行和列索引都会互换。如果 A 包含复数元素,则 A. 不会影响虚部符号。例如,如果 A(3,2) 是 12i 且 B A.&#xff0…...

为什么要自动化Web测试?

Web自动化是更快地实现所需结果的较佳方式。自动化测试在市场上引起了巨大的轰动。此软件测试过程可以让您使用正确的自动化测试工具和技术集自动执行测试过程。我们执行它是为了检查软件应用程序是否具有完全按照我们希望它执行的方式执行的勇气。 比以往更快地获得反馈 自动化…...

Spark_RDD的容错机制_数据丢失恢复

我们都知道Spark是弹性分布式数据集,数据会存储在多台机器上,那么如何确保在分布式数据计算中,数据不丢失就是其中的关键的部分。本文主要讲解一下Spark中的容错机制。 Spark 主要提供了3个层面的数据容错机制。分别是 调度层,RDD…...

VB+SQL期刊信息管理系统设计与实现

摘 要 本次毕业设计课题为“期刊信息管理系统”,该系统在正常运营中总是面对大量的读者信息、期刊信息以及两者相互作用产生的借刊信息,还刊信息。因此需要对读者资源、期刊资源、借刊信息、还刊信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。 此次毕…...

如何在iPhone手机上修改手机定位和模拟导航?

如何在iPhone手机上修改手机定位和模拟导航? English 首先,你需要在Mac电脑上下载安装 Location Simulator/定位模拟工具 和 Runner 这两款应用程序。 完成安装后,打开软件,并用USB连接手机设备 修改iPhone手机定位和模拟导航 …...

Linux 当fork在for循环中的问题

以下代码会打印几个"A"&#xff1f; 例1.代码如下&#xff1a; int main(int argc, char* argv[],char* envp[]) { for(int i 0;i < 2; i ) { fork(); printf("A\n"); } exit(0); } 代码分析&#xff1a; //父进程for(int i …...

推断统计中非参数检验之卡方检验、列联表分析和游程检验

一、&#xff08;卡方检验&#xff09;&#xff1a;赛马比赛的赛道会影响成绩吗 这里以一个实例赛马比赛的赛道是否会影响成绩为例&#xff0c;实际就是检验获胜频数与期望频数之间有无显著性差异。 import pandas as pdstep1 调用包 from scipy.stats import chisquare impor…...

AI社交来了,百度、Soul“双向奔赴”

随着科技的飞速进步和迅猛发展&#xff0c;AI技术已经开始渗透到教育、工作、社交、娱乐和健康多个领域&#xff0c;并为人们生活中的多个场景带来了诸多的创新和可能性。甚至可以说&#xff0c;AI技术已经深刻地介入到了我们日常生活的方方面面&#xff0c;让我们的生活方式发…...

【【verilog 典型电路设计之加法器树乘法器】】

verilog 典型电路设计之加法器树乘法器 加法器树乘法器 加法器树乘法器的设计思想是“移位后加”&#xff0c;并且加法运算采用加法器树的形式。乘法运算的过程是&#xff0c;被乘数与乘数的每一位相乘并且乘以相应的权值&#xff0c;最后将所得的结果相加&#xff0c;便得到了…...

Midjourney火效生成速成课:从零到商用级火焰海报,仅需1次迭代+2个权重锚点+1个隐藏--stylize微调指令

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney火效生成的底层逻辑与商业价值 Midjourney 的“火效生成”并非指真实火焰的物理模拟&#xff0c;而是社区对高饱和度、强动态感、边缘迸发式光效图像&#xff08;如熔岩裂隙、霓虹爆燃、粒子喷射等&…...

3步解锁Windows远程桌面多人连接:RDP Wrapper Library完整指南

3步解锁Windows远程桌面多人连接&#xff1a;RDP Wrapper Library完整指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾因Windows家庭版无法支持多人远程桌面连接而感到困扰&#xff1f;当团队成员需要…...

【应用实战】基于Dify与多Agent的凭证与档案管理

一、智能文档处理&#xff1a;基于Dify与多Agent的凭证与档案管理革新 在金融行业&#xff0c;文档处理贯穿业务始终。传统的纯人工方式不仅耗时费力&#xff0c;而且极易出错。智能文档处理&#xff08;Intelligent Document Processing, IDP&#xff09;融合了OCR、自然语言处…...

JDK常用类与工具(速览版)

JDK常用类与工具&#xff08;速览版&#xff09;JDK&#xff08;Java Development Kit&#xff09;提供了丰富的标准库和实用工具&#xff0c;它们构成了Java开发者日常工作的基石。掌握这些核心类、集合框架、并发工具、IO/NIO库、日期时间API、正则表达式、异常处理机制、日志…...

Triton+KServe构建高可用ML模型服务的七道关卡

1. 项目概述&#xff1a;这不是一次“部署”&#xff0c;而是一场从实验室到产线的系统性迁移“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着太多被轻描淡写却重若千钧的词。“Notebook”不是指纸质本子&#xff0c;而是Jupyter里…...

STM32F103驱动TFT-LCD屏避坑指南:FSMC时序配置与ILI9341初始化那些事儿

STM32F103驱动TFT-LCD屏的实战技巧&#xff1a;时序优化与初始化陷阱全解析 1. 硬件连接与FSMC基础配置 对于STM32F103开发者而言&#xff0c;驱动TFT-LCD屏最常见的硬件方案是通过FSMC&#xff08;灵活的静态存储控制器&#xff09;接口模拟8080并行时序。这种设计巧妙利用了S…...

18分钟攻破GitHub:TeamPCP供应链攻击全技术解析与防御新范式

摘要 2026年5月18日&#xff0c;威胁组织TeamPCP通过一条精心设计的多级供应链攻击链&#xff0c;仅用18分钟就成功入侵全球最大代码托管平台GitHub的内部系统&#xff0c;窃取了约3800个核心私有仓库&#xff0c;涵盖Copilot、CodeQL、GitHub Actions等所有关键产品的源代码。…...

hccl 集合通信架构剖析:Ring-AllReduce 与通信-计算重叠设计

前言 分布式训练做多了会发现&#xff0c;多卡之间的通信往往比计算更吃时间。八张昇腾NPU跑一个LLaMA-70B&#xff0c;AllReduce在总耗时里能占30-40%&#xff0c;这个比例在卡数更多的时候还会继续涨。昇腾CANN的hccl&#xff08;Huawei Collective Communication Library&am…...

python入门教程(非常详细),python和c++哪个更值得学

python入门教程(非常详细),python和c哪个更值得学 这篇文章主要介绍了python入门教程(非常详细)&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 python 怎么读 python&…...

为什么我总是想很多,却很难开始做?

为什么我总是想很多&#xff0c;却很难开始做&#xff1f; 有一种人&#xff0c;脑子从来停不下来。 走路在想&#xff0c;洗澡在想&#xff0c;睡前还在想。 想人生方向&#xff0c;想技术路线&#xff0c;想项目结构&#xff0c;想商业模式&#xff0c;想内容选题&#xff0c…...