基于爬虫数据的粮油网络零售价格指数构建
2022-04-01梁凯凯
雷 兵,梁凯凯
(河南工业大学 管理学院 商务智能与知识工程实验室,河南 郑州 450001)
0 引言
粮油价格指数是反映各个时期粮油商品价格走势的变化方向和程度的经济指标。代表性高的粮油价格指数可以将更多的数据融入其中便于粮油市场供需双方及经济学家更好的观察和分析。近年来,随着网络零售市场的迅速发展,网络购物成为除传统购物市场外的另一种购物方案,与此同时随着新冠肺炎疫情的大面积不间断流行,居民购买粮油的习惯和渠道均发生了重大变化,网络粮油零售市场成了居民的新消费领域。数据显示,2022年上半年我国网络零售市场交易额达6.3万亿元,粮油食品网络零售额同比增长21.9%。粮油网络交易的迅速发展,使得粮油网络零售价格的变化成为当前消费者和商家关注的热点。
粮油网络零售价格指数是从消费者价格指数中提炼出来的一种更精细的价格指数,目前鲜有专注于研究粮油网络零售价格指数的构建,而在网购份额逐步增高的环境下,若仍采用线下数据构建粮油价格指数可能会出现偏差,而基于爬虫数据可以更及时地构建出粮油价格指数以给市场供需双方提供参考,因此,基于电商平台的爬虫数据对粮油网络零售价格指数的构建展开研究。
1 文献回顾
网络零售市场每天都产生价格、销量等数据,这些数据为价格指数构建提供了新的数据源,因此随着网络零售额的增长,越来越需要将这些数据用于消费者价格指数的构建中,目前已有学者开始利用这些数据对网络价格指数展开研究。
CAVALLO等指出数据收集技术有改善经济学中统计和实证研究的潜力,以2008年MIT发布的十亿元价格项目验证了如何使用在线价格大数据构建多个国家的每日价格指数[1]。2011年我国阿里网购价格指数(aSPI)发布,其构建初期数据来自淘宝网的4 886个四级类目中的389个类目作为成分类目,并以拉氏方法构建,陈立双指出其虽有优化基础数据质量、提高篮子代表性等优点但还存在大数据技术运用和数据处理不规范等问题,提出要加强创新型特色价格指数构建的实践探索[2]。米子川等对aSPI和CPI进行了对比研究,提出了aSPI优于CPI的一些基本特征,并指出大数据指数对传统统计调查的佐证将成为一种新趋势[3]。刘涛雄等人研究在数字经济时代如何使用在线大数据构建实时高频物价指数,从天猫、京东等B2C平台抓取代表性大数据后基于拉氏指数以居民消费为权数构建了中国第一套基于互联网大数据的居民消费价格指数(iCPI),并发现iCPI不但能反映CPI与现有主要宏观经济变量的关系还能捕捉一些CPI无法反映的信息[4]。URIARTE等基于网络抓取数据的价格指数构建案例,发现与传统数据收集方法相比,基于该数据构建的价格指数可与官方统计数据相媲美且成本更低,还可构建出服务于特定群体的价格指数[5]。JUSZCZAK使用网络抓取数据编制了价格指数对鞋类的价格动态进行了研究[6]。BENEDETTI等基于时间交互-区域产品模型,使用网络爬虫数据构建了苹果、面包等商品的高频城市空间价格指数[7]。HILLEN指出可通过爬虫技术实时收集网络食品价格数据展开食品价格研究,克服目前食品价格数据来源的部分局限性[8]。JAWORSKI在COVID-19期间提出一个自动收集和分析波兰在线食品价格的框架,来实时追踪波兰的食品价格通胀水平[9]。
现有学者基于网络零售大数据的研究主要侧重于构建综合性指数即消费者价格指数,而关于服务于特定人群的价格指数研究较少,并且他们的研究主要集中于基于爬虫技术抓取在线食品价格数据进而研究食品的价格通胀,却鲜有关于粮油价格指数的研究,因此本研究的重点则是结合粮油网络零售价格指数构建目标设计一种基于电商平台爬虫数据的数据处理流程,进而提出一种新的粮油网络零售价格指数构建方案。
2 爬虫数据来源及处理
2.1 爬虫数据来源
粮油网络零售价格指数构建的数据如何获取非常重要,网络零售大数据来源于网络零售市场,目前国内网络零售市场主要有淘宝、京东等平台,这些平台每天都在产生着大量的网络零售数据,由于各个网络零售市场的数据类别都相差无几,所以以淘宝平台为例对网络零售数据进行介绍。淘宝网络零售数据主要分为结构化和非结构化数据。结构化数据主要有价格、销量、累计评价等;非结构化数据主要有商品介绍信息、店铺信息、店铺活动等。所使用的主要信息为结构化数据中的价格和销量,其他的则为辅助信息。本研究的目标是构建粮油网络零售价格指数,因此从2022年5月1日开始每周日基于八爪鱼爬虫工具抓取淘宝平台粮油类目的商品零售信息,共抓取12次,将其定义为{1,2,3,4,5,6,7,8,9,10,11,12}期,具体抓取过程如下。
第一,分析目标网站,了解数据结构分布,确定所需数据的位置。通过分析淘宝平台的网页结构可知,在搜索某品类商品后,页面仅显示价格、销量/评价及店铺等信息,而商品ID、商品介绍信息等更详细的信息,则需进入每个商品的详情页才可获取。
第二,基于“粮油”关键词初步抓取。在淘宝平台的检索框内输入“粮油”关键词进行首次检索,可获取的检索页面为100页,每页44条,在获取检索页面后,将页面按销量降序排列,以商品页面最大值为准逐页进入每个商品的详情页抓取所需的商品销售信息。
第三,细化粮油类目的抓取范围,进行二次抓取。为保证对淘宝平台粮油类目下所有在售商品的最大覆盖,通过对粮油类目商品的初步抓取结果进行分析,发现粮油类目下有更精细的二级类目即食用油、大米、杂粮与面粉,因此在淘宝平台的检索框内分别输入粮油类目下的小类目关键词进行二次检索,并对检索页面实施上一步的抓取过程。
第四,将抓取的每条商品数据存储至事先设定的csv文件中,存储的字段主要包括SKU链接、商品ID、标题、店铺名称、店铺活动、价格、销量、累计评价、商品介绍信息,淘宝平台的各期粮油网络零售爬虫数据量分别为 15 359、13 058、12 743、13 676、14 456、14 284、12520、10 985、13 733、12618、13 975、15675。
2.2 爬虫数据处理
2.2.1 数据清洗
粮油网络零售数据爬取后,需对其进行数据清洗即无效值与异常值处理。在无效值方面,由于网络零售商品数据在抓取时可能会遇到网络等问题,导致部分商品存在重复抓取的情况,因此需以商品ID为基准删除重复值;还需去除销量为零的商品,其并不会影响价格指数构建精度。在异常值方面,由于商家在网络零售市场中上下架商品时并不会有额外成本,同时为了引流和提高店铺档次,部分商家会上架一些价格极低与极高的商品,而这些商品中多数与主流商品的价格走势并不相同,因此为了防止这些商品对粮油网络零售价格指数的构建精度造成影响,将爬取的商品数据按价格升序排列后,剔除前后3%范围内的商品。
2.2.2 商品类别识别
由于抓取到的商品中含有非粮油类目的商品,如检索“小米”时可能搜到“小米手机”而不是粮油类的小米等,因此需进行商品类别识别以剔除无关商品;同时,为保证粮油网络零售价格指数的构建精度,还需对依据“粮油”关键词抓取的商品进行类别细分。对爬虫数据进行商品类别识别的处理步骤如下:①无关商品剔除。建立干扰词典列表,如“手机,大米收纳盒,米箱,米缸,米桶等”,通过Python语言中的re函数编写正则匹配规则对爬取的商品进行遍历,剔除商品标题中含有干扰词典中词语的商品。②识别基于“粮油”关键词抓取的商品类别。目前主要用机器学习方面的方法对文本进行分类,其中常用的方法有决策树、朴素贝叶斯算法等,其中朴素贝叶斯算法是一种有较好分类效果的算法,因此采用朴素贝叶斯算法进行训练,得到网络粮油商品分类模型,然后基于其对未标志的网络粮油商品进行分类,分类步骤如下:①文本预处理。首先,网络粮油商品标题中含有与商品类别无关的词语,如“5kg”“斤”“包邮”等,因此需基于Python语言中的re函数编写匹配规则,将商品标题中的无关词语剔除。其次,借助Python语言中的jieba分词函数对商品标题进行分词处理,但jieba分词函数中所含的语料库并不能包含所有与网络粮油类别相关的词语,因此在分词处理前需先建立网络粮油类别语料库,其含有五常大米、蛋糕粉、橄榄油等词语。最后,基于文本向量化方法对分词结果进行向量化。常用的文本向量化方法有词袋模型、TF-IDF和Word2vec等,考虑到依据商品标题进行商品分类是一种短文本分类,而且网络商家对商品标题主要是以关键词进行撰写,上下文间的联系较少,而文本向量化方法中的词袋模型能较好地处理短文本中关键词的词频问题,因此选用词袋模型将分词结果进行向量化,步骤为:先基于分词结果选出前400个高频词语,然后依据每一条商品数据对照400个高频词语进行向量化。②基于朴素贝叶斯算法的网络粮油商品分类模型训练。将基于食用油、大米、杂粮与面粉为关键词检索的爬虫数据作为模型的训练集。设训练集S={s1,s2…,sn},对应的商品特征属性集 X={x1,x2…,xm},商品类别集 C={c1,c2…,c4}。
基于训练集数据可得,各个商品类别的先验概率P(cb)与每个商品特征在各个类别下的条件概率P(X|C=cb)如下:P(cb)=Ncb/N,其中Ncb为训练集中商品类别为cb的商品数量,N为训练集中的商品数量;;随后基于P(cb)、P(X|C=cb)可得商品Xi属于某一商品类别cb的后验概率为,其中P(Xi)为事件Xi发生的概率。
后验概率最大的商品类别即为预测类别,据基于朴素贝叶斯算法的网络粮油商品分类模型预测商品属于商品类别集中的某类,当且仅当满足以下公式:
基于朴素贝叶斯算法的网络粮油商品分类模型建立好后,还需引入机器学习中常用的分类效果评价标准即精确率p、召回率R和测度,将需预测的商品类别标签当作正类,其他商品类别当为负类,构建混淆矩阵,则p、R和的计算式如下:
其中,TP为预测为正,实际为正,FP为预测为正,实际为负,FN为预测为负,实际为正。
依据Python语言实现基于朴素贝叶斯算法的网络粮油商品分类模型。训练集中食用油、大米、杂粮与面粉下的爬虫数据量分别为4 630、4 247、5 243、2 851,将其按7∶3的比例划分出30%的数据用于验证模型的预测效果,据式(2)可得预测结果为p=0.974 2、R=0.976 6、F1=0.975 2,其证明基于朴素贝叶斯算法的网络粮油商品分类模型的分类效果较好,可将该模型用于网络粮油商品分类。
(3)基于朴素贝叶斯算法的网络粮油商品分类模型实践。根据训练好的模型对基于“粮油”关键词抓取的数据进行分类标记,并进一步验证分类模型的分类效果,如某商品标题为“厂家直销老娘舅香稻江南鲜大米优质粳米香软糯”,预测商品类别为“大米”,而其真实商品类别也为“大米”,表明基于朴素贝叶斯算法构建的网络粮油商品分类模型能够较好地依据商品标题对商品进行精准分类,有助于商品识别,进而可快速且精确的构建出粮油网络零售价格指数。
3 基于爬虫数据的粮油网络零售价格指数构建及分析
3.1 粮油网络零售价格指数构建方法确定
以淘宝平台中粮油类目为例主要构建的是类指数,类指数的构建需要从个体开始然后加权到类,而构建的目的是反映不同个体及类逐期的变动趋势和程度,因此,主要构建环比价格指数,因为其对逐期变动趋势和程度较敏感,能准确、迅速地反映短期价格变化情况,便于商家及时了解价格变动趋势,并分析其原因。
从构建粮油网络零售价格指数的实际意义来看,网络零售市场双方较关心的是在报告期成交量条件下商品零售价格的变动趋势,并希望通过它从侧面对经济活动进行观察和分析。结合价格指数的构建意义,选择的价格指数构建方法为帕氏,公式为,而为了价格指数构建更加简便,对帕氏公式进行变形[10]如:
其中,pti为第i个商品第t期的价格,qit为第i个商品第t期的成交量,pi0为第i个商品的基期价格,为第 i个商品第t期的价格变化,为第i个商品第t期的权重。这种公式变形不仅可反映居民网络消费商品价格的变化状况,也能反映因价格变化而引起的报告期居民网络消费费用的实际变化情况。
3.2 粮油网络零售价格指数构建与分析
将淘宝平台中粮油类目的4个子类,分别记为D1,…,D4,依照aSPI以各子类的销售额占比为各子类的权重,将其分别定义为W1,…,W4。以D1子类为例,假设其共有n个规格品G1,…,Gn,第t-1期的价格分别为,第t期的价格为,权重分别为。
粮油网络零售价格指数构建思路:第一步,计算子类商品中规格品第t-1期与第t-1期的价格比。第二步,计算子类商品第t期与第t-1期的环比价格指数。第三步,计算粮油类的第t期与第t-1期的环比价格指数。具体构建过程如下:第一,计算规格品价格变化,D1子类下第t期规格品a的环比价格变化与权重分别为,,a=1,2,…,n;第二,“不同规格品→子类价格变化”采用帕氏指数,则第t期D1子类的环比价格变化为;第三,“不同子类→大类指数”采用加权平均法,则第t期中总指数的环比价格变化为。
根据粮油网络零售价格指数构建思路与步骤可得,淘宝平台的粮油网络零售价格指数见表1。
表1 淘宝平台的粮油网络零售价格指数
由表1可知,粮油网络零售价格指数和大米、杂粮、面粉及食用油网络零售价格指数在每一期的价格走势方向并不相同,因此在对淘宝平台的粮油网络零售价格指数进行研究时,不能仅看综合性价格指数,还需对综合性价格指数下的细分价格指数进行研究。为进一步探究大米、杂粮、面粉及食用油和粮油网络零售价格指数之间的关系,引入Pearson相关系数,通过计算可得它们之间的Pearson相关系数分别为0.561、0.149、-0.042、0.476,由相关系数可知杂粮、面粉类目的商品与粮油整体价格走势之间的差距最大,而大米、食用油类目商品次之,进一步证明若网络零售商家想要更加精细地了解网络粮油商品的价格走势,则需要对网络粮油类目下的二级类目商品独立研究。
4 结论
采用淘宝平台的粮油零售数据,从数据抓取与清洗、商品分类、价格指数构建方法确定等方面提出了粮油网络零售价格指数构建方案,该方案可为粮油网络零售市场的供需双方及相关人员研究粮油网络零售价格的走势提供一种新途径。通过数据抓取技术提供了一个爬虫流程,用于收集淘宝平台的粮油零售数据,并基于朴素贝叶斯算法构建了一个网络粮油商品分类模型,提高了粮油网络零售价格指数的构建精度和时效。最后通过对淘宝平台的粮油网络零售价格指数的构建结果分析可得,若电商平台的供需双方想要更加精细地了解网络粮油商品的价格走势,则需对网络粮油类目下的二级类目商品独立研究。
本研究的粮油网络零售价格指数是基于淘宝平台的零售数据构建的,提出的粮油网络零售价格指数构建方案,可为其他电商平台的不同类商品的零售数据抓取、价格指数构建和监控提供应用基础,同时也可根据网络零售数据的爬取频次构建出实时的日频、周频等价格指数。