当前位置:首页>python>人人都能上手的 Python 文本情感分析:用 VADER 分析英文短文本的情绪倾向

人人都能上手的 Python 文本情感分析:用 VADER 分析英文短文本的情绪倾向

  • 2026-09-10 13:30:54
人人都能上手的 Python 文本情感分析:用 VADER 分析英文短文本的情绪倾向

做情感分析时,很多同学都会先想到 SnowNLP、情感词典法或 BERT 情感分类,但不同方法适合的数据并不一样。比如,如果你的数据是英文短文本,如英文推文、YouTube 评论、亚马逊商品评价、英文问卷开放题、英文新闻评论或社交媒体帖子,就可以考虑使用一种非常适合入门的工具——VADER情感分析。

VADER 的全称是Valence Aware Dictionary and sEntiment Reasoner,可以理解为一种基于规则和情感词典的英文情感分析工具。它不需要自己训练模型,也不需要准备大量标注数据,只需要几行 Python 代码,就可以给文本计算情感得分,并判断文本整体是偏积极、偏消极,还是偏中性。

简单来说,如果 SnowNLP 更适合中文短文本入门分析,那么 VADER 更适合英文社交媒体短文本和英文评论数据的情感分析。


一、什么是 VADER 情感分析?

VADER 是一种基于规则和词典的情感分析方法。它的核心思路是:先根据情感词典识别文本中的积极词、消极词和中性词,再结合一些语言规则,对文本整体情感进行打分。

比如下面这句话:

This hotel is amazing and the staff are very friendly.

VADER 会识别出 “amazing”“friendly” 这类积极词,因此整体情感会偏正面。

再比如:

The delivery was too slow and the package was terrible.

这句话中 “slow”“terrible” 带有明显负面倾向,所以 VADER 会给出偏负面的情感结果。

和普通情感词典不同的是,VADER 不只是简单数积极词和消极词,它还会考虑一些常见语言现象,比如程度副词、否定词、感叹号、大写字母等。因此,它特别适合处理社交媒体中比较口语化、简短化的表达。


二、VADER 适合分析什么数据?

VADER 最适合的是英文短文本,尤其是社交媒体评论和用户评价类数据。

比如,英文商品评论中经常会出现:

  • Great product!
  • Not worth the price.
  • The quality is good, but the delivery is slow.

这些文本长度不长,但情绪表达比较直接,非常适合用 VADER 做快速判断。

在实际研究或课程作业中,VADER 可以用于英文推文情感分析、英文商品评论情感分析、YouTube 评论情感分析、英文酒店评论分析、英文旅游评论分析、英文问卷开放题分析、英文新闻评论情绪分析等。

注意事项:VADER 本身主要面向英文文本。如果你的数据是中文,直接使用 VADER 效果通常不会太好。中文评论更适合使用 SnowNLP、中文情感词典、BERT 中文情感分类等方法。如果一定要用 VADER 分析中文数据,一般需要先翻译成英文,但翻译过程可能会改变原始语气和情感强度,因此论文中要谨慎说明。


三、VADER 的情感得分怎么理解?

VADER 输出的结果通常包括四个指标:

  • pos:表示积极情感比例
  • neu:表示中性情感比例
  • neg:表示消极情感比例
  • compound:表示综合情感得分

其中最常用的是compound。它的取值范围是-1 到 1。一般可以这样理解:

  • compound越接近 1,说明文本越偏积极;
  • compound越接近 -1,说明文本越偏消极;
  • compound接近 0,说明文本更偏中性,或者情感倾向不明显。

常见的分类方式是:

  • compound ≥ 0.05,判为积极;
  • compound ≤ -0.05,判为消极;
  • -0.05 到 0.05 之间,判为中性。
英文评论
compound 得分
情感倾向
I love this product!
0.67
积极
It is okay, nothing special.
0.08
中性或轻微积极
This is terrible and disappointing.
-0.71
消极

这个阈值不是绝对固定的。如果你的研究对象比较特殊,比如讽刺表达很多、专业评论很多,也可以结合人工抽样结果适当调整阈值。


四、VADER 分析的基本代码

首先安装 VADER:

pip install vaderSentiment

然后可以用下面的代码分析一条英文文本:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzeranalyzer = SentimentIntensityAnalyzer()text = "This product is amazing! I really love it."result = analyzer.polarity_scores(text)print(result)

运行后可能会得到类似结果:

{    'neg': 0.0,    'neu': 0.34,    'pos': 0.66,    'compound': 0.85}

其中compound得分为 0.85,说明这条评论整体非常偏积极。

如果想根据compound得分进一步划分积极、中性和消极,可以这样写:

defclassify_sentiment(compound):if compound >= 0.05:return"积极"elif compound <= -0.05:return"消极"else:return"中性"sentiment = classify_sentiment(result["compound"])print("情感分类:", sentiment)

这样,一条英文文本就可以被转换成情感得分和情感类别。


五、分析 Excel 中的一列英文评论数据

实际做论文或项目时,我们通常不是分析一句话,而是分析一整列评论。假设你的 Excel 文件里有一列叫做comment,可以先读取数据:

import pandas as pddf = pd.read_excel("英文评论数据.xlsx", engine="openpyxl")df.head()

删除空值:

df.dropna(subset=["comment"], inplace=True)

定义 VADER 情感分析函数:

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzeranalyzer = SentimentIntensityAnalyzer()defget_vader_scores(text):    scores = analyzer.polarity_scores(str(text))return scoresdefget_compound(text):    scores = analyzer.polarity_scores(str(text))return scores["compound"]defclassify_sentiment(compound):if compound >= 0.05:return"积极"elif compound <= -0.05:return"消极"else:return"中性"

开始批量分析:

df["compound"] = df["comment"].apply(get_compound)df["情感分类"] = df["compound"].apply(classify_sentiment)df.head()

如果你还想保留积极、中性、消极三个比例得分,也可以这样写:

df["neg"] = df["comment"].apply(lambda x: analyzer.polarity_scores(str(x))["neg"])df["neu"] = df["comment"].apply(lambda x: analyzer.polarity_scores(str(x))["neu"])df["pos"] = df["comment"].apply(lambda x: analyzer.polarity_scores(str(x))["pos"])df["compound"] = df["comment"].apply(lambda x: analyzer.polarity_scores(str(x))["compound"])df["情感分类"] = df["compound"].apply(classify_sentiment)

分析完成后,原始表格中就会增加情感得分和情感分类结果。


六、保存情感分析结果

分析完成后,可以把结果保存为 Excel 文件:

import osos.makedirs("result", exist_ok=True)df.to_excel("./result/VADER情感分析结果.xlsx", index=False, engine="openpyxl")

保存后的结果可以用于后续统计、分组对比和可视化。常见字段包括原始评论、neg 得分、neu 得分、pos 得分、compound 得分、情感分类、评论时间、平台来源、产品类型等。

如果你后续还要结合主题分析,也可以把 LDA、BERTopic、BTM 或 TopicGPT 的主题结果合并到同一张表里,进一步分析“不同主题下的情感差异”。


七、VADER 结果可以做哪些可视化?

VADER 得到情感得分和情感分类后,可以做很多可视化图表。常见图表包括情感分类数量柱状图、情感分类占比饼图、compound 得分分布直方图、不同类别下的情感对比图、不同时间段的情感变化趋势图等。

这些图很适合放在课程论文、研究报告或公众号文章中。相比只展示表格,可视化结果会更直观,也更容易解释。


八、情感分类柱状图

柱状图适合展示积极、中性和消极评论的数量对比。

import matplotlib.pyplot as pltimport seaborn as snsplt.rcParams["font.sans-serif"] = ["Songti SC"]plt.rcParams["axes.unicode_minus"] = Falseplt.figure(figsize=(8, 6))sns.countplot(data=df, x="情感分类", color="skyblue")plt.title("VADER 情感分类数量对比")plt.xlabel("情感分类")plt.ylabel("数量")plt.grid(axis="y", linestyle="--", alpha=0.7)plt.savefig("./result/VADER情感分类数量对比.png", dpi=300, bbox_inches="tight")plt.show()

这个图可以回答:英文评论中积极评论更多,还是消极评论更多。

论文中可以这样写: 从 VADER 情感分类结果来看,积极评论数量占比较高,说明用户整体评价较为正向;但仍存在一定数量的负面评论,表明部分用户在价格、服务、物流或使用体验方面存在不满。


九、情感得分分布图

除了分类结果外,我们还可以观察 compound 得分的分布情况。

plt.figure(figsize=(8, 6))sns.histplot(data=df, x="compound", bins=20, kde=True, color="skyblue")plt.title("VADER compound 情感得分分布")plt.xlabel("compound 得分")plt.ylabel("频数")plt.grid(axis="y", linestyle="--", alpha=0.7)plt.savefig("./result/VADER情感得分分布.png", dpi=300, bbox_inches="tight")plt.show()

这个图可以帮助我们观察评论整体是偏积极还是偏消极,得分是否集中在某个区间,是否存在明显两极分化等。

论文中可以这样写: compound 得分整体集中在正向区间,说明样本评论总体呈现积极倾向;同时,低分区间仍有一定数量评论,说明用户体验中仍存在需要关注的问题。


十、不同类别下的情感对比

如果你的数据中还有其他分类字段,比如产品类型、平台、年份、地区、主题类别,就可以进一步做分组分析。比如按照产品类型比较不同类别下的情感分布:

sentiment_by_type = df.groupby(["产品类型", "情感分类"]).size().reset_index(name="数量")plt.figure(figsize=(9, 6))sns.barplot(    data=sentiment_by_type,    x="产品类型",    y="数量",    hue="情感分类")plt.title("不同产品类型下的 VADER 情感分布")plt.xlabel("产品类型")plt.ylabel("评论数量")plt.grid(axis="y", linestyle="--", alpha=0.7)plt.legend(title="情感分类")plt.savefig("./result/不同产品类型下的VADER情感分布.png", dpi=300, bbox_inches="tight")plt.show()

这类图可以回答:不同产品类型、不同平台或不同主题下,用户情感倾向是否存在差异。相比只看总体积极率,分组情感对比更容易写出有分析价值的结果。


十一、VADER 结果怎么写进论文?

很多同学不是不会跑代码,而是不知道怎么把结果写成论文语言。可以按照“说明方法—描述总体结果—比较不同维度—回到研究问题”的思路来写。

方法部分可以这样写: 本文采用 VADER 情感分析工具对英文评论文本进行情感倾向识别。VADER 是一种基于规则和情感词典的情感分析方法,能够输出文本的积极、中性、消极比例得分以及综合情感得分 compound。本文根据 compound 得分将评论划分为积极、中性和消极三类,以进一步分析用户评价的整体情感倾向。

总体结果可以这样写: 从总体情感分布来看,积极评论占比较高,说明用户整体评价偏向正面;中性评论多集中于事实描述或一般性反馈;负面评论虽然占比较低,但主要反映了用户在产品质量、服务体验、价格感知等方面的不满。

维度分析可以这样写: 进一步比较不同产品类型下的情感分布可以发现,不同类别之间的用户情感存在一定差异,说明用户满意度不仅受到产品本身影响,也受到服务流程、价格预期和使用场景等因素影响。

总结部分可以这样写: 因此,VADER 情感分析不仅可以呈现英文评论的整体情感结构,也有助于识别不同类别、不同时间阶段或不同主题下的情绪差异,为后续产品优化、舆情研判或用户体验改进提供参考。


十二、VADER 使用中的注意事项

VADER 很适合英文短文本入门分析,运行非常高效,但它也不是万能的。

  1. VADER 更适合英文文本:如果你的数据是中文,建议优先使用 SnowNLP、中文情感词典、BERT 中文情感分类等方法。直接用 VADER 分析中文文本,结果通常不够可靠。
  2. VADER 更适合短文本:社交媒体评论、英文短评、推文和一句话评论比较适合它。如果是一篇很长的文章,文本内部可能同时包含积极和消极表达,直接对整篇文本打分可能会丢失细节。
  3. VADER 对复杂语境仍然有限:比如讽刺、反语、隐喻、专业表达和复杂上下文,可能会影响模型判断。虽然 VADER 会处理否定词、程度副词、感叹号等规则,但它毕竟不是深度学习模型。
  4. 人工抽样验证的必要性:论文写作时建议进行人工抽样验证。可以随机抽取部分文本,人工判断其情感类别,再和 VADER 的结果进行对比。如果模型判断基本合理,就可以增强结果解释的可信度。

十三、新手推荐选题方向

如果你想用 VADER 做一篇课程论文、实证分析或研究报告,可以从英文评论类数据入手,比如:

  • 英文亚马逊商品评论的情感分析
  • YouTube 视频评论的情绪倾向研究
  • 英文酒店评论的用户满意度分析
  • 英文旅游景点评价的情感分析
  • 英文推文中的公众情绪研究
  • 国际新闻评论的情感倾向分析
  • 英文问卷开放题的情感分类研究等

这些选题有一个共同特点:数据相对容易收集,文本长度比较短,情绪表达比较直接,适合用 VADER 做快速分析。


十四、总结:VADER 适合谁?

如果你刚开始接触英文情感分析,VADER 是一个很适合入门的工具。它不需要自己训练模型,也不需要大量标注数据,只要几行 Python 代码,就可以得到情感得分和情感分类结果。

简单来说:

  • SnowNLP更适合中文短文本入门情感分析;
  • VADER更适合英文短文本和社交媒体评论情感分析;
  • 情感词典法适合需要解释规则和情感词来源的研究;
  • 机器学习方法适合有标注数据的分类任务;
  • BERT 情感分类更适合追求准确率和语义理解的项目。

当然,模型结果不能替代人工判断。VADER 的价值不是帮我们“一键判断所有情绪”,而是帮助我们快速整理英文文本中的情感倾向,并进一步分析用户喜欢什么、不满什么,以及这些情绪背后反映了哪些问题。


🛠️ 技术支持与服务

如果你手里已经有文本数据或者有想收集的数据,但不知道怎么清洗、建模和解释,或者你想做一篇文本挖掘、主题分析、情感分析相关的课程作业、论文实证部分或研究报告,我们可以提供相关技术支持:

  • 文本数据采集与爬虫获取
  • 文本数据清洗与去重
  • 中文分词与停用词处理
  • 高频词统计与词云图绘制
  • LDA 主题分析
  • BTM 短文本主题模型
  • BERTopic 主题模型
  • DTM 动态主题模型
  • TopicGPT 大语言模型主题分析
  • SnowNLP 中文情感分析
  • VADER 英文情感分析
  • 情感词典分析
  • 主题演化分析
  • 语义网络分析
  • Python 代码复现与逐行讲解
  • 论文方法部分与结果分析写作

除文本分析外,我们也承接中/英文及多语言 Python 文本分析,包括数据采集、文本清洗、LDA、BERTopic、BTM、DTM、TopicGPT、SnowNLP、VADER、情感词典、主题演化分析及语义网络关系图等;同时也可提供深度学习、Matlab、Simulink 仿真建模,以及基于 SPSS、R、Mplus 等软件的量化分析支持。

量化分析方向包括:z 检验、t 检验、方差分析、回归分析、卡方检验、相关分析、样本量计算、结构方程模型、中介效应与调节效应检验、量表信效度分析、机器学习算法等,具体需求均可根据研究主题和数据情况进行定制。

如果你正好有文本数据、问卷数据想分析,或者目前还没有数据、想先获取公开文本数据,也欢迎通过本公众号后台留言或淘宝搜索数锐研学馆联系我们。


如果你觉得内容对你有帮助,欢迎收藏、点赞并关注本公众号。后续会持续更新数据分析相关内容,也欢迎分享给更多需要的人。无论你想了解哪种统计方法,都可以在评论区留言一起交流。

最新文章

随机文章