彭 路,朱 君,邹云峰
(1.河海大学计算机与信息学院,江苏 南京 211100; 2.国网江苏省电力有限公司营销服务中心,江苏 南京 210019)
在激烈的市场竞争中,客户服务己经成为企业在市场上面临的重要问题之一,许多公司在近年迅速发展的趋势下,己意识到客户服务的重要性:让客户满意,把满足客户需求作为一切工作展开的目标和中心。结合企业各自不同的实际情况,因地制宜地建立适合本企业的客户服务中心是现阶段摆在所有企业面前的重要问题。良好的客户服务能够联系企业与客户之间的感情,维护并营造企业良好的社会形象,最终实现培养消费者对于企业和品牌忠诚度的长远目标。目前,企业的客服中心在客户服务和产品咨询上起着重要的作用,但是企业需要为此承担相应的成本开销;而且传统的人工服务方式不仅在客户服务质量上存在不足,还增加了企业的运营成本。
众所周知,电力是关系国计民生的重要基础产业,是国民经济的重要组成部分。电力企业具有规模经济特征,与燃气、自来水、电信等类似,在一般公共服务类企业中具有显著的代表性。而客户服务工作作为电力企业的一项重要经营活动,不仅关系到电力客户的切身利益,也关系到电力企业的经营效益。电力企业的客户服务问题的解决方案对于解决全行业的客户服务问题有着广泛适用性。
在人工智能浪潮席卷全球的今天,文本挖掘技术已经被广泛地应用在文本审核、广告过滤、情感分析和反黄识别等自然语言处理领域。文本分类作为文本挖掘中一种有效的文本分类方式,在信息检索、信息过滤、文本数据库和搜索引擎等领域得到了广泛的应用和关注,为深层次的分析提供了技术支持和解决方案[1]。
本文主要研究将文本分类技术应用在电力客户诉求预判领域,针对电力领域改进传统的中文文本分词以及特征提取方法,给出客户服务工单词汇的最佳文本表示长度,对比深度神经网络与传统机器学习文本分类技术,对电力行业客户服务过程产生的服务工单进行挖掘分析。文中基于深度神经网络的文本分类技术,以电力客服中心获取的客户服务工单文本为数据基础,建立客户诉求预判分析模型。最后通过实验验证该方法可快速准确地对电力客户服务工单文本进行分类,挖掘出隐藏的客户用电诉求,从而为改进电力客服质量与潜在服务风险预测提供数据支撑。
文本分类的处理大致分为文本预处理和分类模型构建2大步骤[2],通过这2大步骤将一篇文档归类到已知的文档类别中去,文本分类的主要流程如图1所示。
图1 文本分类流程图
文本预处理全过程包括文本分词、过滤停用词、词频统计、特征选择、文本表示等步骤,从而将文本所表达的自然语言数据转换成计算机能够理解的机器语言数据。针对客户服务工单文本,与英文文本预处理相比,中文文本的预处理是关键技术。
1.1.1 中文文本分词
中文分词就是将连续的字序列按照一定的规范重新组合成词序列的过程[3]。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比英文要复杂和困难得多。
1.1.2 文本特征提取
由于文本分词后,会出现噪声词汇的情况,噪声词汇会造成文本分类准确率的降低,因此需对分词后的文本进行特征选择。而常用的文本特征选择方法有文档频率(DF)、互信息(MI)、信息增益(IG)、开方拟和检验方法(CHI统计)以及潜在语义分析(LSA)等[4-6]。
1.1.3 文本表示
文本表示常用词向量方法(Word Embedding),就是将词表征为实数值向量的一种高效的算法模型,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似。
词向量方法的基本思想是通过训练将每个词映射成K维实数向量(K一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度。其采用一个3层的神经网络,包括一个输入层、一个隐层和一个输出层。其核心技术是将词映射到一个新的空间中,并以多维的连续实数向量进行表示,称为Word Embedding。而采用这种多维连续实数向量表示法,不但解决了原始词向量稀疏表示法所带来的维数灾难问题,而且进一步挖掘了词与词之间的关联属性,从而提高了向量语义上的准确度[7]。
传统机器学习算法中能用来文本分类的模型常见的有朴素贝叶斯模型(Naive Bayes Model, NBM)、随机森林模型(Random Forest Model, RFM)、支持向量机模型(Support Vector Machine, SVM)、K最近邻模型(K-Nearest Neighbor, KNN)[8-11]。
但随着文本挖掘技术的深入,越来越多的深度学习模型被应用于文本分类,最著名的有TextCNN模型和TextRNN模型。深度学习适合做文字处理和语义理解,是因为深度学习结构灵活,其底层利用词嵌入技术将传统的one-hot的词语离散化0-1表示的方法转换为深度学习中的多维连续实数表示方法。使用深度学习抽象特征,可以避免大量人工提取特征的工作。深度学习可以模拟词与词之间的联系,有局部特征抽象化和记忆功能。正是这几个优势使得深度学习在情感分析,乃至文本分析理解中发挥着举足轻重的作用。
深度学习TextCNN模型的网络结构如图2所示。
图2 TextCNN模型网络结构
图2中TextCNN模型第一层为嵌入层,嵌入层Embedding将正整数转换为具有固定大小的向量,第二层为CNN卷积层,第三层为最大池化层,第四、第五层为全连接层,最后一层为Softmax层[12-13]。
深度学习TextRNN模型的网络结构如图3所示。
图3 TextRNN模型网络结构
图3中TextRNN模型与TextCNN模型的差别在于第二、第三层的卷积层和池化层改为了2层循环神经网络层[14-15]。
实验数据集选取一年跨度中每个季度最具代表性的月份,即2017年8月、2017年11月、2018年2月和2018年5月的省级所有电力客户服务工单为数据基础,从客户用电问题受理内容出发进行挖掘分析。部分客户用电问题受理内容数据如图4所示。
图4 部分客户用电问题受理内容数据
2.1.1 改进中文文本分词
针对中文文本预处理时,很关键的一项技术就是中文分词。现有的分词工具不能很好地识别电力领域的特殊词汇,或者分词结果存在偏差,影响后续文本处理过程。因此,需要设计一种新的分词方法,可以提取电力领域的特殊词汇(如电力客户工单中的“线路弧垂”)组成电力行业的专属词典,在进行分词时加入专属词典能有效提高分词效果。
本研究针对电力服务工单受理内容文本进行分词,在传统中文文本分词方法的基础上,增加了以下6个改进步骤来提高电力领域特殊词汇的分词准确率,为后续的文本处理作铺垫。
1)针对口语化的内容,传统中文文本分词方法的停用词库太少,大量冗余的单字没有被剔除,因而大规模扩充停用词库。
2)若为数量词或者数量词加名词的词汇,删除掉(例如一台冰箱、一位女性等)。
3)数字很难成为电力词汇的组成部分,所以消除数字对电力词汇发现的影响。
4)若词汇长度超过4,直接进行分词,提取出其中的电力词汇,同时删掉长度超过4的电力词汇。
5)构建电力领域的地名人名库,过滤特殊地名人名[16]。
6)在过滤规则方面,4字词中如果是2个字符的动词加上2个字符的名词,可以认定为短语将其删除掉。
最后通过不断地完善和加入词库来优化分词的效果,最终分词后得到11613个词汇,如表1所示。
表1 分词词汇统计
总工单量分词后词汇总量不同词汇数量平均包含词汇个数3568512645671469335.44
为了验证改进后的中文文本分词方法在深度学习模型TextCNN上的有效性,在Python环境下,分别使用传统中文文本分词方法和改进后的中文文本分词方法对数据进行处理,然后使用深度学习模型TextCNN进行分类训练,并对训练结果进行比对。实验结果如图5所示。
图5 改进与未改进文本分词方法的结果比对
由图5可知,基于改进中文文本分词方法的深度学习模型TextCNN的训练准确率高于基于传统中文文本分词的训练准确率。在传统中文文本分词的基础上添加电力专业词库和分词规则,能够有效提高后续分类算法的分类准确度。在深度学习中这些规则能准确地划分出电力行业的专有词汇,这些电力专有词汇可作为分类问题的典型特征词,从而使得分类结果更加准确。
2.1.2 文本特征提取
通过改进的中文文本分词技术对电力客户服务工单进行分词后,得到的分词结果经去除常用停用词处理后,再进行特征降维。从传统统计方法出发,结合电力行业特征,从词性、词频、权重以及词义与词频相结合等多方面进行特征选择[17],部分特征词汇如表2所示。
表2 部分特征词汇及其词频
特征词汇词频特征词汇词频复电申请13214抄表2460恢复供电11337发票1968停电9039投诉1452供电公司7823报警灯1212结清电费6352历史数据1203电能表5461供用电783︙︙︙︙
2.1.3 文本表示
将电力客户服务工单分词结果经去除停用词、特征降维处理后,采用词向量方法(Word Embedding)将电力文本词汇表征为实数值向量。Word2vec算法将采用一个3层的神经网络,包括一个输入层、一个隐层和一个输出层,对电力文本词汇进行词向量训练测试,其训练测试步骤如下:
1)定义词向量的维度、保证被考虑词汇的频度、设定并行训练使用CPU计算核心的数量、训练词向量上下文窗口大小等。
2)初始化一个3层的神经网络,包括一个输入层、一个隐层和一个输出层,并训练模型。
3)利用训练好的模型,寻找训练文本中与指定词汇相关的10个词汇。
词向量方法就是将词表征为实数值向量的一种高效的算法模型,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似。
词向量方法的关键在于确定词向量的维度,为了选择适合电力客户服务工单文本的最佳K值,通过深度学习模型TextCNN进行验证,实验结果如图6所示。
图6 不同K值下TextCNN模型训练集准确率
由图6可知,将电力文本词汇通过Word2vec算法表征为128维实数值向量最合适,其中特征词“电表”的128维实数值向量的表示如图7所示。
图7 特征词“电表”的128维实数值向量表示
如图7所示每个词汇表示成128维的向量,每个句子包含多个词汇,每个句子则表示成二维矩阵。矩阵的列宽为128维,行宽为最长句子所包含的词汇量。如果句子所含词汇量小于最长句子所含词汇量则填充128维的0向量。
对电力文本词汇进行词向量训练后,电力服务工单中与词汇“电表”最相关的10个词汇如表3所示。
表3 特征词“电表”相关词汇及其关联度
关联词汇关联度关联词汇关联度白屏0.585403323173523常亮0.5299054384231567报警0.5825119018554688数字0.5289791226387024现象0.5763686895370483显示屏0.5257055163383484报警灯0.5669842958450317长亮0.5226054191589355乱码0.5322357416152954报警灯亮0.5220822095870972
2.2.1 训练集选取
在实际的电力客户服务过程中,通过客户服务工单所反映出的用电诉求是多种多样的。但为了精准详尽地反映客户的真实用电诉求,研究客户服务过程中产生的电力问题,如“欠费复电”“电表异常”“电器核损”等,本文主要以“欠费复电”、“电表异常”和“电器核损”这3类问题为例进行分析,从全部客户服务工单中的受理内容上判断是否属于“欠费复电”、“电表异常”和“电器核损”。从全部属于“欠费复电”、“电表异常”和“电器核损”的工单中分别随机选择5000条作为训练集,随机选择500条作为验证集,随机选择1000条作为测试集,以此来衡量模型性能。数据集分布如表4所示。
表4 电力客户服务工单文本分类数据集分布
类别训练集验证集测试集欠费复电50005001000电表异常50005001000电器核损50005001000
2.2.2 分类器模型选择
虽然传统机器学习算法在文本分类领域应用广泛,但存在着对前提条件要求过于严格或结果不够精确等诸多缺陷。随着文本挖掘技术的深入,深度学习模型在文本分类领域的优越性逐渐体现出来[18-19]。深度学习适合做文字处理和语义理解,是因为深度学习结构灵活,其底层利用词嵌入技术将传统的利用one-hot的词语离散化0-1表示方法转换为深度学习中的多维连续实数表示方法。
因此,本实验将采用TextCNN、TextRNN这2种深度学习模型作为电力问题“欠费复电”、“电表异常”和“电器核损”这3类的分类模型。通过调用这2种深度学习模型,构建多个分类模型,并对比4种传统机器学习算法分析不同分类模型的分类效果,选择最优的电力服务工单文本分类模型。
2.3.1 分类结果分析
为提高分类的准确率,进行以下3步处理:1)丰富同义词库和专业词库,使分词结果更精准;2)更精准地选定特征词;3)调整深度学习模型的参数和结构深度。之后采用TextCNN、TextRNN这2种深度学习模型以及4种传统机器学习模型进行实验。
TextCNN与TextRNN这2种深度学习模型的训练过程如图8和图9所示。通过图8可以看出,随着迭代次数的增加,两者的Loss函数值都在下降,但TextRNN的下降过程起伏较大,鲁棒性较小,反观TextCNN下降比较平滑,最后趋于稳定。
图8 训练集Loss曲线
图9 训练集Accuracy曲线
由图9可以看出,TextCNN的最终准确率略高于TextRNN,基本迭代150次后准确率已经开始收敛,最后迭代完成准确率可以达到99%,而TextRNN的准确率低一点,收敛速度也相对较慢。
2.3.2 分类效果评估
利用4种传统机器学习文本分类方法朴素贝叶斯(Native Bayes)、Adaboost、随机森林(Random Forest)以及多层感知机(MLP)来对比深度学习模型的分类性能。
如图10所示,传统分类器的测试集准确率普遍低于深度学习模型,究其原因,在于深度学习更加适合做文字处理和语义理解,深度学习结构灵活,其底层利用词嵌入技术将传统的利用one-hot的词语离散化0-1表示方法转换为深度学习中的多维连续实数表示方法。
图10 各分类模型测试集准确率对比图
通过实际运行代码实验可知,针对电力客户服务工单文本分类问题,传统机器学习方法训练所花费时间都比较长,而使用TextRNN深度学习模型训练运行时间花费次之,TextCNN深度学习模型的训练运行时间最短。这验证了利用TextCNN深度学习模型处理电力客户服务工单客户诉求预判问题不仅能够提高准确度,还能提高运算效率。
TextCNN在测试集上的混淆矩阵[20-21]如表5所示。
表5 TextCNN模型混淆矩阵
真实类预测类欠费复电电表异常电器核损欠费复电99433电表异常49915电器核损45991
根据混淆矩阵计算出TextCNN对应的准确率(precision)为99%,召回率(recall)为99%,F值(f1-score)为99%。可见TextCNN深度学习模型很适合电力客户服务工单的客户诉求预判问题[22-23]。
利用TextCNN模型进行文本分类时,可以忽略客户服务工单中的多层级业务类型,直接从客户服务工单的受理内容出发,挖掘分析出隐藏在不同业务类型中的疑似“欠费复电”、“电表异常”和“电器核损”的客户服务工单。
“欠费复电”、“电表异常”和“电器核损”这3类问题在电力客服工单中的分布比例情况,如图11所示。
图11 各类问题在电力客服工单中的分布比例
如图11所示,“欠费复电”、“电表异常”和“电器核损”这3类问题分别在电力客服工单中占33%、14%、11%。从图中可见,这3类问题在电力客户诉求中占了很大一部分,具有代表性。
对于电力客户诉求中其他不属于这3类的问题或者由于电力业务内容改变所产生的新问题,可以按照本文处理这3类典型问题的文本分类方法和流程,首先对新问题进行样本采集,其次利用改进的中文文本分词方法对样本数据分词以及特征提取,再次使用词向量方法对样本数据进行文本表示,然后利用深度学习模型TextCNN对样本数据进行训练,最后对分类效果进行评估以及调优,从而达到对新问题的准确分类。
由于客服人员在对客户用电问题进行划分业务类型时,常常会受自身业务水平以及企业管理政策的影响,从而使得人工对客户用电问题的划分结果背离客户所反映的真实问题。而通过本文所构建的TextCNN文本分类模型,对电力客户所想表达的真实诉求,就可以从客户服务工单的受理内容中被分析出来,从而避免了客服人员业务水平、企业管理政策以及电力业务类别准确性等主观因素的影响。
本文针对电力领域从电力服务工单受理内容出发给出了一种改进传统中文文本分词的方法,应用该方法可以极大地提高电力客户服务工单文本分类的准确率,为后续客户潜在诉求预判奠定数据基础,从而让电力企业为客户提供更优质的服务。
文中通过实验比对选择了适合电力客户服务工单文本表示词向量空间模型的最佳K值并构建了基于深度神经网络的客户诉求预判分析模型,准确地挖掘分析出隐藏在不同业务类型中疑似“欠费复电”、“电表异常”和“电器核损”的电力问题,从而避免了人为参与的主观影响。
另外,还能通过客户诉求预判的结果进一步挖掘分析出电力客户服务过程中对客户产生用电诉求的影响,间接反映出电力服务过程存在的潜在服务问题,从而为提高电力企业客户服务质量提供一些依据。此外,该方法还可以应用到其他相关行业的客服系统,以提升客户服务质量。