在当今竞争激烈的市场中,客户满意度是企业成功的关键。如果客户对产品不满意,企业可能需要改进产品以提高效率。为了识别客户的满意度,需要分析他们的意见情感倾向。情感分析,简而言之,就是识别和分类文本中的意见,从而确定意见是积极的还是消极的。
本文将探讨如何使用VADER进行情感分析。情感分析赋予文本以意义,帮助理解符号、类型及其相互关系。让简要了解自然语言处理(NLP)及其NLTK库。
NLP是一种自动处理或操作人类语言的方式。使用NLP从文本数据中提取有意义的数据。NLP的应用包括情感分析、聊天机器人、语音识别、机器翻译、拼写检查、信息提取、关键词搜索、广告匹配等。一些现实世界的例子包括谷歌助手和谷歌翻译。
自然语言工具包(NLTK)是最强大的NLP库之一,包含使机器理解人类语言并给予适当期望响应的包。NLTK有许多内置包来处理文本数据的每个阶段,包括数据清洗、可视化、向量化等。
情感分析用于确定文本的情感倾向,可以是积极的、消极的或中性的。这是自然语言处理中的一个高级研究领域,广泛应用于数据挖掘、文本挖掘等。它通过处理博客文章、评论、评论、推文等来收集和分析对品牌或产品的公众意见。
社交媒体监控:众所周知,社交媒体正在接管世界。超过55%的客户在许多社交网络上分享他们的购买评论。手动分析评论几乎是不可能的。情感分析使能够分析并从中得出意义。
品牌监控:品牌所有者使用情感分析工具来跟踪关于他们品牌的负面评论。他们还可以使用机器学习算法根据语义分析得出的结果预测结果。
客户之声:各种情感分析算法使能够分析客户的声音,例如客户最需要的产品以及评分高的产品等。品牌所有者可以根据这些评估创建个性化的客户体验。
客户服务:聊天机器人是提供良好客户服务的广泛方式。使用情感分析,可以在需要时将聊天转交给客户服务代表。此外,还可以自动化预订票务、沙龙预约等任务。
市场研究:使用情感分析,可以研究竞争对手的成长情况以及他们从客户那里获得的正面反馈。还可以分析他们与客户打交道的方式。反过来,可以解决与产品失败相关的问题。
产品分析:可以进行关键词研究,以识别需求的产品和评分高的产品。还可以确定特定产品的哪些功能受到客户或最终用户的高度重视。
VADER(Valence Aware Dictionary for Sentiment Reasoning)是NLTK的一个模块,它根据使用的词汇提供情感分数。它是一个基于规则的情感分析器,其中的术语通常根据其语义倾向被标记为积极或消极。
首先,将创建一个情感强度分析器来对数据集进行分类。然后,使用极性分数方法来确定情感。
在这个练习中,将使用一个包含不同产品评论的CSV文件。文件链接是:https://drive.google.com/file/d/1NYdZoMJvBWuCejMX28pVRVfMyOe1GhnZ/view?usp=sharing
import numpy as np
import pandas as pd
import nltk
# 从nltk下载vader
nltk.download('vader_lexicon')
from nltk.sentiment.vader import SentimentIntensityAnalyzer
# 创建情感强度分析器对象
sia = SentimentIntensityAnalyzer()
# 上传csv文件
from google.colab import files
uploaded = files.upload()
# 读取csv文件
df = pd.read_csv(io.BytesIO(uploaded['reviews.csv']))
df.head()
极性分数:这个函数根据给定的输入语句/文本返回情感强度。例如:
text = "Bobby is an amazing guy"
sia.polarity_scores(text)
# {'compound': 0.5859, 'neg': 0.0, 'neu': 0.513, 'pos': 0.487}
# 可以观察到上述语句是中性的
text = "The food delivered was really very bad"
sia.polarity_scores(text)
# {'compound': -0.6214, 'neg': 0.404, 'neu': 0.596, 'pos': 0.0}
# 这个示例语句是消极的。
现在让在CSV文件中创建一个新列,存储每条评论的极性分数。
df['scores'] = df['body'].apply(lambda body: sia.polarity_scores(str(body)))
df.head()
类似地,然后为复合分数、积极分数和消极分数各创建三个不同的列。
df['compound'] = df['scores'].apply(lambda score_dict: score_dict['compound'])
df.head()
df['pos'] = df['scores'].apply(lambda pos_dict: pos_dict['pos'])
df.head()
df['neg'] = df['scores'].apply(lambda neg_dict: neg_dict['neg'])
df.head()
然后创建一个名为类型的新列,指示评论是积极的、消极的还是中性的。
df['type'] = ''
df.loc[df.compound > 0, 'type'] = 'POS'
df.loc[df.compound == 0, 'type'] = 'NEUTRAL'
df.loc[df.compound < 0, 'type'] = 'NEG'
df.head()
最后,循环遍历行并计算积极、消极和中性评论的总数。
len = df.shape[0]
pos = 0
neg = 0
neutral = 0
for i in range(0, len):
if df.loc[i][12] == "POS":
pos = pos + 1
if df.loc[i][12] == "NEG":
neg = neg + 1
if df.loc[i][12] == "NEUTRAL":
neutral = neutral + 1
print("Positive :"+str(pos) + " Negative :" + str(neg) + " Neutral :"+ str(neutral))
# Positive :46060 Negative :13670 Neutral :8256
因此,使用VADER模块,得出结论,数据有46060条积极评论,13670条消极评论和8256条中性评论。
最后,众所周知,社交媒体正在接管世界,超过55%的客户分享他们对购买的评论。分析评论的语义会让对如何使用NLP概念进行情感分析有所了解。正如在文章中讨论的,情感分析的应用远不止于此。