首页 > 编程语言 >python基于评论情感分析和回归、arima销量预测的购物网站选品

python基于评论情感分析和回归、arima销量预测的购物网站选品

时间:2023-02-27 23:56:11浏览次数:66  
标签:评论者 变量 python 模型 arima 评论 产品 选品 数据

全文链接:http://tecdat.cn/?p=31678

原文出处:拓端数据部落公众号

分析师:Ru Bai

网络购物模式已成为越来越重要的产品销售模式,亚马逊网站早在1995年就开始邀请产品消费者发表在线评论,此举带来了良好的效果,目前几乎所有的网站都采用了同样的方式。这是因为在线评论:与该网页上的产品销售有着直接相关,便于消费者了解产品信息和服务,并且消费者认为评论信息具有更高的可信度;对企业网络购物平台经营决策起作用,利于企业选择进入市场的时间,选择更受消费者青睐的商品,提高效益。

本文旨在为某公司客户提供线上销售策略,基于不同于以往的分析方式,分析在线评论内部各属性的特点以及他们之间的关系,并从动态的角度探究产品在网络平台上名誉的变化和发展潜力,从而提出有助于提高销量的建议。

解决方案

image.png

任务/目标

分析产品口碑的影响因素,从评论情感分析和销量预测两个角度对网站选择商品和网站运营给出建议。

数据源准备

以在线评论作为基础数据源(来自于亚马逊网站的)

数据预处理

数据处理的目的是为了去除掉数据集中的脏数据,从而确保数据质量,提高数据可用性与使用率,保证分析结果的准确性。因此,根据本文数据处理的需要,我们需要对数据集进行如下数据处理:

a、删除对应产品不属于我们要研究的品类的数据。本文只针对吹风机、微波炉、奶嘴,其他产品不具有参考价值。

b、删除评论星级不属于[1,5]的数据。商品的星级评分在亚马逊网站上都是1-5范围内,但是由于系统bug,会导致出现超出此范围的评分,超出了正常值域范围。

c、删除helpful votes大于total votes的数据。认为其为错误数据。

d、删除review title、review body均为空的数据。当这两个均为空时,这条数据没有传递任何评论信息,因此根据数据有效性原则。

e、基于本文产品预测的目标,我们需要按照时间维度对得到的产品信息进行划分,并且按照同一产品的ID在时间维度上进行汇总。对于评论总数小于20的产品、后几年的评论总数均为0的产品我们选择删除。数据显示为0可能是数据储存失败、存储器存在问题等原因,也可能是该产品退出了市场,对产品预测没有参考意义。

文本预处理

a、对评论文本数据进行规范化。浏览数据集中的评论数据,我们发现有很多评论中出现单词拼写错误、表情符号使用较多以及其他冗余信息,他们不仅不能提供任何有用信息,还会影响模型的运行效率。因此,我们需要过滤掉这些信息:

b、英文分词。

1)运用python对每一条评论进行英文分词。

2)去掉标点符号和停用词。冠词、介词、副词、连词等虽然在评论中出现的频率较高,但是它们无法表示评论信息的特征。

c、词性标注和词频统计。由于我们要对产品设计提出更好的建议,为了尽量符合消费者的需要,我们需要从评论中提取出相应的信息。标注产品属性和消费者情感中涉及到的名词、形容词、副词和否定词等。

image.png

建模

模型一:零膨胀负二项回归模型

以信息采纳理论和负面偏差理论为基础,结合情感分析和零膨胀负二项回归方法,从评论者信度、评论信息质量、评论极性三个方面探究评论有用性投票影响因素。

分析:

①评论有用性投票是一个计数变量,且不呈正态分布,不满足普通最小二乘回归模型,且数据较为分散,此种情况下采用泊松回归模型拟合效果不理想,因而采用负二项回归模型。

②评论有用性投票零值比例高,是因为消费者并不会浏览所有的评论,因此投票的评论为0,并不代表该评论没有用。建立逻辑回归模型对因变量中的零值进行解释。

模型:

逻辑回归模型(对因变量有用性投票数为0,做出解释)

变量类型变量名变量变量解释
自变量 评论发表时间 time  评论已经发表的时间(距数据最后一天)
商品总评论数 reviewtotal    
商品销售排名 rank 认为评论数反映了销售量  
因变量 评论有用性投票数 helpfulvotes 评论获得的有用性投票的总数

        

负二项回归模型

变量类型变量名变量变量解释
自变量 评论者有用性 reviewer_use 评论获得的有用性投票的数/得到的总票数
是否为资深评论员 vine 0:否 1:是  
购买是否打折 discount 0:否 1:是  
评论长度 length 评论所含单词的数量  
星级极差 rateGap 星级评分与平均星级差值的绝对值  
情感指数 emotion_rating 评论文本的情感倾向性指数  
因变量 评论有用性投票数 usefulNum 评论获得的有用性投票的总数

模型改进 :修正星级

(1)星级评价是一种简单,易于操作的评价形式,但无法全面展示评论者的情感态度。例如:A觉得产品毫无瑕疵所以打了5星,B觉得产品有一点缺点,但总体满意还是打了5星。因此,我们在原有的评分系统上进行改进,依旧采用所有评论者评分均值的方法,但对每一条评论,使用评论情感指数修正星级评价,增加准确性。

符号说明:

变量属性变量名变量变量说明
自变量 评论星级   第i个产品的第j个评论者评论星级 j=0,1…num
情感指数   第i个产品的第j个评论者评论文本情感指数  
因变量 修正评分   第i个产品的修正评分

image.png

以微波炉的产品为例,将原来的产品总分与修正后的评分做对比:

image.png

发现,修正后的模型和原来的分数差距很小,只是将评价等级范围扩大。但可以很好的刻画评论者的评论极性和情感强度,能将极断的情绪放大,情感表达更强烈。同样修正模型也可以更加完整地展示评论者的态度。

 

(2)将产品综合情绪作为自变量,产品的评论总数作为独立变量,综合星级作为因变量,建立如下回归模型:

image.png

通过R语言进行回归,我们可以得到回归模型:

image.png

此外,rsqure为0.9901,很接近于1,说明回归效果很好。

 

将产品综合情绪作为自变量,产品的评论总数作为独立变量,综合星级作为因变量,建立如下回归模型:

image.png

通过R语言进行回归,我们可以得到回归模型:

image.png

此外,rsquare为0.9901,很接近于1,说明回归效果很好。

这种给产品打分的模式可以更好的刻画评论评价中蕴含的情绪,越准确的打分越能够了解产品在市场上的口碑以及产品的品质,从而使得顾客更直接获得对产品的感知,提高对购物网站的认同度。

模型二:网络口碑感知的动态内生模型

网络口碑量化指标的确定。在实际生活中,消费者对网络口碑感知是一个阶段的过程,是对一个时间段内产品的属性、质量、服务等的总和感知,因此,上诉分析的影响因素对网站口碑感知的印象是存在滞后性的,此时就产生了在线评论和网络口碑感知之间的动态均衡过程。

分析:

自变量:(与评论有关)

①     产品综合星级():是消费者对产品感受最直接的反应,认为星级越高,消费者对该产品的评价越好

②    在线评论的数量(cNum):评论数越多,说明参与评论的人越多,也反应出产品销量高,消费者对该产品的关注多

③    负面评价在线评价的比例 (nage):负面评论是影响口碑的重要因素,并且负面评论降低产品销量比正面评论所带来的销量上升的效果更佳显著。

④     综合情感指数():由评论文本分析得到的情感指数可以反映评论者对产品更全面的感知

控制变量:(与评论无关但可以度量的)

①    竞争者的数量(pnum),   还包括降价幅度②产品发布时间(time)

哑变量:(与评论无关且不可度量的因素)

①     品牌效应(brand):该产品资深评论者的星级评价平均值  

模型

基于上述分析的结果,建立网络口碑感知与各变量之间的线性模型来进行估计,为了避免异方差及偏态性的影响,公式中的部分变量以自然对数表示:

image.png

时间节点t控制各变量周期的时间节点
控制值 A,B,C 控制各变量是否起作用的布尔值(0或1)
各变量系数 各变量的系数
自变量、控制变量 t时段第i个产品的第j个自变量、控制变量、哑变量
产品销售排名 t时段的产品销量排名

为了证明在线评论对口碑感知的影响大小,构建两个模型进行对比:

当A=0,B=1, C=1,T=4时,得到模型一

image.png

当A=1,B=1,C=1,T=4时,得到模型二:

image.png

通过分析各变量对产品网络口碑感知的影响,为了防止出现多重共线性的问题,对相应的变量进行了中心化处理,处理之后,所有的方差膨胀因子VIF小于5,说明多重共线性问题被有效规避。

 

模型三:ARIMA时间序列预测模型

ARIMA模型是在ARMA模型的基础上加入了差分处理。模型公式:

image.png

ARMA表示时间序列,是干扰项以及序列值的线性组合。AR的系数由模型中的表示,p表示自回归阶数,一般表示时序数据本身的滞后数;MA的系数由表示,q表示移动平均阶数,一般表示预测模型中采用的预测误差的滞后数。ARIMA(p,d,q)中d代表差分次数,为了使非平稳的序列变得相对平稳。

选取了亚马逊网站上三种商品(吹风机、奶嘴、微波炉)的评论数据分别进行分析。在数据预处理之后,以奶嘴为例,得到23764条数据,时间跨度为2003年4月到2015年8月,每款商品的总体销量范围在0~833之间,所以本文以月为单位划分时间进行模型构建与验证,并预测之后5个月的销量。

image.png

观察时序图,可以看出销量整体走势是呈上升趋势的,但不太平稳,有一定的波动性,所以进行一阶差分处理,符合ARIMA模型。

模型一:

采用微波炉所有产品的数据,其中有用性投票最小为0,最大是814,有用性投票的分布比较离散,约41.14%的有用性投票数为0,适用于我们建立的模型。结合回归分析结果与描述性统计结果进行分析。

变量estimateSEZP 值
负二项 -      
( Intercept ) -1.065e+00 6.182e-02 -17.223 <2e-16
reviewer_use 2.809e+00 5.950e-02 47.207 <2e-16
vine 4.029e-01 4.037e-02 9.981 <2e-16
discount -1.134e-01 2.739e-02 -4.139 3.49e-05
review_length 3.212e-03 3.835e-05 83.746 <2e-16
emotion_rating 2.719e-01 1.634e-02 16.644 <2e-16
rate_gap 1.915e-01 1.387e-02 13.810 <2e-16
logistic        
( Intercept ) -3.583279 1.436305 -2.495 0.012603
time -0.006731 0.001543 -4.363 1.28e-05
rank 0.087540 0.051973 1.684 0.092115
review_total 0.012404 0.003479 3.565 0.000364

结果表明,评论者有用性,评论信息量,评论回复数,极端评分,评论文本消极倾向对评论有用性投票具有积极正向影响,评论者发表评论数,评论者是否打折购买对评论有用性投票数有负面影响。基于此,建议网站改善评论排序机制和商品推荐机制,方便消费者筛选高质量评论,重视负面评论,在选择商品时考虑网络口碑。


模型二

所建立的网络口碑动态内生模型可以展示一个产品随时间的名誉变化,由此网站可以更好的选择商品,优化网站质量。另外,影响口碑的因素还包括产品发布时间、产品质量、服务质量、降价幅度等因素。****

模型三:

a.微波炉各具体产品未来五个月的销量预测

image.png

由图可以看出2015年8月到2016年1月销量最高的是ID为423421857的商品,虽然在2015年9月份有所下降,但10月份又呈上升态势。771401205商品的销量在未来5个月不如其他商品销量平稳。因此优先选取423421857产品,其次为523301568产品,544821753产品。

b.吹风机各具体产品未来五个月的销量预测

image.png

未来5个月各产品销量排名不会改变,虽然732252283商品销量有所下降,但在9月后又继续上升;但486774008和694290590都呈下降趋势;其他都很平稳,并无增长的明显态势。因此推荐程度为:732252283>758099411>235105995。

 

b.奶嘴各具体产品未来五个月的销量预测

QQ截图20230119205617.png

246038397明显销量遥遥领先,392768822有很大的增幅后趋于平稳并超过其他产品,虽然572944212销量领先于450475749,但其呈下降趋势,因此我们选择推荐:246038397>392768822大于450475749。

关于作者

image.png

在此对Ru Bai对本文所作的贡献表示诚挚感谢,她擅长数据采集,数学建模。


boardsroleresilience-standard-1536x1536.webp

最受欢迎的见解

1.Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组

2.R语言文本挖掘、情感分析和可视化哈利波特小说文本数据

3.r语言文本挖掘tf-idf主题建模,情感分析n-gram建模研究

4.游记数据感知旅游目的地形象

5.疫情下的新闻数据观察

6.python主题lda建模和t-sne可视化

7.r语言中对文本数据进行主题模型topic-modeling分析

8.主题模型:数据聆听人民网留言板的那些“网事”

9.python爬虫进行web抓取lda主题语义数据分析

标签:评论者,变量,python,模型,arima,评论,产品,选品,数据
From: https://www.cnblogs.com/tecdat/p/17162435.html

相关文章

  • python文件路径
    importos#获取绝对路径#os.path.abspath("__file__")获取当前文件的绝对路径#os.path.dirname(os.path.abspath("__file__"))获取当前文件目录path=os.path.......
  • Python多版本管理pyenv
    1背景&概述因某些需求,需要安装TensorFlow,很自然地在终端敲下了以下命令:pipinstalltensorflow1然后。。。好家伙???居然没有??因为是Python3.9,去pypi搜索了,居然......
  • Python 异步: 保护任务免于取消(13)
    Asyncio任务可以通过调用它们的cancel()方法来取消。我们可以通过将任务包装在对asyncio.shield()的调用中来保护任务不被取消。让我们仔细看看。1.什么是Asyncio......
  • Python 类内、类间 函数的调用
    类内函数的调用classA(): defdouble(self,x): returnx*2 deftriple(self,y): returny*3 defsum(self,x,y): returnself.double(x)+self.triple(y)if......
  • python / lib
    spython正则表达式:repython操作系统库:ospython爬虫库:request库C:\Users\lindows>pipinstallrequests-ihttps://mirrors.aliyun.com/pypi/simpleLookinginindex......
  • Python中logging模块用法
    一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配debug-->info-->warning-->error-->critical,默认最低级别为warning级别。1.v1importlogging......
  • python爬虫-request模块
    1.requests中的请求方法  HTTP请求方法:requests.get(url,params=None,**kwargs)#GET请求requests.post(url,data=None,json=None,**kwa......
  • 如何选择Python与C++之间的胶水:Boost.Python,Cython,pybind11,SWIG
    Python作为一门胶水语言,它与C/C++之间的兼容性(Interoperability)我认为是它相比其他动态语言脱颖而出的最大原因。Python原生支持的是与C语言的接口,Python的发行版自带有Pyt......
  • ChatGPT: python3 查找在列表1中而不再列表2的项目
    A:f1_urls=['a','b']f2_urls=['a','c']python3中获取存在于f1_urls而不在f2_urls的项目Q:f1_urls=['a','b']f2_urls=['a','c']#将列表转换为集......
  • python用turtle画出给定图片的图像
    python用turtle画出给定图片的图像、校徽等复杂图像都可以需要:1.要画的图片2.安装好cv和turtle打开python文件,把想画的图片放到和py文件同目录,代码中默认图片名字为1.xxxxx......