本发明涉及文本挖掘领域,尤其涉及一种基于lstm多实体特征融合的虚假评论检测方法。
背景技术:
随着计算机技术的发展,网络与人们的生活紧紧联系到了一起,通过网络售卖货物已经越来越成为一种重要的销售方式,网上购物往往会受到他人对货物评论的影响,而人们也产生了强烈动机,通过发布一些虚假的观点或评论,来推销或诋毁一些目标产品、服务、组织或个人。
为检测虚假评论,已经有人进行了大量工作,他们从评论文本与用户数据两方面出发,试图找到用于表示虚假评论的线索,提取有效的文本特征和行为特征,并依此特征将评论进行表示,进而使用统计模型来检测虚假评论,然而现有的检测方法效果较差,无法精确的判别哪些评论是虚假评论。
为此本发明提出了一种基于lstm多实体特征融合的虚假评论检测方法,能够精确的进行虚假评论检测。
技术实现要素:
为实现本发明之目的,采用以下技术方案予以实现:
一种基于lstm多实体特征融合的虚假评论检测方法,包括以下步骤:步骤1,将评论按用户和产品分别进行分组,提取待检测评论基于产品实体的评论序列和基于用户实体的评论序列;步骤2,对每个实体中的评论进行向量化,使用卷积神经网络提取文本特征;步骤3,根据相关行为分析,对每个实体的每条评论的行为特征进行提取;步骤4,将每个实体中每条评论的文本特征与行为特征进行联合,对评论的时序联合特征进行再提取,得到待检测评论在各个实体中的特征向量表示形式;步骤5,融合待检测评论在不同实体中的特征向量,学习新的特征并构建分类器,进行虚假评论和正常评论的判定。
所述的检测方法,其中步骤1包括:将评论数据集中的所有评论按照用户分组并依据发布时间进行排序,取用户u在发布待检测评论r之前已发布的k条评论,表示为:
ur={ruk,ru(k-1),…,ru2,ru1,r},
ur为待检测评论r与其对应用户u在待检测评论r之前最新发布的k条评论的集合;
将评论数据集中的所有评论重新按照产品分组并依据发布时间先后进行排序,将产品p在获得待检测评论r之前获得的m条评论表示为:
pr={rpm,rp(m-1),…,rp2,rp1,r}。
所述的检测方法,其中步骤2对于ur和pr中的每一条评论,使用卷积神经网络自动学习来自于评论内容的文本特征,具体过程包括:首先,使用预训练好的word2vec模型,将单条评论中的每个单词转换成300维的向量,经过多核卷积、池化、全连接操作,最终学习到单评论的文本特征输出;
假设评论r={w1,w2,…,wn},即包含n个单词,第i个单词wi经过word2vec模型后得到一个维度为300的向量e(wi)=[ei,1,ei,2,…,ei,300],如此,评论r可被表示为300×n的向量矩阵e(r)=[e(w1),e(w2),…,e(wn)];对向量矩阵e(r)进行卷积神经网络处理,在经过卷积神经网络处理之后,得到一个新的特征向量
所述的检测方法,其中步骤3包括:每条评论从用户层面提取6个行为特征;基于产品为每条评论提取6个行为特征;从评论行为出发,每条评论提取5个行为特征;将单条评论r的行为特征表示为17维的向量q(r),该向量q(r)包括以上17个行为特征。
所述的检测方法,其中步骤4包括:经由上述步骤2和3提取到每一条评论的文本特征和多实体行为特征后,对于用户实体和产品实体,根据每条评论的时序表示ur和pr中所有评论的文本特征与相应行为特征,利用lstm自动学习每条评论的不同实体时序特征,得到评论在不同实体中的最终特征表示。
所述的检测方法,其中:对于评论实体,直接连接待检测评论r的文本特征与行为特征作为最终的实体特征表示:
对于用户实体,待检测评论r的时序表示ur中存在有k条评论,第i条评论表示为rui,设利用步骤2所述方法提取的d维文本特征为te(rui),使用步骤3所述方法提取的行为特征为q(rui),连接te(rui),q(rui),得到rui的联合特征表示:
则评论r在用户实体中的时序联合特征表示v(ur)为:
v(ur)=[xu1,xu2,…,xuk]
r在产品实体中的时序表示pr中存在m条评论,第i条评论表示为rpi,设利用步骤2所述方法提取的d维文本特征为te(rpi),使用步骤3所述方法提取的行为特征为q(rpi),连接te(rpi),q(rqi),得到rpi的联合特征表示:
则评论r在产品实体中的时序联合特征表示v(pr)=[xp1,xp2,…,xpm];
将评论r的时序联合特征v(ur)和v(pr)传入长短期记忆网络lstm,经过lstm自动学习得到时序上更深层次的用户和实体特征表示:v(ur)和v(pr)。
所述的检测方法,其中步骤4包括:
将评论r在用户实体中的时序联合特征v(ur)输入lstm,若t时刻输入为xut,遗忘门ft决定丢弃或保留的信息:
ft=σ(wf·(ht-1,xut) bf)
输入门it用于更新神经元状态:
it=σ(wi·(ht-1,xut) bi)
当前神经元状态ct表示为:
ct=ft·ct-1 it·tanh(wc·(ht-1,xut) bc)
输出门ot用来确定下一个隐藏状态的值:
ot=σ(wo·(ht-1,xut) bo)
最终得到当前神经元输出ht:
ht=ot·tanh(ct)
其中wf,wi,wc,wo表示权重,bf,bi,bc,bo表示偏差,ht-1表示上个时刻的输出,ct-1表示上个时刻的神经元状态,tanh为激活函数,σ表示sigmod函数;
经过上述lstm步骤的自动学习,将得到时序上更深层次的用户特征表示v(ur),该特征表示为lstm最后时刻的神经元输出;
将评论r在产品实体中的时序联合特征v(pr)输入lstm,自动学习到时序上更深层次的用户特征表示v(pr),该特征表示为以v(pr)为输入的lstm最后时刻的神经元输出。
所述的检测方法,其中步骤5包括:以步骤3从待检测评论本身提取到的特征向量v(r)为主体,附加以步骤4得到的基于用户的更深层次的特征表示v(ur)与基于产品的更深层次的特征表示v(pr),三者进行级联后,形成了新的特征向量
获得单条评论的最终特征表示q(r)后,使用softmax构建分类器得到单条评论的分类结果:
y=softmax(wcq(r) bc)
其中wc和bc为模型参数,y为输出类标签的概率分布,即输入特征向量q(r)所对应评论是虚假类和正常类的概率分布,当得到待检测评论为虚假类的概率值大于该评论为正常类的概率值时,即判断该评论为虚假评论。
附图说明
图1为本发明基于lstm多实体特征融合的虚假评论检测方法的流程图;
图2为评论时序预处理示意图;
图3为基于cnn的文本特征提取示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明。
本发明中会用到评论数据集,其中包含评论、用户、产品三种实体。评论实体包含评论内容、发布时间、发布人、评价对象等属性;用户实体包含评价过的产品、评价过的评论、注册时间、注册地等属性;产品实体包括评论数量、评论人数、注册时间、所在地、总体评分等属性。
如图1-3所示,本发明基于lstm多实体特征融合的虚假评论检测方法主要包括五个步骤:步骤1,将评论按用户和产品分别进行分组,并根据发布时间进行排序,提取待检测评论基于产品实体的评论序列和基于用户实体的评论序列;步骤2,对每个实体中的评论进行向量化,使用卷积神经网络提取文本特征;步骤3,根据相关行为分析,对每个实体的每条评论的行为特征进行提取;步骤4,将每个实体中每条评论的文本特征与行为特征进行联合,得到每条评论的实体联合特征向量,然后使用lstm对评论的时序联合特征进行再提取,得到待检测评论在各个实体中的最终时序特征向量表示形式;步骤5,融合待检测评论在不同实体中的特征向量,学习新的特征并构建分类器,实现虚假评论和正常评论的最终判定。
具体来说:
步骤1.基于时序的评论预处理
本发明从用户和产品两个方面对待检测评论的历史痕迹进行分析,提取评论在时序上的潜在特征,用于更有效的虚假评论检测。因此,本发明将首先对用户和产品实体中的评论进行预处理,如图2所示。
将评论数据集中的所有评论按照用户分组并依据发布时间进行排序,取用户u在发布待检测评论r之前已发布的k条评论,表示为:
ur={ruk,ru(k-1),…,ru2,ru1,r},
ur为待检测评论r与其对应用户u在待检测评论r之前最新发布的k条评论的集合,该集合直接作为待检测评论r在用户实体上的时序表示。在本发明中,k的取值范围可以是4-10,优选的k=6。
将评论数据集中的所有评论重新按照产品分组并依据发布时间先后进行排序,将产品p在获得待检测评论r之前获得的m条评论表示为:
pr={rpm,rp(m-1),…,rp2,rp1,r}.
pr即为待检测评论r在产品实体上的时序表示。在本发明中,m的取值范围可以是15-30,优选的m=20。
步骤2:文本特征提取
对于ur和pr中的每一条评论,使用卷积神经网络(cnn)自动学习来自于评论内容的文本特征,具体过程如图2所示。首先,为了将单词转换成向量以进行下一步操作,使用了预训练好的word2vec模型,将单条评论中的每个单词转换成300维的向量,从而将整条评论文本转换成一个向量矩阵(即进行了词向量编码),将评论内容进行词向量编码后,经过多核卷积、池化、全连接操作,最终学习到单评论的文本特征输出。
假设评论r={w1,w2,…,wn},即包含n个单词,第i个单词wi经过word2vec模型后得到一个维度为300的向量e(wi)=[ei,1,ei,2,…,ei,300],如此,评论r可被表示为300×n的向量矩阵e(r)=[e(w1),e(w2),…,e(wn)]。对向量矩阵e(r)进行卷积神经网络处理,在经过卷积神经网络处理之后,得到一个新的特征向量
步骤3:行为特征提取
ur和pr中的每一条评论在不同的实体中呈现出不同的行为特征。本发明根据前人的研究,从评论、用户和商品三个层面,采用相应的专家知识,为ur和pr中的每条评论分别提取三类行为特征。具体如下:
表1基于用户或者产品的行为特征
表2基于评论行为特征
如表1所示,每条评论从用户层面提取6个行为特征,依次为:一天内发布的最大评论数量(mnr)、正面评价的比例(pr)、负面评价的比例(nr)、平均偏差率(avgrd)、用户评价分数的分布的熵(erd)、突发性(bst)。同理,基于产品每条评论提取6个类似的产品实体关联的行为特征。
根据表2所示,从评论行为出发,每条评论提取5个行为特征,依次为:在所有商品评论中的次序(rank)、评分偏差率的绝对值(rd)、评分的极端性(ext)、带阈值的评分偏差率(dev)、是否为单例(isr)。
通过上述方法,为评论r提取到5个基于评论的行为特征,6个基于用户的行为特征,6个基于产品的行为特征,因此,最后,单条评论r的行为特征可表示为17维的向量q(r),该向量q(r)包括以上17个行为特征。
步骤四:时序特征提取
经由上述步骤2和3提取到每一条评论的文本特征和多实体行为特征后,对于用户实体和产品实体,根据每条评论的时序表示ur和pr中所有评论的文本特征与相应行为特征,利用lstm自动学习每条评论的不同实体时序特征,得到评论在不同实体中的最终特征表示。
对于评论实体,直接连接待检测评论r的文本特征与行为特征作为最终的实体特征表示:
对于用户实体,待检测评论r的时序表示ur中存在有k条评论,第i条评论表示为rui,设利用步骤2所述方法提取的d维文本特征为te(rui),使用步骤3所述方法提取的行为特征为q(rui),连接te(rui),q(rui),得到rui的联合特征表示:
则评论r在用户实体中的时序联合特征表示v(ur)为:
v(ur)=[xu1,xu2,…,xuk]
类似的,r在产品实体中的时序表示pr中存在m条评论,第i条评论表示为rpi,设利用步骤2所述方法提取的d维文本特征为te(rpi),使用步骤3所述方法提取的行为特征为q(rpi),连接te(rpi),q(rqi),得到rpi的联合特征表示:
则评论r在产品实体中的时序联合特征表示为v(pr)=[xp1,xp2,…,xpm]。通常,同一产品对应的评论数量远大于同一用户对应的评论数量,因此,在提取产品实体上时序联合特征时,关联分析的评论数量要多于提取用户实体上时序联合特征时关联分析的评论数量,即通常取m>k。
评论r的时序表示ur与pr中关联的评论在步骤1中已按照发生时间进行过排序,因此每条评论可以被认为是一个时刻,即评论r在用户和产品实体上的时序联合特征项xsi(s∈(u,p))表示每个时刻,因此,评论r的时序联合特征表示为v(sr)其中s∈(u,p)即为一个时间序列。为了从评论r的时序联合特征学习到更有效的深层特征,本发明采用lstm进行时序特征提取。
lstm是循环神经网络的一种,继承了大部分rnn模型的特性,同时解决了梯度反传过程由于逐步缩减而产生的vanishinggradient问题,被广泛应用于时间序列数据分析。lstm的单个神经元包含有三个门:遗忘门,输入门,输出门。将评论r在用户实体中的时序联合特征v(ur)输入lstm,若t时刻输入为xut,遗忘门ft决定丢弃或保留的信息:
ft=σ(wf·(ht-1,xut) bf)
输入门it用于更新神经元状态:
it=σ(wi·(ht-1,xut) bi)
当前神经元状态ct表示为:
ct=ft·ct-1 it·tanh(wc·(ht-1,xut) bc)
输出门ot用来确定下一个隐藏状态的值:
ot=σ(wo·(ht-1,xut) bo)
最终得到当前神经元输出ht:
ht=ot·tanh(ct)
其中wf,wi,wc,wo表示权重(可通过训练得到),bf,bi,bc,bo表示偏差(可通过训练得到),ht-1表示上个时刻的输出,ct-1表示上个时刻的神经元状态,tanh为激活函数,σ表示sigmod函数。
经过上述lstm步骤的自动学习,将得到时序上更深层次的用户特征表示v(ur),该特征表示为lstm最后时刻的神经元输出。
类似地,将评论r在产品实体中的时序联合特征v(pr)输入lstm,将自动学习到时序上更深层次的用户特征表示v(pr),该特征表示为以v(pr)为输入的lstm最后时刻的神经元输出。
步骤5:多实体特征融合与分类
本发明的最终目的是对待检测评论进行是否为虚假评论的判断,因此,对根据步骤2,3,4所述步骤获得的多个不同类型的实体特征进行融合再分类。
对于单条评论而言,它是评论者针对某个产品而发布的相关文本内容,是评论文本、用户、产品三者的结合,包含了三者的对应关系。在进行特征融合时,以步骤3从待检测评论本身提取到的特征向量v(r)为主体,附加以步骤4得到的基于用户的更深层次的特征表示v(ur)与基于产品的更深层次的特征表示v(pr)。三者进行级联后,形成了新的特征向量
获得单条评论的最终特征表示q(r)后,本发明使用softmax构建分类器得到单条评论的分类结果。
y=softmax(wcq(r) bc)
其中wc和bc为模型参数,y为输出类标签的概率分布,即输入特征向量q(r)所对应评论是虚假类和正常类的概率分布。当得到待检测评论为虚假类的概率值大于该评论为正常类的概率值时,即判断该评论为虚假评论。
本发明通过上述五个步骤,分别从评论本身、用户实体和产品实体三个方面进行了特征的学习,通过多个实体特征的融合,实现了对虚假评论的高精度检测。当发表评论的用户行为信息稀疏时,通过多实体特征融合,引入了该评论对应产品的相关评论的特征信息,从而提升了用户行为信息缺乏情况下的虚假评论检测准确度。
对比实验仿真:
表3为在yelp数据集hotels领域上,本发明提出的方法与其他虚假评论检测方法的检测结果。检测性能的评估采用的是检测精确度(p)、召回率(r)、f1值(f1)和准确度(a)作为评价指标。
yelp数据集是第一个兼具商业性与groundtruth的数据集。yelp.com是一个商业性的评论收集网站,其虚假评论过滤算法成熟、准确率高,获得了工业界和学术界的认可。yelp.com并没有公布其算法细节,但公布了其对评论过滤的结果。基于yelp.com过滤算法的业界认可度和多年开发的成熟性,该数据集是目前在商业真实性与groundtruth性之间,做出较好平衡的一个数据集。yelp-hotels包括有来自于283291家宾馆,由5132名用户作出的688329条评论,其中有标注的数据为5679条,802条虚假评论,4876条正常评论。
对比的方法分别为rayana等提出的基于图结构的模型speagle 、mukherjee等提出的方法mk_bf和mk_bf bigram、wang等提出的基于张量分解的方法w_vbf bigram。
从表3中的实验结果可以看出,本发明方法在检测准确度上相比于对比方法有了较大的提升,检测精确度也远高于所有对比方法,同时,f1值也为最优结果。因此,实验结果证明了本发明是一种能有效检测出虚假评论的方法。
表3对比实验结果
通过本发明,能够联合基于cnn文本特征与行为特征,从时间序列上使用lstm(长短期记忆网络)自动学习每条评论在不同实体上的深层特征表示;将评论本身、用户、产品三种实体的深层特征进行融合,实现了虚假评论的高精度检测;一定程度上解决了当发表评论的用户行为信息稀疏引起检测效果不佳的问题,提高了虚假评论检测方法的性能。
1.一种基于lstm多实体特征融合的虚假评论检测方法,其特征在于包括以下步骤:步骤1,将评论按用户和产品分别进行分组,提取待检测评论基于产品实体的评论序列和基于用户实体的评论序列;步骤2,对每个实体中的评论进行向量化,使用卷积神经网络提取文本特征;步骤3,根据相关行为分析,对每个实体的每条评论的行为特征进行提取;步骤4,将每个实体中每条评论的文本特征与行为特征进行联合,对评论的时序联合特征进行再提取,得到待检测评论在各个实体中的特征向量表示形式;步骤5,融合待检测评论在不同实体中的特征向量,学习新的特征并构建分类器,进行虚假评论和正常评论的判定。
2.根据权利要求1所述的检测方法,其特征在于步骤1包括:将评论数据集中的所有评论按照用户分组并依据发布时间进行排序,取用户u在发布待检测评论r之前已发布的k条评论,表示为:
ur={ruk,ru(k-1),…,ru2,ru1,r},
ur为待检测评论r与其对应用户u在待检测评论r之前最新发布的k条评论的集合;
将评论数据集中的所有评论重新按照产品分组并依据发布时间先后进行排序,将产品p在获得待检测评论r之前获得的m条评论表示为:
pr={rpm,rp(m-1),…,rp2,rp1,r}。
技术总结