在客户服务体验中,经常会遇到需要对客户满意度进行评分的情况。这种评分通常用于计算净推荐值(Net Promoter Score, NPS),它帮助识别出品牌的推广者(评分9-10)和批评者(评分0-6)。推广者对品牌忠诚,会继续购买、消费并推荐给他人。而批评者则可能通过负面口碑传播不满。情感分析技术无需直接进行调查,就能帮助通过社交媒体或公共论坛上的言论来识别推广者和批评者。
VADER(Valence Aware Dictionary and sEntiment Reasoner)是一个在2014年开发的预训练模型,它使用基于规则的值来调整社交媒体上的情感。VADER评估消息文本,并为提供不仅仅是正面和负面的情感评估,还包括情感的强度。
VADER使用一个它能够评估的术语字典。从GitHub仓库中,这包括了诸如否定词("not great")、缩写词("wasn’t great")、标点符号(增加强度,"It’s great!!!")、俚语("kinda", "sux", "hella")以及能够理解缩写词("lol")和表情符号(❤)等例子。
评分是一个落入每个类别的文本比例的比率。语言不是非黑即白的,因此很少看到一个完全正面或完全负面的评分。由于这个模型已经针对社交媒体进行了预训练,因此它应该非常适用于Reddit用户发表的评论。
让以之前从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!"这样的帖子是高度赞扬的。
让看看这个帖子的整体情感,而不仅仅是单个评论。有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
}
了解到,对于这个帖子,评论总体上是积极的。
正如所看到的,可以从各种来源获取文本,并进行快速分析以了解正面和负面的情感。这对于了解产品、服务或内容是否受到欢迎非常有用。它还可以帮助优先考虑社区参与。