摘 要: 设计了一个基于API技术的淘宝商品评价分类系统。利用淘宝开放平台提供的API接口获取商品评价信息,然后将这些评价信息按照质量、物流以及服务态度等属性分别分出好评和差评,通过对典型操作实例的理论分析和实验结果,验证了该方法的有效性。
淘宝开放平台是一个综合性、商业性的开放平台[1]。TOP发布的API涵盖了商品、产品、类目、用户、交易、评价和物流等不同专业领域的开放接口。使用这些预先定义好的函数,可以更加方便、快捷地调用这些接口来完成一些有关处理工作。
淘宝网作为国内最大的电商网站,每月每天甚至每小时的交易量都是相当大的,而作为买家在淘宝网上购买商品之后,无论对商品满意与否,都可以通过淘宝网提供的商品评价系统对所购买的商品作出自己的评价,这就产生了大量的评价信息。这些评价对今后购买同种商品的买家可以产生重要的指导作用;评价信息里反映出的买家对商品比较关注的一些问题也为卖家不断改进商品提供了方向。
但是目前淘宝评价系统只是单纯地将买家的评价罗列在产品信息页面上,这些评价包含了买家对该商品在做工、款式、服务态度、发货速度和物流速度等相关评价属性的信息反馈,这对想查看该商品某种评价属性信息的买家和卖家带来了很大的困难。有些商品评价信息较少,可以通过逐条查看的方法来获取需要的信息。但是对于有几千条甚至上万条评价信息的商品来说,逐条查看必定会耗费大量的精力,也无法取得较好的效果。同时,淘宝提供的好评、中评和差评都是由买家人工选择的。有时候买家对商品并不很满意,但是由于卖家服务态度较好等原因也给出了好评;而有些差评则是因为卖家服务态度不好或者物流送货不及时等原因,但是商品本身质量并没有问题,这就对信息获取造成了误差。针对上面的问题设计并实现的淘宝商品评价属性分类系统,利用淘宝开放平台提供的API技术获取相关评价信息,然后按质量、物流和服务这3项关注度最高的属性将评价信息进行分类,并对每种属性按评价内容情感倾向度分别判别出好评和差评。本系统实现了买家在淘宝网意向商品的大量评价中筛选出自己希望了解的关于商品某属性的评价信息,同时也帮助卖家了解在售商品各个属性的买家反馈信息,更好地改进商品。
1 相关工作
本系统通过评价API接口获取商品评价信息作为基本的数据来源。系统中的商品评价主要分为两类。(1)按照商品属性进行分类。商品的属性特征都是由它的特征词来表现的,主要是能够定义属性的名词或者名词短语。本系统将评价信息按照质量、服务、物流3个属性进行分类。(2)按照情感倾向度进行分类。本系统提取评价信息中的情感词并按照一定规则组成短语模型与事先建立好的短语模型情感倾向库进行匹配,开发了一种计算情感倾向度的算法,按照此算法将商品的每个属性都分为了好评和差评。
2 系统的具体设计
2.1 评价API获取评价内容
该模块主要是获取评价文本和文本转存两个功能。使用API要先创建一个ITopClient对象,向接口地址http://gw.api.taobao.com/router/rest发起连接请求,请求成功后,建立TraderatesGetRequest评价文本查询请求对象,设置请求的字段和参数,再建立TraderatesGetResponse对象接收返回的数据,把获得评价文本内容保存到文本文件。格式是Json字符串。
2.2 建立商品属性特征词库
商品特征词的抽取主要有分词标注和按规则抽取特征词两个步骤。
(1)要抽取特征词,必须要用分词工具先把句子分成词语,然后对词性进行标注,才能分析每个词语的意义。使用SHARPICTCLAS分词工具分词标注,例如:衣服/n很/d/a!/w很/d合身/a!/w店家/n服务/vn态度/n也/d很/d好/a,/w虽然/c中间/f出/v了/ul点/q小/a插曲/n,/w但是/c很/d快/a都/d给/v解决/v了/y。/w店家/n工作/vn相当/d给/p力/n。/w快递/vn也/d很/d给/p力/n!/w赞/vg一个/m!/w
(2)分词标注之后,还要过滤掉一些没有意义或者不是想要的词。首先就是根据词性过滤。例如店家/n服务/vn态度/n也/d很/d好/a,这个是标注完毕的句子,看到“服务态度”这个名词短语其实就是商品服务的一个特征,也可以简化成“态度”。前面提过,只有名词或名词短语才能表示商品的属性特征,所以可以把名词短语以外的非名词词语过滤掉,上面的例子过滤后就是“店家/n服务/vn态度/n”,其他词性就不要了。然后再根据手工收集的一些无意义词文件,过滤掉无意义词,最后去除词性标注,合并同类项,再利用Apriori算法中的频繁项定义,过滤掉噪音词,属性特征词库就建立了[2]。将需要分类的评价信息分词标注之后与属性特征词库进行匹配,实现按照商品评价属性分类。
2.3 基于构造短语模型的情感分类方法设计
文本中能表达情感倾向的词语组成的短语模型是判断文本情感倾向的基础,文本最终的情感倾向和短语模型所表达出的情感倾向是一致的。本文的情感分类方法包括两部分。(1)建立情感词词库和短语模型库,其中情感词词库就是抽取的有情感倾向的词,短语库是从训练文本中选取的比较有代表性的短语模型,计算它们的情感倾向值,组成一个短语模型的匹配库[3]。(2)进行情感分类,对一个新文本进行分析,得出其情感倾向。
2.3.1 建立情感词词库
一篇文本中有很多词语都能表达情感,需要知道哪几个词的情感倾向性最强。现在已经有了不少成熟的提取情感词的算法,由于本系统是针对淘宝网这个特定领域的评价信息,这些评价信息情感词的精确度比较高而且量也不太大,所以采用人工选取的方法从200篇好评样本和200篇差评样本中人为地选出情感词[4],并与中国知网情感词库共同组成情感词库。
2.3.2 建立短语模型
在分析文本时,仅仅依靠情感词的情感倾向性来判断文本的情感倾向性是不准确的,需要找出情感词对应的评价对象,把情感词和评价对象组成情感模型,然后把这些情感模型作为判断文本情感倾向的基本元素[5]。
首先找出样本中出现的情感模型,同时找出与之相关的连词、副词、否定词,然后把他们组合成短语模型,利用这些短语模型去分析情感倾向。基于短语模型的情感分类的方法目前有很多,本系统选用了如表1的短语模型[2,6]。
抽取的短语模型不是一般语法意义上的短语,而是从文本中选取能表达情感的词按照短语模型规则组合成的。
把从样本中选出的情感词以及相关的连词、副词、否定词和评价对象进行二次标注[3,7],约定:
(1)在好评情感词前面加注“@!”;
(2)在差评情感词前面加注“@?”;
(3)在连词、代词前面加注“@”;
(4)在评价对象前面标注“@*”;
(5)在否定词前面标注“@~”。
根据表1所示的短语模型,用以下选取短语模型的算法。
(1)寻找标注为“@*”的短语;
(2)如果没有找到标注为“@*”的短语,则跳到(6);
(3)如果找到标注为“@*”的短语,则寻找标注为“@!”、“@?”的短语;
(4)如果没有找到标注为“@!”、“@?”的短语,则跳到(6);
(5)取出标注为“@”的短语,加上(2)和(3)中找到的短语,把这些短语按原来的顺序组成一个短语模型;
(6)处理下一个训练语料,重新从(1)开始执行,循环。
2.3.3 计算短语模型情感倾向
通过上面介绍的方法,已经建好了短语模型,然而每个短语模型表达的情感倾向以及强度是不尽相同的。人工将倾向于好评的短语模型赋值1,倾向于差评的短语模型赋值-1的话,最后的分析结果误差明显比较大,无法得到比较好的效果。
本文采用的短语模型情感倾向值的计算方法为统计一个短语模型在好评情感短语模型中出现的次数(记为Gi)和在差评情感短语模型中出现的次数(记为Bi),然后计算Gi与Bi的比值,具体计算公式如式(1)所示:
V=log2(Gi/Bi) Gi≠0andBi≠0 log2((Gi+1)/Bi+1)) Gi=0orBi=0 (1)
由计算出来的表2和公式(1)可知:
(1)当0<Gi<Bi时,V<0,该短语模型表达的是差评的情感倾向;
(2)当Gi>Bi>0时,V>0,该短语模型表达的是好评的情感倾向;
(3)当Gi=Bi时,V=0,无法确定该短语模型的情感倾向,需要根据实际情况进行判断;
(4)当Gi=0,Bi≠0时,V<0,该短语模型表达的是差评的情感倾向;
(5)当Gi≠0,Bi=0时,V>0,该短语模型表达的是好评的情感倾向。
2.3.4 计算评价文本情感倾向值
有了短语模型的情感倾向值,就可以分析评价文本的情感倾向了。评价文本都是由一个个句子组成,而句子可以分词标注后组成短语模型,所以评价文本的情感倾向值是由其分解出的短语模型情感倾向值加成得到的。具体公式如下:
S=Vi(i≥0)(2)
(1)如果S>0,判定这条评价文本为好评;
(2)如果S<0,判定这条评价文本为差评;
(3)如果S=0,判定这条评价文本为中评。
3 实验结果分析
通过淘宝评价API接口获取某女装的好评、差评各300条评价作为测试的数据来源如表3所示。
经过简单过滤,过滤掉一些无意义的评价,如“好!”,“good”,“……”等无意义的评价,然后手工分别筛选出224条好评和224条差评,选取数目相等,是为了比较直观。将获取的评价数据导入系统中,首先进行分词标注:
0衣服/n很/d好/a!/w很/d合身/a!/w店家/n服务/vn态度/n也/d很/d好/a,/w<br/>/nx虽然/c中间/f出/v了/ul点/q小/a插曲/n,/w但是/c很/d快/a都/d给/v解决/v了/y。/w<br/>/nx店家/n工作/vn相当/d给/p力/n。/w<br/>/nx快递/vn也/d很/d给/p力/n!/w赞/vg一个/m!/w<br/>/nx
经过初步的分词标注,整个评价内容结构已经清晰,然后按照上文中的约定对评价内容进行二次标注。标注结果如下:
衣服/@*n很/d好/@!a。很/d合身/@!a。店家/@*n服务/@*vn态度/@*n也/d很/d好/@!a。<br/>/nx虽然/@c中间/f出/v了/ul点/q小/@?a插曲/@*n。但是/@c很/d快/@!a都/d给/v解决/v了/y。<br/>/nx店家/@*n工作/@*vn相当/@!d给/p力/@*n。<br/>/nx快递/@*vn也/d很/d给/p力/@*n。赞/vg一个/m。<br/>/nx。
根据“二次标注”结果,抽取评价文本的每个句子的短语模型,与短语模型情感倾向库对比,匹配极性情感值,将每个短语模型的情感值相加,就是整个文本的情感值。同时还要对照分类特征词,如果评价文本中句子含有上述特征词的,就把这个文本划分到对应的分类,做上标记,同时,这个句子的情感倾向值也是这个文本在这个分类上的情感倾向表示。
表4所示是本项目在实践过程中的实验结果。
经过人工排除异类,尽可能保证测试文本类别正确的情况下,看到差评的查准率有83.9%,要比好评的查准率82.6%高,而且中评数量上的判断结果(28>17)也高。这是由于在淘宝上顾客表达厌恶和愤怒的情感要更明确一些,有些顾客有不满意的地方,但是可能还是给予好评,只是表达勉强,所以好的情感表达上就会模糊,相比之下,差评更容易判断。
通过表4可以看出,两类评价由情感倾向值累加得出的情感倾向值的方法的查准率都达到80%以上,说明采用情感倾向值累加的方法效果还不错,在抽取少量样本的情况下,能比较准确细致地判断文本的真实情感倾向。但是效果还不够好,如何选取准确的评价对象,抽取真正的短语模型,使方法结果逼近真实将是继续研究的方向。
参考文献
[1] 孙颖.淘宝开放平台[J].程序员,2009(8):43-45.
[2] TURNEY P D. Thumbs up or thumbs down: semantic orientation applied to unsupervised classification of reviews[C]. Proceedings of the 40th Annual Meeting on Association for Computational Linguistics, Association for Computational Linguistics, 2002.
[3] TURNEY P D, LITTMAN M L. Measuring praise and criticism: Inference of semantic orientation from association[J]. ACM Transactions on Information Systems(TOIS), 2003, 21(4): 315-346.
[4] XU K, LIAO S S, LI J, et al. Mining comparative opinions from customer reviews for competitive intelligence[J]. Decision support systems, 2011,50(4):743-754.
[5] LIU B. Opinion mining and sentiment analysis[M]. Web Data Mining. Springer Berlin Heidelberg, 2011.
[6] 方美玉,郑小林,陈德人,等.商品评论聚焦爬虫算法设计与实现[J].吉林大学学报(工学版),2012(51):1.
[7] 陈涛,徐睿峰,吴明芬,等.一种基于情感句模的文本情感分类方法[J].中文信息学报,2013,27(5):67-74.
[8] 李纲,王忠义,寇广增.情感分类中情感词的情感倾向度的计算方法研究[J].情报学报,2011,30(3):292-298.
[9] LI S S, HUANG C R, ZONG C Q. Multi-domain sentiment classification with classifier combination[J]. Journal of Computer Science and Technology, 2011,26(1):25-33.