自然语言处理中的情感分析

在客户服务体验中,经常会遇到需要对客户满意度进行评分的情况。这种评分通常用于计算净推荐值(Net Promoter Score, NPS),它帮助识别出品牌的推广者(评分9-10)和批评者(评分0-6)。推广者对品牌忠诚,会继续购买、消费并推荐给他人。而批评者则可能通过负面口碑传播不满。情感分析技术无需直接进行调查,就能帮助通过社交媒体或公共论坛上的言论来识别推广者和批评者。

寻找自然语言处理的数据

使用预训练的VADER模型进行情感分析

VADER(Valence Aware Dictionary and sEntiment Reasoner)是一个在2014年开发的预训练模型,它使用基于规则的值来调整社交媒体上的情感。VADER评估消息文本,并为提供不仅仅是正面和负面的情感评估,还包括情感的强度。

VADER使用一个它能够评估的术语字典。从GitHub仓库中,这包括了诸如否定词("not great")、缩写词("wasn’t great")、标点符号(增加强度,"It’s great!!!")、俚语("kinda", "sux", "hella")以及能够理解缩写词("lol")和表情符号(❤)等例子。

评分是一个落入每个类别的文本比例的比率。语言不是非黑即白的,因此很少看到一个完全正面或完全负面的评分。由于这个模型已经针对社交媒体进行了预训练,因此它应该非常适用于Reddit用户发表的评论。

VADER情感分析器的示例

让以之前从Reddit检索到的评论为例。

comments[116].body # 输出: 'This is cool!'

如果还没有下载词典,请下载(nltk.download('vader_lexicon'))并导入(from nltk.sentiment.vader import SentimentIntensityAnalyzer)VADER情感分析器,然后使用它来评分特定的评论。

analyzer = SentimentIntensityAnalyzer() analyzer.polarity_scores(comments[116].body)

分析的输出是:

{ 'neg': 0.0, 'neu': 0.436, 'pos': 0.564, 'compound': 0.3802 }

在Reddit上,像"This is cool!"这样的帖子是高度赞扬的。

Reddit帖子的所有评论的情感

让看看这个帖子的整体情感,而不仅仅是单个评论。有119条评论需要分析,将它们放入桶中进行计数。

len(comments) # 输出: 119

初始化一个字典来记录结果:

result = { 'pos': 0, 'neg': 0, 'neu': 0 } for comment in comments: score = analyzer.polarity_scores(comment.body) if score['compound'] > 0.05: result['pos'] += 1 elif score['compound'] < -0.05: result['neg'] += 1 else: result['neu'] += 1 print(result)

输出是:

{ 'pos': 65, 'neg': 25, 'neu': 29 }

了解到,对于这个帖子,评论总体上是积极的。

正如所看到的,可以从各种来源获取文本,并进行快速分析以了解正面和负面的情感。这对于了解产品、服务或内容是否受到欢迎非常有用。它还可以帮助优先考虑社区参与。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485