-
随着社交媒体的兴起,许多评论网站在收集在线产品和服务意见方面变得有影响力,同时评论网站需要客户提供准确而真实的评论[1].但是为了在评论网站上提高、损害产品或服务的声誉,个人和公司可能通过制造虚假评论来实施欺诈.这可以由在网站上拥有多个垃圾邮件账户的用户完成,同一作者的多个虚假评论将在多个账户中发布.因此,能够准确有效地识别欺诈性评论,对于网站维护其提供的评论信誉非常重要[2-3].作者识别任务可用于此域中,以确定两个或多个垃圾邮件账户是否属于同一个作者,并帮助删除这些账户及其相关联账户的评论[4]
作者识别(Author identification,AI)是指在一组封闭已知作者身份的文档集合中识别给定文档的作者的任务[5].随着社会化媒体服务的发展,短文本作者归属变得非常必要.当前已有一些方法用于作者识别.文献[6]提出了一个新的作者-文档-主题模型,该模型在作者和文档两个层次上为语料库建立模型,以解决短文本的作者归属问题,同时设计了新的分类算法来计算文本之间的相似度,寻找匿名文本的作者.文献[7]针对Twitter数据上的作者验证问题,提出了一种基于多层感知器的深度学习方法,获得了很高的分类成功率.文献[8]针对古希腊文字著作权归属问题,提出了一种仅使用形态-句法数据来识别作者身份的方法,不依赖特定的词汇项目,提高了小文本分类的精度.文献[9]提出了一种主题漂移模型,该模型可以监视作者写作风格的动态并同时了解作者兴趣,通过对时间信息和单词顺序的敏感分析,识别匿名文本中的作者身份.文献[10]采用了一组文本失真方法来掩盖主题相关信息,该方法将输入文本转换成一种更为主题中立的形式,同时保持与作者个人风格相关的文档结构,并控制语料库以提高其在具有挑战性任务中的表现.文献[11]通过情感定位和帖子长度来表征每个用户的发帖风格,然后结合字符N-gram和单词的N-gram模型来训练支持向量机,识别评论区短文本作者.
由于在线评论的文本长度很短,语言特征有限,使得上述方法在识别多个帐户的评论是否属于同一作者较为困难.本文提出一种基于自然语言处理和机器学习的短文本作者识别算法,该算法将自然语言处理技术与不同的机器学习方法相结合,根据多个不同的语言特征,以期解决简短嘈杂的评论文本的作者识别问题.
全文HTML
-
自然语言处理(Natural Language Processing,NLP)是计算机科学领域和人工智能领域中的一个重要分支,它关注计算机与人类之间使用自然语言的互动交流,最终实现计算机能够以一种智能与高效的方式理解和生成语言的目标. NLP技术应用于多个领域,在信息检索、情感分析、文章作者识别、机器翻译等方面均取得了较好的效果,研究方向也从词汇语义成分的分析向叙事理解扩展.
目前,自然语言处理技术是基于统计机器学习,这些算法的输入是一大组从输入数据生成的特征.根据自然语言的上下文关系特性建立数学模型,此类模型具有能够表达不同可能的答案,可以产生更可靠的结果.
-
本文提出的识别方法分为4个部分:①数据预处理,预处理评论;②特征表示,从预处理评论中提取特征;③自然语言处理,为评论添加上下文;④机器学习分类,对评论作者进行分类.
评论的分类包括训练阶段和预测阶段.在训练阶段,对包含多个评论的训练数据进行预处理,并将其传递至特征提取器.在特征提取器中,将多个NLP技术应用于评论并生成特征,然后利用这些特征训练机器学习的分类器.最后在预测阶段使用这个分类器来预测新评论(输入)的作者(标签).
-
进行数据预处理的目的是标准化数据集中的数据并减少特征集中的数量,这样的处理也适用于将数据拟合到所有类型的分类模型上,因为该处理方式能够有效提高分类模型的计算效率.使用的预处理步骤:①小写字母归一化:为防止同一单词的多个版本,所有单词均被归一化为小写形式,以便将它们全部计数;②标点符号的分离:大多数标点符号与句子中的单词结合在一起,使得同一单词形式的多种变体重复出现,但是标点符号可能是识别算法中的重要特征,因此预处理中将标点符号与单词分开,而不是删除;③删除出现次数为1的单词:如果一个单词在整个数据集中只出现一次,那么这个单词很可能不会对分类模型产生影响,因此这些单词被视为不相关的,可以删除.
-
作者通常比其他人更喜欢某些单词或者短语.为了捕捉作者的写作风格并帮助区分不同的作者,本文采用了N-gram模型[12]. N-gram是一种基于概率判别的语言模型,基本原理是基于马尔可夫假设:第n个词的出现只与前n-1个词相关,与其他任何词都不相关;整个语句出现的概率等于每个词出现的概率乘积,每个词出现的概率可以通过语料中统计的次数得到.
假设一条长为n的语句词序列为S=(w1,w2,…,wn),其中wi(1≤i≤n)是S的单词,S出现在语料库中的概率为
从而将序列的联合概率转化为一系列条件概率的乘积.假若当前词的出现仅依赖于其前面出现的一个词时,上式可以变为一个二元模型.
在训练N-gram模型时,一个很重要的过程就是预测模型的条件概率为
其中,c(wi)和c(wi-1,wi)分别表示为词wi与二元词组(wi-1,wi)在训练语料库中出现的次数.
随着N-gram数量的增加,用于训练分类器不同特征的数量增加,训练分类模型所花费的时间随之呈指数增加.因此,在本文算法中,仅对一元语法、一元语法与二元语法两者的组合进行评估.
-
NLP技术[13]通过为分类器提供每次评论的上下文来帮助分类器.因此,它们有助于更好地理解每个作者的文体风格和语言特征.本文采用3种不同的NLP技术进行处理.
-
词干提取是去除单词前后缀得到词根的过程,常见的前后词缀有名词复数、进行式、过去分词等形式,如单词“likes”“liking”“likely”“liked”将全部简化为它们的词根形式“like”.将具有相同词根形式的单词所有变体合并在一起,可以确保共同计算词根形式的频率,因此这会增加词根形式出现的可能性,从而可以对分类模型产生影响.在本文方法中用于分类的词干算法是Snowball词干算法[14].
-
词形还原是基于词典,将单词的复杂形态转变成最基础的形态.不同于词干提取采用的缩减方式,词形还原主要采用转变的方法,通过对词形进行分析识别后将词转变为其原形.将形式不同但含义相同的词统一起来,可以方便后续的处理和分析.在本文方法中用于分类的词形还原方法是WordNet Lemmatizer算法[14].
-
停用词是指在处理自然语言数据前后会自动过滤掉某些词,这些词对文本分类没有影响.停止词是最常见词的集合,通过将这些词作为特征可能会导致文本的错误分类.因此,需要对停用词作出标记进行删除.本文根据Python自然语言工具包NLTK(Natural Language Toolkit)提供的128个停止词列表在评论文本中有依据地删除[14].
-
在机器学习中,分类器的作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别.本文方法采用3种不同的机器学习分类器用于文本分类任务,分类的内容是判断评论文本是否属于同一作者.
-
SVM是大幅度线性分类算法.该算法训练模型的目的是找到两个不同类别之间的分离超平面向量w,以使分离距离最大化.超平面向量w的推导可以定义为
其中,γi是通过求解对偶优化问题得到,ai∈{-1,1},1和-1表示两个不同的类.当γj>0时,评论向量rj由于对超平面向量w起到重要影响,称为支持向量.为了确定分类,可以简单地测试每个评论rj位于超平面向量w的位置.
本文所使用的支持向量机是一个二值分类器,它训练支持向量机在每对候选作者之间进行分类,以便执行多类分类.这种训练支持向量机的方法称为一对多,每个新文本评论可以通过每个支持向量机,并选择最有可能的类.在本文方法中由于培训的类别很多,导致多项式核的计算时间太长而不可行,所以采用线性核而不是复杂的多项式核训练支持向量机.
-
MNB是一个概率分类器,假定每个特征在给定特征类别的情况下有条件地独立于其他特征.因此,分类模型不考虑单词的顺序,只考虑单词在文本中的出现频率.该模型基于贝叶斯规则,具有最高可能性的作者类a被视为评论作者,其定义为
其中,f1,f2,…,fn为特征向量,P(f1,f2,…,fn)是通过将r评论中出现的每个特征f的计数除以评论总数来计算的.每个作者的可能性计算为
其中,Na表示作者a的评论数量,NS表示总的评论数量.
为了训练MNB分类器,使用了拉普拉斯平滑度和用于学习先前类别概率的选项,这是为了防止在训练数据集中不存在评论特征时生成零可能性现象的发生.
-
ME是另一个概率分类器,该分类器与MNB的不同之处在于,假设中不认为所有特征有条件地相互独立.因此,当使用基于特征的模型时可以迭代添加特征,而不会出现重叠特征.为了计算一个类(作者)的可能性,使用最大熵原理,选择最接近均匀分布的分布.因此,该分类器除了在训练数据时给出的假设外,没有其他假设.
假定包含N个样本对{(r1,a1),…,(rN,aN)}的训练数据被表示为单词出现的向量,则最大熵模型的可能性定义为
其中,a∈A表示作者类的集合;r∈R表示评论的集合;μ表示权重向量,是通过最大化每个评论r的每个特征fi(a,r)的条件概率来计算的.
本文使用机器学习分类器和自然语言处理技术的不同组合进行作者识别,为了实现每个分类模型与NLP技术的最佳组合,使用了前向选择.前向选择是从分类模型中不使用任何NLP技术开始,然后选择性地向模型中添加具有最显著准确性改进的单个NLP技术的过程.
2.1. 数据预处理
2.2. 特征表示
2.3. 自然语言处理技术
2.3.1. 词干提取
2.3.2. 词形还原
2.3.3. 停用词移除
2.4. 机器学习分类器
2.4.1. 支持向量机(SVM)
2.4.2. 多项式朴素贝叶斯MNB
2.4.3. 最大熵ME
-
为了验证本文算法的性能进行了4个不同的实验,前3个实验采用不同的机器学习分类器和自然语言处理技术的组合.第一个实验作为基线分类模型,在实验中每一个机器学习分类器与一个一元语法向量模型或者二元语法向量模型相结合;第二个实验将一元语法基线模型与本文提出的多种NLP技术相结合,以提高基线模型的精度;第三个实验将联合的一元语法和二元语法基线模型与众多NLP技术相结合.第4个实验将机器学习分类器和自然语言处理技术的最优组合与最新的识别算法进行对比.
交叉验证是一种评估分类模型准确性的方法.为了评估不同的作者识别模型,使用了k折交叉验证.即将数据集拆分为k个大小相等的分区,k-1个分区用于训练集,剩余1个分区用于测试集.使用训练集对分类模型进行训练,然后在测试集上进行测试,以计算模型的准确性.此过程重复k次,将每个不同的分区用作测试集,将剩余分区用作训练集.然后,将这些迭代中计算出的所有精度的平均值推广为单个精度估计.通过使用这种验证方法,可以使用更多数据来训练模型.此外,交叉验证确保数据集中的所有数据都用于训练和测试,而不会对准确性结果造成任何偏差.在本文实验中,使用了10倍交叉验证.
-
为了保证在在线评论上执行本文算法,使用了由餐厅和酒店评论组成的Yelp评论数据集.该数据集包含了来自192 609家企业的1 637 138位不同作者的6 685 900篇独特评论,其中数据集内的一些作者只发表了少量的评论.由于没有足够的语言特征来获取和学习,很难对那些作者使用本文算法.出于这个原因,在实验中使用的数据集只包括每个作者至少发表了100篇评论的作者,这与假评论者倾向于发表许多评论的事实是一致的.
-
表 1给出了仅使用一元语法或采用了一元语法和二元语法组合的基线模型获得的结果.从表 1中可以看出,这种组合为SVM和最大熵提供了很高的分类精度.但是,MNB的分类准确性较低.这些结果在所测试的两种类型的N-gram模型中都是一致的.对于SVM和ME分类器,当将使用的N-gram模型从一元语法增加到一元语法与二元语法组合时,准确性都会提高.表现最佳的基准模型是采用一元语法和二元语法组合的SVM.
表 2和表 3分别给出了针对仅采用一元语法、一元语法与二元语法同时采用时,机器学习分类器与NLP技术最佳组合的测试结果. 表 2、表 3的结果表明,NLP技术在两个N-gram模型中具有相同的效果.这是由于NLP技术的相同组合在两个N-gram模型中均提供了最佳结果.与基线模型相比,结合NLP技术的作者识别算法的精度有明显的提高,充分说明本文算法的有效性.
3.1. 数据集
3.2. 实验结果
-
本文提出一种在短文本上执行作者识别的方法,该算法结合多种机器学习分类器和自然语言处理技术,根据不同的语言特征,解决了评论网站上在线评论文本的作者识别问题.为了验证本文算法的有效性,采用3组不同机器学习分类器和自然语言处理技术最佳组合的实验.实验结果表明,相对于基线模型而言,引入NLP技术的分类精度有明显提高,而且在一元语法和二元语法相结合的N-gram模型中,SVM分类器与词形还原NLP技术组合的分类精度达到93.5%,从而证实了本文算法对作者人数众多,且评论规模很小的数据集能够产生良好的准确性.