1. 引言
互联网的发展与普及很大程度上改变了消费者的消费观以及消费意见反馈的途径,越来越多的消费者青睐于网上购物与消费。同时,大部分电商平台允许用户对所购买的产品,消费过的酒店,景点等发表评论,来表达消费者对产品的看法。这些评论能够对以后的消费者的决策起到一定的作用,潜在消费者可以以此作为是否消费的重要参考依据。部分无良商家发现利用这一点获取更大的利润,雇佣水军,学术界也称其为垃圾评论发布者,即发布垃圾评论的人,在本店铺下的商品下进行赞赏,发布积极的评论,来起到诱导潜在客户的目的,或在该商家的竞争对手下,发布一些恶意诋毁的评论,误导该商店的潜在客户,导致客户失去兴趣,从而在一定程度上可以提升自己商店的销量。所以,将商品评论正确分类,将最客观真实的评价展现给用户的研究应运而生 [1]。
Jindal和Liu [2] 在2008年最早提出虚假评论这一研究问题,把垃圾评论可以大体分为三类:1) 上文所提到的指对产品或服务进行不符合实际的鼓吹或诽谤,从而达到影响用户的观点或消费行为的目的的评论;2) 评论的对象仅仅是品牌、生产商、销售商等与产品本身无关的评论;3) 广告,读者的问题和回复等非评论信息。Abernethy等人 [3] 提出的检测垃圾文本的方法可以检测垃圾网页和垃圾邮件,大都基于关键词词频统计的方法,一般不能用于检测第一类产品垃圾评论。
该课题早期的研究是基于文本本身,Li和Ott等人 [4] 在心理学角度进行分析,通过词袋及词性特征对评论文本的虚假性进行判断,词袋特征对观点挖掘、情感分析等研究方向是一个十分有效的特征,但是它的单独运用对虚假评论的识别效果不理想,语法分析属于该任务的早期研究方法,同时研究表明虚假评论比真实评论包含更多的情感词,他们认为稀疏相加生成模型在该课题中运用情感极性特征可以发现反常评论信息。
目前神经网络在自然语言处理方面表现较好,现有研究方法一般将评论文本本身和评论发布者的特征相结合,从而有效提升检测效果。在对虚假评论文本的检测研究中,现有研究对文本及评论发布者的综合分析和利用,主要通过特征级别的融合实现。Mukherjee等人 [5] 在Yelp数据集上采用支持向量机分类器,运用评论文本特征获得65.6%~67.8%的准确度。在加入评论发布者的特征之后,检测准确度提升至84.8%~86.1%,该研究说明评论发布者特征有助于提升对虚假评论文本的检测能力,同时也说明了Yelp垃圾评论过滤算法的合理性。
Lin等人 [6] 根据评论内容和评论发布者特征,设计了基于监督的方法和基于阈值的方法来识别虚假评论,研究表明基于监督的方法能够在较少的训练样本的情况下对虚假评论检测获得较高的精确率和召回率,而基于阈值的方法在不需要训练样本的情况下也能取得较好的效果。Heydari等人 [7] 有效地利用了评级偏差、评论内容和评论发布者的活跃度,采用模式识别技术,对从评论时间序列中获取的可疑时间间隔进行综合研究,在垃圾评论识别检测中获得更高的准确度。
原福永等人通过建立注意力机制的神经网络模型,结合评论文本,评论发布者特征,商品特征,在Yelp数据集中进行垃圾评论检测,能够较好地提取特征信息,准确率高达86.81%,但是还可以结合更多的外部特征进行垃圾评论检测,进一步提升模型对评论发布者特征的提取能力 [8]。
产品评论垃圾检测尚有许多值得深入探索的问题,将文本特征与评论发布者行为等特征相结合也是一类直观、有效的研究角度,注意力机制能够获得不同的特征在检测中不同的权重 [9],实现更好的检测效果。针对忽略评论者特征影响导致准确率低的问题,本文首先在美国最大的点评网站Yelp中爬取酒店评论数据作为实验的数据集,然后通过融入注意力机制的卷积神经网络模型进行特征提取完成分类任务,在数据集上进行对比实验,最后通过对比实验结果证明本文模型的有效性,并提出未来可以进一步提升准确率的方向。
2. 相关工作
2.1. 卷积神经网络
卷积神经网络是目前比较流行的深度学习模型,由于其强大的特征提取能力,在自然语言处理领域越来越受欢迎。卷积神经网络模型包括卷积层,池化层和全连接层,每一层有特定的任务,如图1所示。

Figure 1. Convolutional neural networks model
图1. 卷积神经网络模型
其中,卷积层负责特征提取,在卷积层进行特征提取后,池化层负责特征的选择和信息过滤,一般常用的策略有最大池化和平均池化,如图2所示。
最大池化是指在一定区域内取最大值,平均池化指一定区域内取平均值,通过这种操作,可以达到压缩矩阵的目的。全连接的核心操作是矩阵向量乘积,把一个特征空间转化到另一个特征空间,也可以起到分类器的作用。
卷积网络本质就是一种输入到输出的映射,只要用已知的模式对卷积网络加以训练,就能够学习大量的输入与输出之间的映射关系。卷积神经网络有出色的特征提取能力,是当下最流行的深度学习模型之一。
2.2. 注意力机制
在人类视觉中,会选择性关注所有信息的一部分,同时忽略其他信息,这种机制叫做注意力机制。注意力模型最初被用于机器翻译,现在已成为神经网络领域的一个重要概念。在人工智能领域,注意力已成为神经网络结构的重要组成部分,并在自然语言处理、统计学习、语音和计算机等领域有着大量的应用。使用注意力机制,能够获取各种特征在判定中不同的权重,从而达到更好的识别效果 [10]。
大多数注意力模型附着在Encoder-Decoder框架下,Encoder-Decoder框架是一种深度学习领域的研究模式,原理就是对于句子对
,将输入句子Source,通过该框架生成目标句子Target,在框架中,先将Source编码成中间语义C,再将C解码成Target。
一般在注意力机制的计算过程中,会涉及到Query (查询),Key (键)和Value (值)三个要素,三者构成注意力机制的本质,如图3所示。
Attention的计算过程一般分为以下三步:
步骤一:计算Query和Key的相似性,通常使用点积运算(如公式1所示)、余弦相似度计算(如公式2所示)和神经网络计算(如公式3所示)。
(1)
(2)
(3)
步骤二:引用Softmax函数对步骤一中产生的分值进行数值转换,一方面归一化处理将分值整理成权重之和为1的概率分布,另一方面通过Softmax的内在机制增加重要元素的权重,一般计算如公式(4)所示,其中,Lx代表输入句子Source的长度,Simi和Simj表示上一阶段求出的相似度。
(4)
步骤三:步骤二中的ai就是Valuei的权重系数,加权求和得到Attention的值,计算如公式(5)所示。
(5)
Attention的作用就是通过内部的运算,为每个输入序列分配一个权重,通过计算输入序列的加权和,将关键部分突出,将不重要部分忽略,达到优化模型的目的。
3. 本文方法
本文利用融入注意力机制的卷积神经网络将评论文本和评论发布者特征综合考虑,作为检测依据,从而提升检测准确率 [11],本文的模型(Attention-CNN)架构如图4所示。
对于每一条酒店评论,首先使用wiki-news-300d词向量库将评论文本和评论者特征表示,然后在注意力层中将评论文本中的词和评论者特征中的特征分配权重,再到卷积层中提取特征,池化层压缩数据,这里使用的是最大池化策略,将二者连结,进入全连接层,最后使用Sigmoid完成二分类任务。本文模型综合考虑评论文本和评论发布者特征进行检测,同时考虑到不同的特征对结果的影响大小不同,所以该模型的检测效果有一定的提升 [12]。
4. 实验
4.1. 实验环境
本实验采用Pytorch深度学习框架,操作系统为64位的Linux系统,内存为32 GB,CPU为锐龙R53600X,GPU为RTX 2060 super。
4.2. 实验数据
现有的公共数据集大多只是基于文本本身的内容增加标注,增加评论发布者特征之后如果人工标注则缺少一定的可靠性,本次实验数据集获取方法采用的是在美国最大的点评网站Yelp中爬取。Yelp系统将有效的可推荐的正面评论显示在每一个商家介绍信息下方,而将系统认为无效的,不可推荐的垃圾评论隐藏起来,用户点击显示之后就会显示。本次实验爬取Yelp网站中酒店评论正向与反向各10,000条,共20,000条数据,数据集基本信息如表1。

Table 1. Basic information about the dataset
表1. 数据集的基本信息
上述表格列出了数据集中所有字段以及一条正向样本的具体内容,平均评级指该酒店的平均星级评分,总共有五级,朋友数、评论总数和照片总数分别指该评论发布者的好友的数量,注册以来发布评论的总数量和发布的所有评论中的照片总数量,星级评分指该评论者在该评论中对该酒店的评分,总共五级,发布时间指发布该评论的时间,评论文本是评论的具体内容。
4.3. 实验评估指标
本次实验选择准确率(Accuracy)作为实验的评估指标,准确率能够反映模型分类的准确性,计算如公式(6)所示,其中分子表示分类正确的正向和负向样本的总和,分母表示所有分类样本的总和。
(6)
4.4. 实验设置
首先提取评论文本的特征,实验选用wiki-news-300d的词向量模型表示文本,将每个单词表示为词嵌入向量
,
,文本矩阵表示为
,
,T代表文本的长度。在评论文本的注意力层中,为每个单词分配注意力权重,在评论者特征的注意力层中,为每个特征分配注意力权重,然后输出分配权重之后的向量。在文本中,对于每一个词向量xi分别乘三个权重矩阵WQ,WK和WV,得到矩阵Qi,Ki和Vi,W矩阵开始要初始化,后期随着模型训练更新,然后计算xi与包含本身在内的所有词xj的相关性
,如公式(7)所示。
(7)
将
经过Softmax得到
,计算如公式(8)所示。
(8)
将每个
与对应的矩阵Vi相乘再求和就得到注意力层的输出bi,计算如公式(9)所示。
(9)
在处理评论者特征中,将特征的数据转换成向量
,在注意力层做上述过程同样的处理,即可得到分配权重之后的输出
。
在卷积层中,计算如公式(10)和公式(11)所示。
(10)
(11)
公式中,Zl和Zl+1表示第l + 1层卷积的输入和输出,Ll+1为Zl+1的尺寸,wl+1代表权重,b为偏置,f'、s0和p为卷积层参数,对应卷积核大小、卷积步长和填充,三者共同决定了卷积层输出特征图的尺寸,是卷积神经网络的超参数。在卷积层进行特征提取后,输出的特征会被传递至池化层进行特征选择和信息过滤,本课题的模型在池化层采用的是最大池化策略。
在评论发布者特征提取中,评论发布者的特征主要表现了评论发布者的个人信息,将数据以向量化的形式表示。数据处理后输入到神经网络中进行特征的提取,将特征向量融合注意力机制,因为评论发布者的每个信息属性对是否判断为垃圾评论的影响是不一样的,注意力机制能选择关键的并忽略不相关的评论发布者信息,从而更加客观准确地实现最终的检测。
通过以上的特征提取,获得文本和评论者的特征,在连结层将两个特征连结转换成一维向量Z,将Z输入到全连接层,加入50%的dropout防止过拟合,使用Adam作为训练的优化器。本课题的本质是一个二分类问题,在全连接层直接使用Sigmoid函数完成分类任务,计算如公式(12)所示,其中W'为参数矩阵,B为偏置项。
(12)
4.5. 对比实验设置
本课题实现了两个对比实验与本文提出的实验模型进行比较。第一个对比实验是只关注评论文本本身的实验,同样利用融入注意力机制的神经网络进行特征提取。第二个对比实验是融合评论发布者多特征的实验,在评论发布者特征中只使用卷积神经网络提取特征,为了结果的可靠性,实验采用十折交叉验证方法进行。
4.6. 实验结果
本课题实验与上述两个对比实验的实验结果如表2所示。
实验证明,评论发布者特征能够在一定程度上影响评论的分类,在评论发布者特征中不同的特征对最终的分类结果的影响程度不同。
5. 总结与展望
针对垃圾评论检测因忽略评论者特征导致准确率低的问题,本文利用融入注意力机制的卷积神经网络,融合评论发布者特征与评论文本特征进行垃圾评论检测,实现评论的有效分类,在Yelp酒店评论数据集上,通过对比实验,证明了该模型的有效性。下一步的工作可以考虑优化评论发布者特征,增加可获取的新的特征,结合领域内更多的专业知识进行检测,另外可以考虑将模型引入其他类型的评论分类中,提高模型通用性。