背景和现状
唯品会作为国内发展迅速的大型电商之一,在微博、微信、贴吧、app 应用市场等各大网络渠道上,每天会有大量关于唯品会的用户交流、评论、反馈等舆情信息产生。而这些舆情信息中,往往包含着对公司的各种建议、用户心声、体验反馈等有用信息。因此,收集并分析用户的评论反馈,对于企业了解用户的心声和需求、提升用户体验、提高运营效率等方面将有较大的帮助,同时也是产品制定需求的重要参考依据。不过,目前的用户反馈、评论收集、评论分析工作存在着如下主要问题:
各个渠道的用户反馈评论信息分散、琐碎,不利于收集,人工爬取评论的速度较慢,成本较高;
评论的数量很多且非结构化, 分类及语义分析依靠人工效率低下;
预警的速度较慢,出现问题无法及时预警,等到发现时,损失已造成;
无法对线上舆情形成长期有效的监控,可读性不好,用户体验差。
而互联网舆情监控系统可以很好地解决上述问题,它利用爬虫、搜索引擎、文本挖掘等技术,通过对网络上相关的信息自动采集处理、智能聚类分类、统计分析等,实现各方对自己相关网络舆情监督管理的需要,最终及时形成舆情分析报告、舆情预警等信息,为相关人员全面掌握舆情动态、了解用户心声、调整制定方针政策,提供分析依据。
总体介绍
目前,市面上有腾讯企鹅风讯、百度舆情、七麦数据等舆情监控系统,这些系统能对市面的上的主流应用 app,通过分布式爬虫抓取各大应用市场、主流论坛、微博等渠道的用户评论,并对爬取到的信息进行汇总、智能分类、报表输出等。这些舆情分析系统能简化运营、产品对用户口碑的收集工作,在提供专业的运营质量分析的同时,节省了项目人力。市面上的这些系统虽然能为我们提供一些分析和参考数据,但是也存在一定的局限性,如数据来源有限(一般只能提供微博、app 应用市场、论坛等渠道的用户评论信息)、无法实现定制化需求等,因此非常有必要开发属于唯品会自己的舆情监控系统,实现丰富的数据来源、各种定制化的功能需求等。
当前唯品会舆情系统评论数据订阅来源主要有各大 App 应用市场用户评论、微信公众号评论和唯品会内部的客服留言。在获取这三部分数据后,会做持久化存储,用于后期的文本挖掘分析,如图 1 所示。
系统会对获取的这些评论信息进行情感判定、文本分词、评论分类、词频分析等计算分析工作。舆情系统整体架构设计如图 2 所示,分为舆情采集、舆情分析、舆情应用三大模块。图 3 是我们已经上线的舆情系统,本文将着重介绍舆情分析模块中的几个重要功能模块。
系统架构
上面已经简单介绍过唯品会舆情系统的主要模块,围绕这些模块,我们实现了整个系统,其基本架构如图 4 所示,下面将详细介绍情感分析、文本分词、词频分析、分类分析四个核心系统功能模块的实现。
情感分析
传统的文本情感分类一般基于情感词典,它是对人的记忆和思维判断的简单的模拟,如图 5 所示。首先通过学习来记忆一些基本语料词汇,比如积极、消极和否定词语,这些基本词汇在人们的大脑中形成一个基本的语料库。然后,我们再对输入的语句进行拆分,看所记忆的词汇表中是否存在相应的词语,最后根据这些记忆中的词语类别来判断情感。
基于上述思路,我们设计了自己的基于词典的情感分析模块,主要如下:
1、情感词典设计
与传统方法不同的是,我们的情感词典分为三个部分:积极肯定情感语料库、消极否定情感语料库和干扰语料库,如图 6 所示。为了得到更加完整的情感词典,我们从网络上收集了若干个情感词典,并且对它们进行了去重整合和调整。对于收集而来的词典并非进行简单地整合,而是有针对性地对词典进行了去杂和更新,以达到尽可能高的准确率。比如,加入了针对我们电商行业相关的一些行业词汇,以增加准确率。此外,引入干扰语料库的目的是排除一些如“能不能”、“可不可以”等容易误判为积极肯定或者消极否定的词。
2、基本算法
基于情感词典的文本情感分类规则算法比较简单,它将每个情感词语赋予的一定的权重值:$w$ (权重值需要根据具体行业、业务等做调整),一般来说,积极肯定的词语赋予正数值,我们用:$w_{p}$ 表示,而消极否定的词赋予负数值我们用:$w_{n}$ 表示,并且情感权重值满足线性叠加原理。每条评论在剔除干扰词汇后,分别进行积极肯定和消极否定的权重计算。例如,评论中既包含积极肯定词汇也包含消极否定词汇,将评论命中的积极肯定的权重值线性叠加,得到该条评论的积极肯定权重值:
而将命中的消极否定的权重值线性叠加得到消极否定权重值:
极性综合判定将得到的积极权重值和消极权重值线性叠加,然后根据用户设定的评论极性权重阀值,最终判定评论的极性,整个情感判定逻辑如图 7 所示。
3、实现效果
基于上述架构,实现了舆情系统的情感分析模块,它会对每条评论信息自动进行极性的五级(极好评、好评、中评、差评、极差评)划分,并对应 5-1 分的评分。在评定完一定周期内所有评论的评分后,系统会计算出该周期内所有评论的综合平均分(1-5 分,对应一星到五星),类似于部分应用市场的五星等级评价。目前该模块主要针对应用市场的评论进行五级情感划分,如图 8 所示。通过情感划分,能看到用户对我们唯品会 app 的一个整体满意度情况。相比于人工筛选划分,能极大的降低人工筛选时间,减少工作量。
文本分词
一般来说,做文本挖掘首先要做的预处理就是分词。在英语中,英文单词天然的空格有助于计算机迅速识别单词间边界。而中文由于没有空格,让计算机颇为困惑,处理起来难度较大,因此中文分词就是一个需要专门去解决的问题了。
1、分词现状
目前现有的中文分词方法大致可分为三大类:基于字符串匹配的词典分词方法、基于理解的分词方法和基于统计的分词方法。比如,基于字符串匹配的正向最大匹配法、逆向最大匹配法,基于统计的 N-gram 模型思想等等。目前比较流行的中文分词工具有 jieba、SnowNLP、THULAC、HanLP 等等。
2、实现算法
我们舆情系统的文本分词采用的是基于词典的 N 最短路径算法。N 最短路径算法是中科院分词工具 NLPIR 进行分词用到的一个重要算法,张华平、刘群老师发表的论文《基于 N- 最短路径方法的中文词语粗分模型》中做了比较详细地介绍。该算法的基本思想就是给定一待处理中文字符串,然后根据词典,找出词典中所有可能的词,构造出字串的一个有向无环图,也称为 DAG(Directed Acyclic Graph),算出从开始到结束所有路径中最短的前 N 条路径。每个可能分词对应 DAG 的一条边,每条边有一定的权重值,表示该词出现的概率。最简单的做法是采用词频作为权值, 也可以采用 TF-IDF 值作为权值提高对低频词的分词准确度。因此,分词问题转化成了求 DAG 中起点到终点的最短路径问题。
以“同事说明天下午休假”为例,按照人们的理解,我们一般能找到“同事 / 说 / 明天 / 下午 / 休假”和“同事 / 说明 / 天下 / 午休 / 假”两种分词方式,如图 9 所示。那么计算机如何实现这个想法呢?首先,它将字串分为单个的字,每个字用图中相邻的两个结点表示,故对于长度为 n 的字串,需要 n+1 个结点。两节点间若有边,则表示两节点间所包含的所有结点构成的词,比如图中结点 3、4、5 构成词“明天”。通过跟已有词典比较,构造出有向无环图,图构造出来后,接下来就要针对图计算各种路径中的最短路径。N- 最短路径是基于 Dijkstra 算法的一种简单扩展,它在每个结点处记录了 N 个最短路径值与该结点的前驱。关于这个算法的描述,在网上、教科书中都有很多详细介绍,这里就不再赘述了。
此外,在现实情况中,每条边的权值不可能都设为 1,因为否则随着字串长度 n 和最短路径 N 的增大,长度相同的路径数将会急剧增加,并且这样的分法也不够准确。为了解决这个问题,我们需要通过某种策略为有向图的边赋权重,如前文中所述,其实就是该词出现的可能性,也即该词出现的概率。那这个概率该如何计算呢?假设我们输入的字串为 C,可能划分的词串为:$w_{i}$,其中 i=1,2,…,m,表示对字串 C 有 m 种可能的划分。因此,我们要求的就是概率:$P(w_{i}|C)$ 最大的 N 个,然后根据贝叶斯定理,以及训练语料库,即可得出概率。当然,这个概率也可以通过一些开源的训练语料库直接得到。进而可以求出整个有向图的路径,最终我们可以得到 N 种字串划分结果,从而找出路径最短的分词划分。文本分词结果是我们系统中其他模块的基础,如词频分析等。
词频分析
词频分析模块是唯品会舆情监控系统的重要组成部分,它是基于上面介绍的文本分词的结果进行的分析,后面将介绍词频的基本算法和实现。
1、基本概念
首先,我们先介绍几个概念——词频和逆向文件频率。词频 (Term Frequency, TF) 指的是某一个给定的词语在该文件中出现的次数,这个数字通常会被归一化 (一般是词频除以文章总词数), 以防止它偏向长的文件。提到 TF,必然需要了解逆向文件频率 (Inverse Document Frequency,IDF),它的主要思想是:如果包含词条 w 的文档越少, IDF 越大,则说明该词条 w 具有很好的类别区分能力。某一特定词语的 IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。而他们的组合 TF-IDF 是一种统计方法,用以评估某个词条对于一个文件集或一个语料库中的其中一份文件的重要程度。TF-IDF 的含义总结就是, 一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该篇文章。因此,TF-IDF 倾向于过滤掉常见的词语,保留重要的词语。关于 TF-IDF 的算法有很多资料,这里就不再详细说明。
2、实现算法
唯品会舆情系统的词频算法也是基于上述 TF-IDF 算法思想,并进行了改进以满足我们系统自身需求。对用户评论的词频分析,是希望分析出在不同周期内(如一周、一个月),哪些词条在当前周期相对于上个周期有明显地上升,而这些明显上升的关键词条往往是用户集中反馈的一些问题或者关注的热点,具有较高的挖掘价值。当然,关键词条的上升判断,不能简单地通过某个词条数目绝对数量的多少,或者比上个周期有所增加就判定为热点词汇。因为每个周期内,分词词条样本数量是不同的,简单地看某个词的绝对数量并不能说明问题,就如 TF-IDF 的算法所述,需要过滤掉常见的词语,保留重要的词语。
图 10 为我们词频分析的算法逻辑实现图,它首先根据分词结果分别计算当前周期内和上个周期内每个分词 W 的占比,其样本值为各自周期内的所有分词词条数目,词条总数在当前周期表示为:$NP_{now}$,上个周期表示为:$NP_{last}$,因此当前周期和上个周期内每个分词的占比可以分别用:
和
表示,其中 i=1,2,3,…,N,j=1,2,3,…,M,这里 N 和 M 分别为当前周期和上个周期内所有分词的个数。
随后, 对两个周期内的每个分词的占比 $P_{i}$ 和 $P_{j}$ 分别做排序,每个周期中分别选取其中占比最大的 n(n 可以根据自身情况设定,如 100、200、500 等)个词条,将筛选出来的词条和对应占比表示为 $(W_{i},P_{i}){x}$ 和 $(W{j},P_{j})_{y}$,其中 x,y=1,2,3,…,n。
将不同周期内的前 n 个词条占比 $(W_{i},P_{i}){x}$ 和 $(W{j},P_{j})_{y}$ 采用差分算法,计算出当前周期中每个分词占比值相对于上个周期提升的幅度,并按照从大到小排列,这样我们就能找出当前周期内热度值最高,并且相对于上个周期有明显提升的关键词条。
3、实现效果
图 11 为用户留言反馈计算得到的最终词频结果示例。此外,词频分析会按照用户设定的不同评论分类的维度来分别进行计算,这样能找出各个分类中的一些热点词汇,为及时发现热点问题、用户敏感问题、线上 Bug 等提供参考依据。如图 11,切换右边已设置的分类,我们能查看对应的词频分析结果。此外,点击分词词条对应的柱状图,能查看词条对应的具体评论信息,方便用户查询和定位问题,如图 12 所示。目前,系统会对来自于 App 应用市场和客服留言的评论做词频分析,并且通过词频分析,我们发现了如 App 闪退问题、会员俱乐部无法进入、在线客服打不开等部分线上 Bug。
分类分析
对用户评论信息按照设定的分类进行归类,能方便使用者针对不同方面需求进行查看及相关信息统计。在评论信息量较大的时候,人工分类虽然比较精准,但是效率非常低下,因此我们需要对评论自动进行归类,这样能极大地降低人工分类筛选成本。
1、分类器现状
目前,中文文本分类常用的分类器包括:朴素贝叶斯、决策树、深度学习、人工神经网络、KNN、SVM、Adaboosting、Rocchio 算法、LDA 模型等等。这些分类器有各自的优缺点,比如人工神经网络,其优点是分类的准确度高、并行分布处理能力强、分布存储及学习能力强,以及对噪声神经有较强的鲁棒性和容错能力等,但它也有自己的缺点,比如需要大量的参数,如网络拓扑结构、权值和阈值的初始值,学习时间过长,甚至可能达不到学习的目的等。
2、实现逻辑
由于我们电商产品的一些特点,用户评论反馈的信息一般集中在选购流程、支付、商品质量、物流、会员权益、营销活动等几个相对固定的大类,其分类相对简单。因此,考虑自身产品的特点、系统复杂度以及性能等各种因素影响,唯品会舆情系统并未采用上述分类算法,而是采用较为简单的自研算法。
其算法逻辑如图 13 所示,采用分类关键词 (k) 设定及关键词权重 $w_{k}$ 计算的方法来对评论进行每个分类的权重计算,得到该条评论在某个分类命中的所有关键词权重和:
其中 (i=0,…,n,j=0,…,m,这里 n 为评论命中某个分类的关键词数量,m 为设置的分类数量),然后将每个分类的权重和:
排序,权重和最大的分类:
即为该评论的最终分类。此种算法虽比较简单,但是对于大量非结构化评论,是很有效的分类方法,其分类准确性比较高,能达到 90% 以上。分类关键词的设定及管理可以通过系统提供的分类管理和关键词管理两个功能模块进行管理。图 14 为用户评论按照分类统计的趋势结果,其词频分析结果也是按照分类维度来统计,如前面的图 11 所示。
此外,用户评论详情查询也支持按照设定的分类来查看,方便用户按照感兴趣的分类查询、搜索相关评论详情,如图 15 所示。
实践效果
系统自上线以来已有来自产品、开发、测试、金融等各个部门将近 300 位的公司内部用户,为公司各部门了解用户的心声和需求、提升用户体验、制定产品计划、发现线上问题等方面提供了一定的参考依据。在线上质量监控方面,舆情系统通过词频分析、分类分析等功能发现了 app 兼容问题、会员俱乐部无法进入、在线客服打不开、品牌收藏没有展示等约几十个各种线上问题,为发现并及时修复问题提供了重要参考,改善了用户体验、减少了部分经济损失。
计划展望
如前所述,舆情系统通过词频分析发现的线上问题和用户热点问题较多。因此,在后面的迭代计划中会增加词频预警功能,通过邮件等渠道向用户提供实时的词频分析结果,供巡检人员发现和查询需要及时处理的热点、关键问题。此外,系统用户也可以根据自身的需要设置并订阅感兴趣的词频关键词,在词频分析结果中有匹配时,及时向相关用户发送预警邮件,做到问题的及时发现和处理。