陈 曦,朱小栋,高广阔,肖芳雄
(1.上海理工大学 管理学院,上海 200093; 2.金陵科技学院 软件工程学院,南京 211169)
随着信息技术的发展,电子商务已经逐步渗透到人们的日常生活中,在线评价在做出购买决策中起着一定的作用,挖掘这些评论的褒贬态度,从而识别人们对某种商品的购买倾向的过程,被称为评论挖掘或情感分析。通过对这些互联网商品评论的挖掘可以进一步探索其背后的经济价值,探究消费者情感倾向与商品销售情况的关系,进而为商家提供改善运营策略的意见[1]。
近年来,有较多学者在中文情感分类的问题上进行研究。文献[2]提出一个基于客户感知价值的产品特征挖掘算法,该算法采用情感分析技术实现对于评论中IT产品特征及其情感倾向的语义分析。文献[3]基于拓展的情感词典对中文微博进行主题侦察,建立和扩展情感词典,通过情感分数的计算进行分类。文献[4]通过词嵌入word2vec方法,提取中国酒店评论的特征并放入分类器朴素贝叶斯(NB)、支持向量机(SVM)和卷积神经网络(CNN)中进行对比,其中SVM在分类中表现最好。利用词嵌入的方式可以有效地从评论文本中提取到词语的信息(如某个词在文本中出现与否或是出现的频数)和词语的层次信息(主要是指上下文的信息),但是无法提取出词语中所表示情感的信息。因此将情感词典与词嵌入的方法融合可更全面地表达出评论中的信息。文献[5]利用基于情感词典和基于词嵌入的方式生成了一个混合向量,在英文和希腊文上进行实证研究,其混合向量的模型不仅有较高的精确度,并且计算时间也相对较少。文献[6]提出基于情感词向量的微博情感分类方法,在CBOW模型训练出来的初始词向量进行相应的情感倾向调整,通过机器学习的方法,利用情感文本特征对文本进行分类。
本文提出一种情感Senti模型,基于情感词典和语义规则提取出情感特征,通过与TF-IDF模型融合的方式来提高文本的分类效果,并在提取情感特征的过程中不考虑评论中的特有的产品属性,从而增强该模型的通用性。
文献[7]对网络评论情感分析关键技术进行归纳总结,主要分为3个方面的技术,即网络信息源选择技术、网络评论评级过滤技术和情感倾向性识别技术。情感方向识别技术主要有3种方法:1)利用传统机器学习算法对处理过的文本进行分类;2)基于词典的方法计算情感分数,判断文本的极性进而分辨文本的褒贬;3)前2种的方法整合,即运用两者整合的方法进行极性判断。
由于中文情感分析相对缺乏而国外的英文情感分析研究更为成熟,因此国内学者通过将中文翻译成英文的方法再利用有监督学习方法对文本进行分类,但是该方法需要克服翻译过程中跨领域词语具有不同含义的障碍。文献[8]构建一个利用多种机器学习算法进行多数投票的系统,以便侦察TripAdvisor上虚假的酒店负面评论。文献[9]提出利用机器学习算法包括朴素贝叶斯(NB)、最大熵分类(ME)和支持向量机(SVM)来解决情感分类问题,并运用n-grams模型和词性提取电影评论的特征。此后,大量利用机器学习方法进行研究的学者都将重点放在了特征设计上面[10]。文献[11]将研究重点放在了选取有效特征上,在总结前人的基础上引入了六大类特征,通过添加不同类型的特征对SVM分类器进行比较实验。文献[4]利用词嵌入的方式做中文的情感分类实证研究,并运用CNN算法进行分类。
文献[3]整合基本情感词典、程度副词词典、消极词词典、网络用语词词典、表情词词典和关系连接词词典等6种词典,同时制定了情感分数计算的规则,最后根据分数是否大于零,判断其积极还是消极(当分数为零时认为是中性)。文献[12]提出一种基于依存句法的跨语言细粒度情感分析算法,通过对中文文本进行依存句法分析判断词语间的依存关系,利用语义规则提取情感评价单元,并运用机器翻译的方法将中文翻译成英文,最后通过与HowNet英文情感词典进行匹配,进而判断提取的情感评价单元的情感极性。该方法与单语言(HowNet中文情感词典)的方法相比,分类效果更好。Turney[13]采用无监督的算法对文本进行情感分类,通过计算待判定的词与“excellent”和“poor”之间的互信息PMI,求得两者差值即为该词的情感分值。然后计算整个评论中所有短语的互信息差异的平均值即评论的情感分值,该值的正负和大小分别表示评论的情感极性和强弱,基于词典的方法的核心在于设计词典和规则[12]。
文献[14]采用在简单句上使用朴素贝叶斯算法,在复杂句使用新的情感判断规则的方法判断情感极性,并提出一种基于句子情感权重计算规则的句子合成算法,用于文本级文本处理。与只利用朴素贝叶斯算法(NB)相比,该方法在精确度(precision)、召回率(recall)和F值(F1-Score)上都有所提升。文献[15]在已有的模糊情感本体的基础上,把产品的特征、情感类程度词、否定词、修饰方法和标点等语义元素抽取出来进行相关标注,设计了相关的情感计算方法,并在大众点评网中采集上海婚纱摄影评论进行实验,证明了该方法的准确性和应用性。文献[16]整合了知网、台湾大学以及大连理工大学3个部分情感词典,通过输入法的词库,筛选出150个具有强烈情感色彩的新的网络词汇,从而形成了基础的情感词典。根据程度词和PMI算法,收集微博情感新词,确定该词的情感倾向,从而在微博领域建立情感词典。另外还考虑了微博表情符号词典、程度副词词典和否定词词典,按照语义规则进行情感计算以对情感进行分类。
文献[17]提出基于词典的机器学习分类方法,同时给出了智能分类的模型。通过选择主观性的词作为特征,利用支持向量机(SVM)和广泛使用的英文词典SentiWordNet(这里主要用于识别词性)来确定特征权重。智能分类的模型是指在十折验证上提出了新的验证方法来提高分类的效果,通过与多组最新实验方法的结果进行比较,分类效果更好。文献[5]利用情绪词典将文本转换成向量信息,并且同时考虑使用词袋模型(BOW),生成了基于词典的向量,在否定词的情况下提出了两种处理该向量的方法,包括反转法和重复法。在此基础上,加入word2vec模型,融合这些特征组成了混合向量。实验结果证明该混合向量的方法不仅有较高的精确度还可以节省时间。文献[18]在解决语句级别的情感分类问题上采用的是将词典信息融入到支持向量机分类器中的方法。在Unigrams特征词序列中插入包含在词典中的情感词的极性(positive或negative),再利用词袋模型将特征词序列转化为特征向量,核心思想是将情感信息融入到语句的特征向量中。另外,文献[19]利用基于情感特征的细颗粒度情感分析方法对中国产品评论分类,主要是通过句法分析提取相应特征,并与TF-IDF基准模型进行对比实验,其提出的模型在积极/消极评价中的精确率(precision)、召回率(recall)和F1-Score上都有所提升。
文献[20]将微博中的动词和形容词作为特征提取出来,然后采用层次结构方法对特征进行降维操作,基于表情符号计算特征极性值的方法被设计用于计算相关权重,最后借助SVM将文本分为了正面、负面和中性三类。文献[21]为提高文本卷积神经网络的输入文本信息质量,提出利用词性特征解决一词多义问题(传统词向量无法识别),再结合卷积神经网络模型进行分类,相比于传统文本卷积神经网络的方法,该方法分类效果更好。文献[22]利用Twitter自身的语言特性和相关的情感字典资源设计了相关的2类特征,同时利用卷积神经网络获取Twitter文本词向量,将这3类特征进行融合再利用SVM实现情感极性的分类,实验结果证明该方法有效地提高了情感分类效果。
本文提出的优化模型的主要思想是在TF-IDF模型上加入文本中的语义情感信息,主要分为2个步骤:1)通过语义规则生成包含评论情感语义信息的向量;2)融合TF-IDF模型组成混合向量,再放入分类器MLP中进行对比实验。由于TF-IDF模型只能传达词的出现与否以及在全部评论中该词的重要性的信息,并没有包含该评论中的情感的信息,因此,两者的融合可以使情感信息发挥出优化的效果。
本文采取的处理文本的方式是一种基于句子层面的特征提取,也可以理解为短文本的向量化。这里用标点符号作为划分处理的基础,一条评论被分为若干的句子,而每个句子由3个元素的列表组成并且每个列表具有其对应的权重。在文本的预处理阶段使用了结巴分词工具并且删除一些常用的停用词。
构建混合词典:选用的是知网(Hownet)情感词典和台湾大学简体中文情感极性词典(NTSUSD),其中HowNet词典包括程度级别词(一共有214个)和正/负向情感词。将HowNet词典中的正/负向情感词与NTUSD词典中的正/负向词进行合并去重,总共有正向情感词6 506个,负向情感词11 184个。
本节提出加权三元列表模型的结构和模型中元素取值的规则。加权三元列表(sentiList)的结构由下式表示:
sentiList=[adj,neg,pun]×adv×turn
公式中的元素是由量化后的情感词(考虑到这里的情感词大部分都是形容词,用英文缩写adj表示)、否定词(neg)以及标点符号(pun)组成,并且由量化后的程度词(adv)和转折词(turn)作为其列表的权重。这个模型的实现是通过python编程遍历迭代文本信息实现的,本文将这个模型简称为Senti模型。
具体说来,一句话中将产生多个加权三元列表,将其拼接起来后就形成了Senti模型(每一句话由一条列表组成)。而本文基准模型(TF-IDF)则是在语料库基础上的词频乘以逆文档数以后得到的一个大型矩阵,例如4 000条评论则生成的是4 000行的多维向量形成的矩阵,而每条评论再通过拼接的方式,与Senti模型融合,包括2种向量拼接方式,将Senti模型拼接到TF-IDF模型之前,称为Senti-TFIDF模型,将TF-IDF模型拼接到Senti模型之前,称为TFIDF-Senti模型。考虑到Senti模型中有了相关的权重,这里的拼接不再赋予权重,将2个拼接的模型视为同等重要的信息,并且方便直接与基准模型进行对比。与基准模型(TF-IDF)进行对比,本文Senti模型与基准模型融合可以起到优化预测的作用。
2.1.1 词语分析规则
词语分析规则如下:
1)形容词(adj)的取值规则:当句子中出现正向情感词时,列表中的第1个元素将被赋值为1。当句子中出现的是负向情感词时,赋值为-1。若该句中多次出现同样倾向的情感词时,采取累加的方式,若出现不同倾向的情感词,同样使用累加的方式(正负号会相抵消)进行处理,如果句子中没有出现情感词,则值为0。
2)程度副词(adv)的取值规则:程度副词根据其语气的强弱被分为6个级别(1~6是从弱到强),表1给出相应的示例及对应级别的得分。
表1 程度级别词示例及对应的分数
程度词(adv)作为权重,其量化公式(参考文献[17]中的平滑操作)如下:
其中,n指一条评论中被分成了n个句子,i代表第i个句子,part(i)指第i个句子中出现的程度副词对应的分数,all指所有句子中程度副词的分数总和。
3)否定词(neg)的取值规则:否定词出现则列表中的第2个元素标记为-1,若否定词出现2次则标记为1(这里认为双重否定为肯定),若未出现,则该元素为0。
2.1.2 句型分析规则
标点符号(pun)的取值规则:考虑到人们中文的使用习惯,当人们使用感叹号(!)时表示对物品的赞美和喜爱,使用疑问(?)时则表示对物品的质疑和不信任。因而在列表的第3个元素中加入该项,并且其初始化值为0,当出现感叹号是标记为1,出现疑问时标记为-1。
2.1.3 句间分析规则
转折关系(turn)的取值规则:考虑到句间的转折关系,接下来的句子将意味着完全相反的意思。因而当有转折词出现时,这里赋予-1的权重。
这里用多个循环语句从正向/负向情感词典(sentiList_pos/sentiList_neg)、否定词典(sentiList_Negation)、标点符号列表(punctuation_list)、转折词列表(sentiList_Turn)和程度副词字典(sentiList_Adv)中遍历每个句子中特征,不断更新三元模型中的值。最后将一条评论中的三元组列表全部拼接起来形成一个新的列表,表示该条完整的评论。
算法1情感特征提取算法
输入一个文本
输出表示文本的情感信息的列表
1.np_content= [],np_content(i) = [0,0,0];
2.A text is divided intonsentences,each sentence can be represented as content(i);
3.for j in content(i):
4.if j in sentiList_pos:
5.np_content(i)[0] = 1
6.if j in sentiList_neg:
7.np_content(i)[0] =-1
8.for j in content(i):
9.if j in sentiList_Negation:
10.np_content(i)[1] =-1
11.temp = j
12.for j in content(i):
13.if j in sentiList_Negation:
14.if j! = temp:
15.np_content(i)[1] = 1
16.for j in punctuation_list:
17.if i in sentiList_pun:
18.if i in [‘!’,‘!’]:
19.np_content(i)[2] = 1
20.if i in [‘?’,‘?’]:
21.np_content(i)[2] =-1
22.for i in sentiList_Turn:
23.if j in sentList_Turn:
24.np_content(i) = (-1)*np_content(i)
25.for j in sentiList_Adv:
26.if j in sentiList_Adv:
27.np_content(i) = np_content(i)*((1+sentiList_Adv[j])/(n +sentList_Adv[j]))
28.for i in range(n):np_content.extend(np_content(i))
本文选用经典的TF-IDF模型作为基准模型,根据其定义可知,此模型能提供文本中的词频信息。除此之外,还能提供评估评论中每个词语在所有评论(语料库)中的重要程度的信息。而三元列表模型表现的是文本中的情感信息,因此可以将2个模型通过拼接的方式整合在一起。当分类器获得更多信息时,分类效果将会更精确。本文采用2种拼接方式,分别为TFIDF-Senti和Senti-TFIDF。
本文实验用的数据(ChnSentiCorp)来源于由谭松波收集整理的覆盖了不同领域的用户评论。其中每个领域的评论数有4 000条,其中,2 000条正向评论,2 000条负向评论。本次实验将样本通过7∶3的比例分成训练集和测试集,如表2所示。
表2 实验数据基本资料
将原始的文本数据进行预处理,再把预处理后的文本放入不同的2种模型中生成2组矩阵。通过对2组矩阵数据的拼接生成提出的2种优化模型TFIDF-Senti和Senti-TFIDF。本文选用的多层感知机(Multi-Layer Perception,MLP)作为实验的分类器,最后得出评论的极性,实验流程如图1所示。
图1 本文融合模型实验流程
本文简要介绍模型评判标准,主要是通过准确率和F1值来判断模型的分类效果。准确度(accuracy)是指预测正确的比率,该指标能比较直观地表达出预测的效果如何。而F1值是一个综合了精确率(precision)和召回率(recall)的指标,计算公式如下:
从上述实验结果可以看出,通过本文Senti模型整合TF-IDF模型而产生的TFIDF-Senti和Senti-TFIDF(利用信息融合方法)2种模型,最终达到了优化预测的效果,实验结果如图2所示。
图2 2种优化模型与TF-IDF模型的F1值对比
Fig.2 Comparison ofF1 values between 2 optimization models and TF-IDF model
表3给出详细实验结果,从表3可以看出,Senti模型在这2组汉语语料库(携程酒店评论Ctrip_htl_ba_4000和当当书籍评论Dangdang_Book_4000)上的精确度和F1值都超过70%,说明Senti模型能够从大量文本中提取到有用的信息。并且考虑到实验中的文本信息来自酒店和书籍2个不同的领域,说明基于句子层面的粗颗粒模型方法具有较好的泛化性。通过与TF-IDF模型进行对比,整合后2种优化模型精确度更高,特别是前者TFIDF-Senti模型在前2组数据上均有超过一个百分点的提升,可以起到优化的作用。综上可知,情感模型Senti在处理评论数据时可有效地提取出情感信息,并能够在基于词语信息的TF-IDF模型上起到优化(提高超过一个百分点)的效果。
表3 MLP分类实验结果
本文通过建立加权三元列表模型提取文本中的情感信息,融合现有的TF-IDF模型并对其进行优化,利用情感词典和语义规则提取情感信息,生成相应的情感矩阵,并融合多种包含不同信息的模型以提高分类器的分类效果。实验结果表明,混合向量模型比单一的TF-IDF模型具有更好的分类效果。在本文的基础上加入包含词语含义信息的word2vec模型提高预测精度,或在扩展的情感词典中整合网络流行词,使用更加细化的情绪词典将情感词具体量化将是下一步的研究工作。