情感分析在电商中的应用

情感分析是理解客户评价情感倾向的关键技术,主要用于电商平台或需要客户反馈的任何平台,以便让人们表达他们对产品或事物的体验。本文将展示如何在Flipkart数据集上进行情感分析。Flipkart是印度领先的电商平台之一,与Snapdeal、Myntra、Nykaa和IndiaMART等竞争。随着世界数字化的快速发展,电商平台正在蓬勃发展,尽最大可能提供服务给人们。

产品评价的情感分析是一种可以开启了解产品性能的方式,这对未来的顾客和电商平台都是有益的。电商平台可以通过情感分析技术改进其产品和服务。情感分析还可以帮助公司更好地理解产品,并规划未来的产品方向。

导入库

实践操作使用Python语言,并在Google Colab笔记本中实现。首先,需要导入以下库:

import nltk nltk.download('stopwords') nltk.download('vader_lexicon') import re from nltk.corpus import stopwords import string import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import plotly.express as px from nltk.sentiment.vader import SentimentIntensityAnalyzer from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

关于情感分析的数据集

数据集包含了客户从Flipkart购买的产品的评论。这些评论是客户通过Flipkart购买的产品的体验,并对该产品给出评分。Flipkart的数据集包含3列:产品名称、客户对产品的评论以及客户给出的1至5星的评分。

检查空值

空值可能会影响数据集的整体形态,从而影响情感分析。需要检查数据集是否包含空值。如果数据集中没有空值,就可以开始进行情感分析。

data.isnull().sum()

情感分析中的数据清洗

评论列的数据清洗使用正则表达式、词干提取和停用词进行。词干提取是将单词转换为其基本形式的过程。简而言之,词干提取将单词简化为其基本形式,使得相似的单词归为一类,这有助于算法更好地理解文本数据。SnowballStemmer是基于Porter Stemmer的词干提取算法。正则表达式用于检查字符串是否包含特定的搜索模式。

stemmer = nltk.SnowballStemmer("english") stopword = set(stopwords.words('english')) def clean(text): text = str(text).lower() text = re.sub('[.*?]', '', text) text = re.sub('https?://S+|www.S+', '', text) text = re.sub('+', '', text) text = re.sub('[%s]' % re.escape(string.punctuation), '', text) text = re.sub('n', '', text) text = re.sub('w*dw*', '', text) text = [word for word in text.split(' ') if word not in stopword] text = " ".join(text) text = [stemmer.stem(word) for word in text.split(' ')] text = " ".join(text) return text data["Review"] = data["Review"].apply(clean)

产品评价评级

ratings = data["Rating"].value_counts() numbers = ratings.index quantity = ratings.values figure = px.pie(data, values=quantity, names=numbers, hole=0.5) figure.show()

词云

text = " ".join(i for i in data.Review) stopwords = set(STOPWORDS) wordcloud = WordCloud(stopwords=stopwords, background_color="white").generate(text) plt.figure(figsize=(15,10)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() sentiments = SentimentIntensityAnalyzer() data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i in data["Review"]] data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i in data["Review"]] data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i in data["Review"]] data = data[["Review", "Positive", "Negative", "Neutral"]] data.head()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485