NLTK 情感分析与 VADER 的优缺点






4.73/5 (4投票s)
本文是使用 Python 和开源自然语言工具包的情感分析系列的第四篇文章。 在本篇文章及后续文章中,我们将尝试改进我们分析社区情感的方法。
本情感分析系列文章的目的是使用 Python 和开源自然语言工具包 (NLTK) 构建一个库,该库可以扫描 Reddit 帖子的回复,并检测发帖者是否使用了消极、敌对或其他不友好的语言。
- 第一部分 - 使用 Python 介绍用于自然语言处理的 NLTK
- 第二部分 - 寻找用于自然语言处理的数据
- 第三部分 - 使用预训练的 VADER 模型进行 NLTK 情感分析
- 第四部分 - 使用 VADER 进行 NLTK 情感分析的优缺点
- 第五部分 - NLTK 和机器学习在情感分析中的应用
- 第六部分 - 通过数据标注改进 NLTK 情感分析
- 第七部分 - 使用云 AI 进行情感分析
倾听反馈对项目、产品和社区的成功至关重要。 然而,随着您的受众规模增加,理解您的用户在说什么变得越来越困难。 为此,情感分析可以提供帮助。
在 使用预训练的 VADER 模型进行 NLTK 情感分析中,我们研究了情感分析在识别他人对您的品牌或活动的积极和消极情绪方面所起的作用。 分析非结构化文本是自然语言处理 (NLP) 中一项足够常见的活动,以至于有一些主流工具可以使其更容易上手。
Python 的自然语言工具包 (NLTK) 是这些工具的其中一个例子。 在上一篇文章中,我们学习了如何从 Reddit 检索数据,Reddit 拥有非常受欢迎的在线社区。 然后,我们使用 VADER 分析来根据这些 Reddit 数据推导情感分数。 情感分数可以帮助我们理解 Reddit 数据中的评论是代表积极还是消极的观点。
在本篇文章及后续文章中,我们将尝试改进我们分析社区情感的方法。 我们将首先回顾到目前为止我们使用的 VADER 模型的优缺点。
情感分析的词汇方法
VADER 情感分析器使用一种词汇方法。 这意味着它使用已被分配了预定分数的单词或词汇作为积极或消极。 这些分数基于由人类评审员标记的预训练模型。
例如,这是来自 Reddit 数据的评论
import praw
# Connect to reddit to query a specific posting
reddit = praw.Reddit(client_id=’your-id’,
client_secret=’your-secret’,
user_agent=’your-agent’)
post = "https://www.reddit.com/r/learnpython/comments/fwhcas/whats_the_difference_between_and_is_not"
submission = reddit.submission(url=post)
# Get the comments from the post replacing ‘more’ expansion
submission.comments.replace_more(limit=None)
comments = submission.comments.list()
print(comments[116].body)
输出是:
'This is cool!'
术语“This”、“is”和“cool”各自的情感强度范围从 -4 到 +4。 这是标记“cool”的词汇条目
cool 1.3 0.64031 [1, 1, 2, 1, 1, 1, 2, 2, 2, 0]
其他规则涵盖了语法元素,如标点符号。 例如,感叹号用于修改短语或句子的整体强度。 其他术语,如“but”或“not”,将以相反的方向修改强度。
这种方法有一些明显的优点
- 对于许多应用,例如评估公众舆论、进行竞争分析或增强客户体验,这种方法很容易理解。
- 词汇方法实现起来很快,只需要现成的库和几行代码。
- 它很容易捕获用于分析的数据集。
- 它在分析大型数据集方面效率很高。
这种方法也有一些缺点
- 拼写错误和语法错误可能导致分析忽略重要的单词或用法。
- 讽刺和反讽可能会被误解。
- 分析是特定于语言的。
- 区分专业术语、命名法、模因或短语可能无法被识别。
对于某些寻求更高准确性的用例,可能值得评估替代方案。
更重要的是,某些特定领域的上下文可能需要不同的方法。 例如,一个目标语料库,其中包含专业术语、语言或知识——比如一个编程社区——与预训练的 VADER 模型最初使用的社交媒体帖子有很大不同。 例如,源代码(除了偶尔出现的具有攻击性的变量名)在情感分析中可能会被误解。
有一些机器学习分类方法可以帮助解决这个问题。
后续步骤
在本文中,我们快速了解了使用文本方法进行 NLP 的一些优缺点。
下一步,NLTK 和机器学习情感分析涵盖了为 NLTK 朴素贝叶斯分类器创建训练、测试和评估数据集。
如果您需要了解 VADER 分析的先前步骤,请参阅 使用预训练的 VADER 模型进行 NLTK 情感分析。