吕 海,王 琢
(沈阳理工大学 信息科学与工程学院,沈阳 110159)
随着互联网时代到来和移动终端设备的普及,中国互联网购物领域出现了很多网上购物平台,随之出现的网上评论系统可让已经购买商品的用户以评论的形式把使用感受表达出来,给其他对该商品有购买欲望的用户做为选购商品的参考。因此,购物平台上的大量商家通过招募虚假评论写手来对自家商品发表好评,同时,也对竞争商家的商品发表差评。此外,网上评论系统对虚假评论写手发表的虚假评论没有严格的检测措施,导致虚假评论泛滥。这种受利益驱使故意发表虚假评论的行为叫做评论欺诈[1]。
虚假评论的问题自从出现以后,引起了相关学者的高度关注,大量的虚假评论检测方法也被提出,现阶段对虚假评论检测有很多学者进行了详细的研究[2-3],但这些检测方法对虚假评论检测并没有取得很好的效果。以前学者们对虚假评论检测的研究都是基于离线方式,这种方式通过检测虚假评论数据集的历史数据,达到发现虚假评论欺诈活动的目的。此方式运行虚假评论检测算法时间过长,而且评论数据集的历史数据对当前正在发生的虚假评论数据来说时效性很差。因此,最近有学者提出在线检测方式,在线检测的方式是对正在发生的虚假评论欺诈活动进行检测。这种检测方式通过对评论数据进行实时更新,每次只检测离当前时间最近一部分的评论数据,可以使消费者受到虚假评论的影响降到最低。基于在线检测的方式是虚假评论检测领域中一个重要的研究方向,Junting Ye等[4]提出了使用指示性信号来对虚假评论进行在线检测,该算法的输入为单个产品的所有评论数据,输出为根据单个产品的评论数据计算得到的指示性信号时间序列;通过观察指示性信号在时间序列上的变化来对虚假评论欺诈活动的爆发进行在线检测。这种算法的缺点是只能对单个产品的评论数据进行在线检测,不能对多个产品混合的评论数据进行在线检测,也不能对虚假评论人进行有效的筛选。
本文提出一种新的在线产品虚假评论检测算法。该算法分为四个部分:(1)使用时间窗口提取时间序列上的评论数据,将评论数据生成二部图结构,然后转化为评论人图结构,最后计算评论人图中评论人之间的权重,得到带权评论人图;通过时间窗口在时间序列上不断滑动生成动态带权评论人图。(2)使用SCAN算法[5]对时间窗口内的带权评论人图进行图聚类,得到候选虚假评论人群组。(3)计算候选虚假评论人群组的欺诈特征。(4)使用SVM算法[6]对群组欺诈特征训练分类器。
时间窗口:数据集随着时间的变化不断进行更新,每个时间单位都会有新的数据加入数据集,可以把这些不断加入数据集的数据以时间窗口为间隔,在时间序列上分成小的数据集,对时间窗口内的数据进行实时挖掘。即把历史数据丢弃,只使用离现在时间较近时间窗口内的数据集。为维护时间窗口内的数据,需要对时间窗口进行滑动处理,使时间窗口随着时间序列的滑动丢弃掉最远时间的数据,添加最近时间的数据。
SCAN算法:SCAN算法是基于DBSCAN算法改进而来的社交网络聚类算法。该算法的主要思想是在考虑图中节点之间的关系时,把节点之间是否直接相连考虑在内,聚类条件是以节点之间共有的邻居为标准。
SVM算法:支持向量机(Support Vector Machines)是一种有监督学习的二分类模型。SVM算法通过寻找一个超平面对正负样本分割来训练分类器,分割的原则是样本到超平面的几何间隔最大化,最终将问题转化为一个凸二次规划来求解。
使用时间窗口对时间序列上的评论数据进行分割,时间窗口包含两个参数,第一个是时间窗口长度(t),第二个是时间窗口滑动步长(Δ)。根据时间窗口内的评论数据生成二部图,然后将二部图中评论人和产品的关系转化为评论人与评论人的关系,即评论人图。在评论人图中设置权重来描述评论人之间关系的紧密度。对评论人图中任意两个有边相连的评论人进行计算,评论人i和j都对同一个产品k发表过评论,然后用这两个评论人对产品k的评论信息计算时间紧密度(TimeSim)和评分紧密度(RatingSim)。通过时间紧密度和评分紧密度求出评论人i和j对产品k的紧密度(Tightness)。具体见公式(1)~(3)所示。
(1)
(2)
(3)
通过评论人i和j共同评论过产品的紧密度(Tightness)和杰卡德相似度,计算评论人i和j之间的权重(W)。具体见公式(4)所示。
(4)
式中Pi、Pj分别表示评论人i、j评论过所有产品的集合。
通过公式(4)得到评论人图中评论人之间边的权重(W)后,设置一个W的阈值(δ),如果W≥δ,则保留评论人之间的边;如果W<δ,则去掉评论人之间的边。
通过以上操作可以在时间窗口内得到一个“静态”的带权评论人图。对时间窗口进行滑动,使时间窗口内评论数据不断发生变化,从而使带权评论人图由“静态”变成“动态”。
在时间窗口内的带权评论人图由静态变成动态之前,需要先从评论人图中找到评论人之间的密集区域。本文使用SCAN算法挖掘出评论人图中密集的部分,称之为候选虚假评论人群组。而在时间序列中,对于前后两个相连时间窗口重叠范围内生成的候选虚假评论人群组,如果前后时间窗口内生成的候选虚假评论人群组重复度(overlap)大于等于0.8,则删除前面时间窗口重叠范围内的候选虚假评论人群组,保留后面时间窗口重叠范围内的候选虚假评论人群组,反之,则都保留。具体公式见式(5)所示。
(5)
式中:VT(g)1表示前一个时间窗口内评论人群组的评论;VT(g)2表示后一个时间窗口内评论人群组的评论。
(1)评分相似度CDR
CDR(g)=avgri,rj∈Rge-|ψri-ψrj|2
(6)
式中:ri、rj分别表示评论人i、j的评论;ψri、ψrj分别表示评论人i、j评论的评分;Rg表示评论人群组中全部评论人的集合。
(2)时间相似度CDT
CDT(g)=avgri,rj∈Rge-|tri-trj|2
(7)
式中tri、trj分别表示评论人i、j评论的时间。
(3)文本长度相似度CDC
(8)
式中:Lri、Lrj分别表示评论人i、j评论的文本长度。
(4)文本余弦相似度CDCS
CDCS(g)=avgri,rj∈Rgcos(φri,φrj)
(9)
式中φri、φrj分别表示评论人i、j评论文本内容。
(5)文本杰卡德相似度CDJS
CDJS(g)=avgri,rj∈RgJaccard(φri,φrj)
(10)
使用SVM算法对训练数据集时间窗口内的评论人群组特征训练分类器。将评论人群组中作弊度(μ)大于等于0.2的评论人群组特征定义为作弊群组,反之,定义为非作弊群组。具体公式见式(11)所示。
(11)
式中:spam(V)表示作弊评论;all(V)表示全部评论。
实验数据集为Yelp评论数据集,该数据集是在Yelp.com站点上分享的已经标注过的评论数据集,是纽约地区所有酒店评论数据。评论数据集有评论人ID、产品ID、评论评分、评论标注、评论日期和评论文本信息。本文从中选取一部分作为实验数据集。表1中显示了数据集的一些统计信息。
表1 数据集的统计结果
本文使用适合对于二分类问题进行度量的正确率、精确率和召回率作为度量指标。实验中的在线检测是对正在发生的虚假评论欺诈活动进行检测,即对当前时间戳所属时间窗口长度(t)范围内的评论人群组特征数据进行检测;并以当前时间戳向后推移,推移距离为时间窗口滑动步长(Δ)。因为对单个“当前”时间窗口进行检测结果并不能衡量算法的稳定性,同时随着时间的变化,需要不断检测“当前”时间窗口(即正在发生的虚假评论活动)。因此,实验中计算的正确率、精确率、召回率和F1值为检测所有“当前”时间窗口结果的平均值。
首先对评论数据集进行预处理,将评论人ID、产品ID和评论人评分从字符型转换为整型,将评论日期转换为时间戳。其次,以评论数据的时间戳为基准建立一个时间序列,设置好时间窗口长度(t)和时间窗口滑动步长(Δ)。通过参数得到时间窗口内的评论数据,将评论数据生成二部图结构,然后转化为评论人图结构并利用公式(1)~(4)计算评论人之间边的权重,同时设置一个权重阈值(δ),带权评论人图中大于等于δ的边保留,反之则删除。使用SCAN算法对带权评论人图进行图聚类,得到评论人群组,同时利用公式(5)删除重复的评论人群组。利用欺诈特征公式(6)~(10)计算评论人群组特征。利用公式(11)对时间窗口内的评论人群组标注。将实验数据集所得到的评论人群组特征数据分为两部分,2012年评论人群组特征数据为训练数据集,2013年和2014年评论人群组特征数据为检测数据集。用SVM算法对2012年评论人群组特征训练分类器,并对2013年和2014年的评论人群组特征数据进行在线检测。
本文对所提出算法的时效性进行分析,在实验中以检测数据集2013年第一个时间戳为开始时间戳(固定值),选择不同的结束时间戳,来对检测数据集时间序列范围内时间窗口生成的评论人群组特征数据进行检测。表2为检测数据时间范围表。
表2 检测数据时间范围设置表 %
从表2中的实验结果可以分析出,随着检测数据时间范围的变大,正确率和精确率先出现不稳定性波动后降低,而召回率则先降低后增加,F1值则出现波动性降低。本文所提出的算法对时间范围是1个月的检测数据进行在线检测,可以使度量指标达到整体最优;时间范围是4个月的检测数据可以保持较高的正确率;而随着时间范围的不断变大,除召回率外各项度量指标均出现不同程度的下降。
对算法参数进行分析,每次只更改其中一个参数值来比较该参数对算法度量指标的影响,从而将参数调整到一个最优值。
时间窗口长度参数(t)用于控制时间窗口的大小。表3为t参数设置表。通过观察表3 中的参数和度量指标可以发现,当参数t取不同的值时,正确率、精确率和F1值先降低后增加,而召回率则先增加后降低。由此得知,参数t对全部度量指标有一定影响。
表3 数据集中的t参数设置表 %
时间窗口滑动步长参数(Δ)用于控制时间窗口的滑动速度。表4为Δ参数设置表。通过观察表4中的参数和度量指标可以发现,当参数Δ取不同值时,正确率和精确率先增加后降低,而召回率和F1值则先降低后增加。由此得知,参数Δ对正确率和召回率有一定影响,但对精确率和F1值影响很小。
表4 数据集中的Δ参数设置表 %
评论人图中权重阈值(δ)用于筛选评论人图中评论人之间关系的紧密度。表5为δ参数设置表。通过观察表5中的参数和度量指标可以发现,当参数δ取不同的值时,全部度量指标均出现反复剧烈波动。当δ取值0.5时,正确率和精确率效果最好,但是召回率和F1值效果最差;当δ取值0.8时,召回率效果最好,但正确率和精确率效果最差。由此得知,参数δ对算法有很大影响,且对不同的度量指标存在互斥关系。
表5 数据集中的δ参数设置表 %
整体来看,本文算法中三个参数对全部度量指标均有不同程度的影响,参数δ对算法的影响最大。
本文提出的在线产品虚假评论检测算法,考虑了评论数据集的实时性,与其它的离线虚假评论检测算法相比,忽略了历史评论数据,用最近一段时间的评论数据对正在发生的虚假评论欺诈活动进行检测,及时的对虚假评论预警。同时,该算法也取得了较高的精确率和召回率,对虚假评论检测领域有应用价值。但也存在一些不足,如使用的欺诈特征过少,需要增加新的欺诈特征来提高算法的度量指标。