杨恒 颜宏文
摘 要:提出了基于深度玻尔兹曼机的电力投诉工单识别分类模型。首先对投诉工单数据进行数据清洗,对处理后的数据使用结巴分词算法进行分词并制作字典,再使用词袋模型对所分词向量化处理提取文本特征。进一步地,通过TF-IDF算法找出关键词以及余弦相似度计算训练、测试文档间的相似度;最后使用深度玻尔兹曼机对投诉工单进行分类。实验证明,分类的准确度达到80%,有效地缓解电力部门的工作压力,提高工作效率。
关键字:投诉;TF-IDF;DBM;文本分类;
中图分类号:TP391.1 文献标识码:A
Application Research on Classification of Power
Complaint Work Order Based on DBM
YANG Heng?,YAN Hong-wen
(School of Computer and Communication Engineering,Changsha University of Science
& Technology,Changsha,Hunan 410114,China)
Abstract:A classification model based on the deep Boltzmann machines for power complaint work order identification is proposed. Firstly,the data of the complaint work order data is cleaned and use the Jieba algorithm to segment the processed data,and create a dictionary. Then the BoW model is used to extract the text feature from the segmentation vectorization process. Further,the TF-IDF algorithm is used to find keywords and cosine similarity calculations to calculate the similarity between training and test documents.Finally,the deep Boltzmann machine is used to classify the complaint work orders. The experiment proves that the accuracy of the classification reaches 80%,effectively alleviating the work pressure of the power sector and improving work efficiency.
Key words:complaint;TF-IDF;deep Boltzmann machine;text classification
当前,用户投诉成为电力企业一项重点关注的问题,如何有效地减少用户的投诉量,提供更好的电力服务从而提升用户的满意度成为供电企业关注的焦点[1]。近年来,随着供电企业管理水平的不断提高,优质服务的落地要求也越来越高。目前,95598目前对投诉的分类依然采取人工分类的方法,效率低下且存在主观偏差[2]。因此,利用自动化手段实现95598投诉工单分类以替代人工进行分类显得尤为重要与迫切。
国内外众多学者对分类问题进行了大量细致的研究。在数据的预处理上,文献[3]利用Word2Vec模型缓解了短文本中数据特征稀疏的问题;文献[4]使用BOW-HOG的改进模型用于图像分类;文献[5]使用中科院分词系统ictclas并对其进行了优化,有效识别出新词并实现分词结果的优化。在文本分類模型算法方面,文献[6]将L21范数与极限学习机结合,提出L21规范最小化极限学习机,有利于群体稀疏性并减少学习模式的复杂性;文献[7]提出一种利用语义相似度的支持向量机用于Web文档分类,在公共数据集上提高了F1值5%;文献[8]提出了基于极限学习机的中文文本分类方法,有效地提高了平衡分类精度;针对多标签文本分类的概念歧义和底层语意结构问题,文献[9]提出了将随机森林(RF)算法和隐性语义索引(LSI)结合的集成分类算法;文献[10]提出基于K中心点和粗糙集的KNN分类方法,降低了计算规模,提高了文本数据的分类效率。以上方法所涉及的算法模型均为浅层的机器学习方法,虽然能够解决在简单情况或有多重限制条件下的问题,但当面对的是复杂的实际问题时,例如多类别的分类问题,浅层的机器学习方法的泛化能力将受到较大限制,于是寻求更深层次的机器学习方法成为关键。
为解决电力投诉工单的智能识别分类问题,提出了一种基于深度玻尔兹曼机(Deep Boltzmann Machine,DBM)的电力投诉工单识别分类方法。该方法将95598电力投诉工单与自然语言处理中的文本分类问题结合,对电力投诉工单进行预处理,运用基于深度学习的电力投诉工单分类技术,有效优化质量监督管理工作,强化服务问题防控,减轻基层投诉压力,提高员工工作效率。
1 算法概述
1.1 DBM算法
为了使得学习具有多个隐藏层和数百万个参数的玻尔兹曼机(Boltzmann Machine,BM)变得切实可行,Salakhutdinov和Hinton为玻尔兹曼机提出了一种新的学习算法DBM[11]。DBM是一种具有多层隐藏随机变量的二元成对马尔科夫随机场(无向概率图模型),它使用变分近似法估计数据相关的期望,并且使用持久性马尔可夫链来近似数据独立期望。通过使用逐层“预训练”阶段可以使学习更有效,该阶段允许通过单个自下而上的传递来初始化变分推断。深度玻尔兹曼机是一种深度生成模型,它是一个完全无向的模型,每一层内的每个变量是相互独立的,并且条件于相邻层中的变量。深度玻尔兹曼机已经被应用于各种任务,包括文档建模,文本分类等。
深度玻尔兹曼机包含一组可见单元v∈{0,1}D
和多层隐藏单元h(1)
}为模型参数,表示可见层到隐藏层以及隐藏层之间的交互[12]。在DBM中,所有层都是对称且无向的,模型结构如图1所示。
1.2 TF-IDF[13]算法
TF-IDF(term frequency-inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术,旨在反映单词对集合或语料库中文档的重要性。在研究词的重要程度的时候往往会看一个词的词频,也就是这个词在文档里面的出现次数,当然也有些常用的词,虽然出现的次数比较多,但是在每个类别里面出现的次数,都很多,这部分的词汇对于分类来说是没有什么作用的。TF-IDF文档-逆文档词频法是一种较优秀的特征提取的方法。数字图书馆中83%的基于文本的推荐系统使用TF-IDF。
在一份给定的文档里,词频(term frequency,TF)指的是某一个给定的词语在该文档中出现的频率。对于给定文档d中的词语t,其重要性tf(t,d)可以表示为:
其中,ft,d表示词语t在文档d中出现的次数,ft′,d表示文档d的字词数。
逆向文档频率(inverse document frequency,IDF)是一个词语普遍重要性的度量,通过将文档总数除以包含该项的文档数,然后取该商的对数得到,即:
其中,N表示語料库中的文档总数,d∈D:t∈d表示词语t在文档D中出现的次数。通常我们调整为1+d∈D:t∈d以防止词语t在文档D中未出现而导致分母为0的情况。
则TF-IDF的计算公式为:
通过在给定文档中,高频率词语在整个文档集合中的低文档频率,产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
2 基于DBM的电力投诉工单分类模型
2.1 模型描述
目前,每年95598电力投诉工单中数量规模较大,人工分类效率低下,并且工单内容是以非结构化的文本形式记录存储的,然而深度学习神经网络模型识别的模式是通过向量中的数值形式体现。因此,针对以上问题,本文采用先对训练文档进行清洗,包括检查数据一致性、处理无效值和缺失值以及去停用词等;对清洗后的数据使用Jieba分词[14]并制作字典,如图2所示。进一步地,运用BoW[15]模型进行向量化特征提取。通过使用TF-IDF算法对训练文档和测试文档的文本特征向量进行相似度比较,获得相似度后使用DBM模型进行训练并根据权重预测分类,如图3所示。
2.2 DBM训练步骤
由于随机初始化后使用最大似然法训练DBM会导致训练经常失败,于是采取了贪心逐层预训练的方法。通过该方法,将DBM的每一层看作一个单独的RBM(Restricted Boltzmann machine,RBM)。于是对第一层进行建模,对输入对象进行训练。后一层的RBM的训练建模使用前一层RBM的后验分布样本输入。通过贪心逐层预训练的方式训练了所有的RBM后,将所有的RBM组合成DBM。下一步使用对比散度(ContrastiveDivergence,CD)训练DBM。训练步骤如下:
1)使用CD近似最大化log P(v)来训练RBM。
2)训练第二个RBM,使用CD-k近似最大化 log P(h(1)
,y)来建模h(1)
和目标类y,其中h(1)
采自第一个RBM条件于数据的后验。在学习期间将k从1增加到20。
3)将两个RBM组合为DBM。使用k = 5的随机最大似然训练,近似最大化log P(v,y)。
4)将y从模型中删除。定义新的一组特征h(1)
和h(2)
,可在缺少y的模型中运行均匀场推断后获得。使用这些特征作为多层感知机(Multi-Layer Perception,MLP)的输入,其结构与均匀场的额外轮相同,并且具有用于估计y的额外输出层。初始化MLP的权重与DBM的权重相同。使用随机梯度下降和Dropout训练MLP近似最大化log P(y | v)。
2.3 本模型分类具体步骤
基于DBM的电力投诉工单分类的具体实现如下所示:
2.3.1 训练文档预处理
1)取样本集(X,Y),其中X = (x1,x2,…,xl)表示输入的文档,Y = (y1,y2,…,ym)表示实际的m类文档类别。
2)对X进行预处理,包括建立停用词表,对X进行Jieba分词、去停用词、词性过滤,得到若干关键词W = (w1,w2,…,wn),同时制作字典,n为关键词wn 的字典序号。
3)对X使用BoW模型进行文本特征向量化,生成的特征向量为[(1,z1),(22,z2),…,(n,zk)],其中(n,zk)代表在X中序号为n的关键词出现了zk次。
2.3.2 分类测试文档
1)选取训练文档D = (D1,D2,…,DL),其中Dc = {D1c,D2c,…}为第c类文档集合(1≤c≤L)和测试文档集合T = (T1,T2,…,Tj);
2)对T和D两类文本进行文本特征向量的
TF-IDF计算并进行相似度比较,获得M个相似度。
3)将M个相似度导入DBM模型,训练其所分配的权重,进而预测T类别。
算法伪代码如下:
输入:训练文档Train = (D1,D2,…,Dl)
测试文档Test = (T1,T2,…,Tj)
文档类别Y = (y1,y2,…,ym)
输出:测试文档分类类别
Class = (c1,c2,…,cl)
1. W = Jieba(Train,Test);//Jieba分词文档
2. dct = Dictionary(W);//制作字典
3. BoW(Train,Test),D = [(1,z1),(22,z2),…,(n,zk)],T = [(1,z1),(22,z2),…,(n,zk)];//BoW模型词向量化
4. M = TF - IDF(D,T);//TF-IDF获得关键词向量
5. N = COSINE(MD,MT);//余弦相似度计算文档相似度
6. DBM_train(Train);//DBM训练相似度
7. Class = DBM_classify(N);//分类测试文档
3 实验分析
3.1 实验环境与数据集
实验硬件环境为Intel Core i5 8400 2.8 GHz的CPU,内存为32 G RAM,软件环境为Windows 10操作系统以及Pycharm Professional Edition搭載Python 3.6集成开发环境。
实验选取的数据集为2009年10月4日至2017年3月29日某省电网下发的33000张投诉工单,其中训练文档数量为5个类别共计10000个,测试文档数量为23000个。
模型训练中,部分参数值如表1、表2所示。
3.2 实验结果与分析
从精确率(Precision)、召回率(Recall)以及F1得分三项指标对模型进行评价,并分别对比使用,Word2Vec向量,字典向量,TF-IDF向量,和TF-IDF 相似度向量输入,实验结果如表所示。
通过对比试验可以看出,同时使用DBM作为训练模型的情况下,所提出的数据预处理方法在三项指标上均优于其他三种方法。
使用TF-IDF 相似度向量,预处理方法对电力投诉工单进行一级分类,结果如表4所示。
通过使用改进后的DBM模型对电力投诉工单进行分类预测,准确率达到了80%。使用TF-IDF向量相似度的预处理方法,能够很好地表示文本与类别之间的相关性,再结合DBM的分类能力,分类的结果相较于其他的处理方式,有了很大的提升。也说明了使用机器学习,加DBM这种深度学习方法的混合模型,效果更佳。
从表4可以看到,对于大部分的类别来说,具有良好的分类效果。'服务投诉'类别存在准确率偏低但是召回率较高的情况,说明模型找到了大部分'服务投诉'的类别,但是预测的结果中存在其他类别较多的情况。造成这个问题的主要原因是,'服务投诉'这个类别下面的子分类的数量要远远大于其他分类,并且涉及到更广的范围。跟其他分类的词汇有更多的交集,造成模型的错误分类。
测试数据里面一共有2210个‘服务投诉类别数据,1916个‘营业投诉类别数据,531个‘停送电投诉类别数据587个‘供电质量类别数据,1179个‘电网建设类别数据,总计6423个。可以得知每个类别的数据量不是均衡的,这也是影响模型效果的一个点,某个类别的数据量不足,就会导致这个类别的权重比别的类别要低,对应的召回率就会比较低,也就是有较多属于这个类别的样本没有被挖掘出来。比如‘停送电投诉这个类别的数据量是最少的,相应的召回率也就越低,只有0.34,说明该类别的样本只有34%被成功的找出来。
精确率和召回率各有优劣势,F1得分可以看作精确率和召回率的加权平均,同时考虑了分类模型的精确率和召回率,更加具有参考意义。最佳的得分是‘电网建设的F1得分为0.86,最低的是‘服务投诉的0.77,均值也是0.77。可以看到对于不同的类别结果仍有一定的差距。对于较差的类别还有继续优化的空间。
据不完全统计,正常情况下仅依靠人工处理2万张投诉工单至少需要花费4人连续工作1周时间。若将此项技术运用到实际生产应用中,仅需花费1人1-2小时即可完成处理。
4 结 论
随着生活水平的不断提高,用户对供电服务的要求和维权意识也不断提升,因此电力公司的投诉数量也呈现激增趋势。针对人工分类效率低下的问题,提出了基于DBM的电力投诉工单分类模型。通过运用BoW模型对语料进行向量化特征提取并使用TF-IDF算法对训练文档和测试文档的文本特征向量进行相似度计算,有效地解决了特征频率差异的问题。通过对比实验证明本文所涉及模型在多项指标上具有较大提升。
参考文献
[1] 周文杰,严建峰,杨璐. 基于深度学习的用户投诉预测模型研究[J]. 计算机应用研究,2017,34(05):1428-1432.
[2] 朱龍珠,徐宏,刘莉莉. 基于深度学习的95598重大服务事件识别研究[J]. 电力信息与通信技术,2018,16(11):19-23.
[3] 汪静,罗浪,王德强. 基于Word2Vec的中文短文本分类问题研究[J]. 计算机系统应用,2018,27(05):209-215.
[4] 邹北骥,郭建京,朱承璋,等. BOW-HOG特征图像分类[J]. 浙江大学学报(工学版),2017,51(12):2311-2319.
[5] 杨阳,魏晓,秦成磊. 基于Web知识的中文分词结果优化[J].计算机应用与软件,2015,32(12):55-58.
[6] JIANG M,PAN Z,LI N. Multi-label text categorization using L21-norm minimization extreme learning machine[J]. Neurocomputing,2017,261:4-10.
[7] CHINNIYAN K,GANGADHARAN S,SABANAIKAM K. Semantic similarity based web document classification using support vector machine[J]. Int. Arab J. Inf. Technol.,2017,14(3),285-292.
[8] 程东生,范广璐,俞雯静,等. 基于极限学习机的中文文本分类方法[J]. 重庆理工大学学报(自然科学),2018,32(08):156-164.
[9] 龚静,黄欣阳. 基于隐性语义索引的多标签文本分类集成方法[J]. 计算机工程与设计,2017,38(09):2556-2561.
[10] 文武,李培强. 基于K中心点和粗糙集的KNN分类算法[J].计算机工程与设计,2018,39(11):3389-3394.
[11] SALAKHUTDINOV R,HINTON G. Deep Boltzmann machines[C]//Artificial Intelligence and Statistics. 2009:448-455.
[12] HINTON G E,SALAKHUTDINOV R R. A better way to pretrain deep Boltzmann machines[C]//Advances in Neural Information Processing Systems. 2012:2447-2455.
[13] LESKOVEC J,RAJARAMAN A,ULLMAN J D. Mining of massive datasets[M]. London:Cambridge University Press,2014.
[14] SUN J. JiebaChinese word segmentation tool[J].https://github.com/fxsjy/jieba,2012.
[15] MCTEAR M F,CALLEJAS Z,GRIOL D. The conversational interface[M]. Cham:Springer,2016.