基于情感倾向的书评自动分类张朝阳摘要商品评论的自动分类在电子商务中有重要的应用价值。首先对图书评论语料库进行未了登录词识别。然后以《知网》情感词为种子词汇,提出了一种基于条件随机场的Bootstrapping情感词挖掘算法,并利用互信息将这些情感词分为褒义和贬义。根据句子中包含正面情感词和负面情感词的数目,同时考虑否定副词和转折连词的影响,将图书评论自动分为好评和差评。对从电商网站上随机爬取的2026条书评做自动分类,平均正确率达81.8%,平均召回率达81.1%,说明了算法的有效性。关键词情感挖掘书评分类条件随机场AUTOMATICCLASSIFICATIONOFBOOKREVIEWSBASEDONEMOTIONALTENDENCIESZhangChaoyangAbstractAutomaticclassificationofproductreviewshasgreatapplicationvalueine-commerce.Firstly,unknownwordswererecognizedfromcorpus.WithHowNetemotionalwordsasseedvocabulary,abootstrappingemotionalwordsminingalgorithmbasedonConditionalRandomFieldsisproposed.Emotionalwordsweredividedintopraiseandpoorinthelightofmutualinformation.Accordingtothenumberofpositiveandnegativeemotionalwordsinasentence,meanwhiletakingintoaccounttheeffectsofnegativeadverbsandconjunctions,bookreviewswereautomaticallydividedintogoodandbadbasis.Classificationexperimentson2026bookreviewscrawledfrome-commercesiteprovedtheeffectivenessofthisalgorithmwitharesultof81.8%accuracyand81.1%recall.KeywordsEmotionalminingBookreviewclassificationConditionalrandomfields0引言商品评论是电子商务信任机制的重要组成部分,目前国内的电商网站都会将评论分为好评与差评以方便用户浏览,然而它们划分的依据仅仅是用户给商品评的星级,这在有些情况下是不准确的,比如京东商城上有一条书评是“新书,物流给力,还没看内容,不能妄评”,根据评论的内容来看用户表达的正面情感要多一些,但由于只评了一颗星所以京东把这条书评划入了“不喜欢”。本文挖掘图书评论中隐含的情感,自动将其分为好评或差评。按情感倾向对商品评论进行分类时一般可使用情感词作为特征项对文本进行表示,通过相似度比较将文本进行归类。周德友[1]研究了基于HowNet的情感词构建。马渊[2]在计算语义相似度时考虑了义原深度对语义相似度性能的影响,并使用经验权值系数对语义相似度算法进行改造。闻彬等[3]重新定义概念的情感相似度,对程度副词进行精细的划分并赋予不同的权值,同时考虑了否定副词对语义理解的影响。韩忠明等[4]则进一步考虑了转折和递进连词对语义理解的影响。李荣军[5]使用多分类器融合框架检测句子倾向,并引入自适应算法以提高分类精度。文能[6]在对评论进行倾向性分析之前先构建特定商品领域构的本体,详细识别评论的对象。本文根据图书评论中包含正负面情感词的多少,同时考虑否定副词和转折连词的影响,将评论分为好评和差评。这里的重点工作在于搜集尽量完备的情感词词库,本文提出一种基于条件随机场的Bootstrapping方法对情感词进行识别标记。在此之前我们先对书评语料中的未登录词进行了识别,因为未登录词中也可能包含情感词。1条件随机场条件随机场(ConditionalRandomFields,CRF)最早由Lafferty等人于2001年提出[7],是一种用于标记的统计方法。CRF采用了一阶链式无向图结构,如图1所示,12(,,,)Txxx是观察序列,12(,,,)Tyyy是标签序列,X是全局条件,并且不对X作任何假设。Y1YTYT-1Y3Y2X=X1X2…XT…图1CRF的链式无向图结构在给定观察序列X的情况下,标签序列Y的条件概率为:11(|)exp((,,,)()(,,))jjiiijjjiijpyxtyyxiZxusyxi(1)其中1(,,,)jiityyxi为i-1到i时刻的状态转移特征函数,(,,)jisyxi为i时刻的状态特征函数,j与ju是由训练样本得到的特征函数权重,()Zx是归一化因子。为了统一状态转移函数和状态函数的表达形式,我们把状态函数写为:1(,,)(,,,)jijiisyxisyyxi(2)这样我们用1(,,,)jiifyyxi统一地表示状态转移函数1(,,,)jiityyxi和状态函数1(,,,)jiisyyxi。这里1(,,,)jiifyyxi是一个布尔函数,取值只能是0或1。令11(,)(,,,)TjjiiiFyxfyyxi(3)则得到条件随机场的最简模型表示:1(|)exp((,))()jjjpyxFyxZx(4)CRF++是CRF算法的开源实现,在使用CRF++时我们可以在一个名为“template”的文件中自由地指定特征函数,这个模板文件每行的内容形如:U01:%x[-2,0]/%x[-1,0]/%x[0,0]“U01”是一种模板的名称,名称编号可以任意取,真正有用的是冒号后面的部分,“%x[num1,num2]”中第一个数字代表相对于当前行的第几行,错误!未找到引用源。代表当前行,num1=-1代表当前行的前一行,num1=1代表当前行的后一行,依此类推。第二个数字代表列,num2=0表示第一列,num2=1表示第二列。2未登录词识别本节采用SCWS对两千多条书评进行分词,SCWS是一个主要基于词典并加入了一些专有名称、人名、地名、数字年代等规则集的分词系统,用户可以向它的词典中添加新的条目。如今网络新词快速涌现,而且其中有些词就是表示情感或评价的词语,比如“给力”、“超赞”等,为了搜集更加全面的情感词先要对未登录词进行识别。中文分词可以看成是一个对汉字进行标记的过程,如果一个汉字位于一个词语的首部则标记为B,位于尾部则标记为E,中间位置一律标记为M,如果一个汉字单独成为一个词则标记为I。下面举一个例子。他/I是/I一/B个/E和/B蔼/M可/M亲/E的/I人/I我们先利用SCWS分词系统对所有书评进行分词,并标记上BMEI标签,以此作为CRF++的训练语料。再利用CRF++对所有书评进行分词,对比它和SCWS的分词结果就可以找到没有被包含在SCWS词典中的新词。我们认为一个汉字的标签跟它本身以及它前面的两个汉字都有关系,因此在使用CRF++进行分词时我们设置template文件的内容如下:U01:%x[0,0]U02:%x[-1,0]/%x[0,0]U03:%x[-2,0]/%x[-1,0]/%x[0,0]CRF识别的词语中难免包含一些非法词,对识别出的所有新词我们统计它在原始书评语料库中出现的频率,如果频率小于3,则认为该词的出现是一种偶然现象,将其剔除。算法最终发现了50多条新词,经过人工去伪后得到的新词如表1所示。表1CRF识别的新词地沟油、蛋疼、韩寒、给力、缺页、一套、力挺、扯蛋、网购、看懂、看不懂、用不上、一本、虐心、装逼、超赞3Bootstrapping法挖掘情感词本文以《知网》情感词为种子词汇,提出了一种基于条件随机场的Bootstrapping方法来识别书评领域的情感词,算法的具体流程如图2所示。Bootstrapping是一种常见的半监督学习方法,它以小部分有标注的数据作为训练集,对无标注数据进行分类,将置信度高的分类结果加入到训练集中,如此往复地进行训练和分类。陈文良等使用Bootstrapping方法进行文本分类[8],Riloff等使用该方法识别主观名词[9]。《知网》情感词分词文本种子情感词训练文本置信度高的情感词新情感词情感词总和正面和负面情感词去除未在语料库中出现的项按EO模板进行标记加入CRF挖掘设定IG阈值进行过滤加上已有的情感词按MI-max进行划分图2基于CRF的Bootstrapping情感词识别流程图《知网》中的情感词(以及评价词)太过宽泛,总计8900多条,它并不是专门针对某一个特定主题的,为了避免过多不相关的情感词对书评分类的干扰,本文首先把未出现在书评语料中的项删除掉,最后总共只剩下527项。使用SCWS对语料进行分词,并显示词性,根据上一步得到的种子词汇,将书评中的情感词标记为E,非情感词标记为O。将文件内容组织成CRF++要求的格式,第一列是词语,第二列是词性,第三列表示是否为情感词,形如:实在dO很dO划算aE一个词是否为情感最重要的跟这个词本身有关系,但仅凭这一条CRF根本学习不到新的情感词。我们观察到在一个情感词前后出现的词以及这些词的词性会呈现一定的特征,比如情感词前面经常会出现“很”这种程序副词,又比如情感词的后面经常会有“书”这样的名词,所以本文在使用CRF++时设定的模板文件内容为:U01:%x[0,0]U02:%x[-1,0]/%x[0,0]U03:%x[-1,1]/%x[0,1]U04:%x[-2,0]/%x[-1,0]/%x[0,0]U05:%x[-2,1]/%x[-1,1]/%x[0,1]U06:%x[-3,0]/%x[-2,0]/%x[-1,0]/%x[0,0]U07:%x[-3,1]/%x[-2,1]/%x[-1,1]/%x[0,1]U08:%x[0,0]/%x[1,0]U09:%x[0,1]/%x[1,1]CRF经过学习后标记为E的词汇并非全部都是情感词,我们设定信息增益(InformationGain,IG)阈值对非情感词进行过滤。约定Ci表示评论的类别,i=1代表好评,i=2代表差评,p(Ci)是在训练语料库中类别Ci所占的比重,p(W)是包含词W的书评占全部书评的比重,p(Ci|W)表示包含词W的评论中属于类别Ci的评论所占的比重,W表示W没有出现。词汇W的信息增益按公式(5)计算。221121()()log()()(|)log(|)()(|)log(|)iiiiiiiiiIGWpCpCpWpCWpCWpWpCWpCW(5)从文本分类的角度看,一个词如果是情感词,那么它对区分好评和差评应该有比较大的贡献度,其信息增益就应该比较大,所以我们设定一个信息增益的阈值,低于该阈值的词语过滤掉,剩下的情感词认为其置信度比较高,加入到原种子词汇中,进入下一次的Bootstrapping迭代。当没有新的高置信度的情感词发现时,Bootstrapping迭代退出,此时要把所有情感词分为正面和负面。对于每一个词分别计算它和好评的互信息(MutualInformation,MI)以及和差评的互信息,如果和好评的互信息较高就认为该词为正面词汇,否则为负面词汇。词W和类别Ci的互信息由式(6)定义。(|)(,)log()iiipCWMIWCpC(6)由于情感词的收集对句子情感极性的判别准确度影响非常大,所以最后人工对识别出的正负面词汇进行了检查。此时人工检查的工作量是很小的,新发现的情感词总共有400多个。人工筛选之后的正面情感词有148个(部分词汇见表2),负面词有136个(部分词汇见表3)。表2新发现的部分正面情感词万事通、上心、上涨、不朽、专业、严密、丰功伟业、丰富、为尊者讳、给力、主角、也好、了得、享受、价廉物美、价格便宜、伟人、促销、再接再厉、凄美、出乎意料、出口成章、出奇、划