33

严选智能客服业务知识库自动挖掘方案

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzA5NTE1ODQyOQ%3D%3D&%3Bmid=2247483975&%3Bidx=1&%3Bsn=7f8bf7e1c691b0523622056b432e2fc6
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一个优秀的智能客服系统,既要有准确够理解用户问题的能力,同时又要有良好的知识储备,即完整的知识库系统。知识库系统的构建,借助算法的能力,能够及时发现未解答的用户高频问题,辅助客服进行配置,将有效的提升智能客服的解决率,减少人工客服的工作量。在大促或最近疫情这类突然事件期间尤为明显。本文将主要介绍严选智能客服业务知识库构建时的算法辅助方案。

1. 综述

知识库包含两个部分:结构化的商品知识、非结构化的业务知识库。本文主要关注的是业务知识库的构建。

严选智能客服在解答业务类问题时,主要采用的是QQ匹配的技术方案。那么用户问题未被解决可能有两个方面的原因:

(1)业务知识库中未包含对应的知识

(2)业务知识库已有对应的知识,但未包含该用户的问法

对应的,知识库挖掘需要包含两个部分:

(1) 新增标准问题

(2) 已有的标准问题新增相似问题

RvYJjeb.png!web

严选智能客服业务问答的整体框架如上图所示,本文主要关注离线挖掘的部分。用户问题的自动挖掘本质上是一个聚类问题。文本聚类主要关注三个方面:预处理、特征构建以及聚类算法,除此之外,新增了聚类簇与已有知识库匹配的过程以及新增faq的摘要抽取过程。

2. 预处理

预处理主要包括两个步骤,一是对文本进行归一化预处理,二是进行意图识别。聚类本身是一个无监督问题,进行预处理可以减少噪声的引入,尽可能的降低不确定性,提升聚类的效果。同时,预处理可以合并部分文本,减少参与聚类的样本数量,从而降低聚类算法的耗时。

2.1 文本归一化

文本归一化是指对输入文本的降噪过程,去除一些无用信息、纠正一些错误信息。严选构建了一套通用的文本预处理的框架,在该场景下,主要进行如下的预处理操作:

(1) 基础预处理 :繁简转换 、大小写转换、全角半角转换、标点等特殊字符归一化

(2) 特殊实体识别 :电话、订单号、url、售后单号、快递号、地址等。这类实体每个用户都不同,但聚类时可以各自同等对待,识别出来之后各自归一化成一个相同的符号。

(3) 文本纠错 :对用户的输入文本,使用纠错算法对一些可能的错误进行纠正,包含字音、字形。

2.2 意图识别

文本归一化之后,对参与聚类的用户问题进行意图识别。意图识别复用的是严选智能客服线上的体系。

对未解决用户问题进行意图识别的原因主要有:

(1) 部分意图是不能通过faq的方式回答,比如 “导购”、“人工”类意图的问题。这部分问题无需参加聚类。

(2) 意图识别是有监督的模型,特定意图下的用户问题进行聚类可以减少样本的数量,发现细粒度的用户高频未解答问题,降低聚类的难度。

3. 特征构建

预处理之后,将特定意图下的用户问题进行向量化表示。采用了两个层次的特征表示方法:深层语意特征和浅层语意特征。最终拼接起来,获得用户问题的向量化表征。

3.1 深层语意特征

常见的文本向量化方式是基于一个预训练的模型获取向量表征。一类是词向量(word2vec、glove等),需要加权得到句子的向量表征。一类是预训练的语言模型(emlo 、bert等),这类模型在训练时考虑了上下文的语意,可以解决一词多义的问题。

在实际使用时,使用word2vec获得的句子表征,比直接使用bert的效果要好。原因在于,bert侧重于整体语义的捕捉,与业务无关。以下面两个用户问题为例:

q1 : 申请的退货进度怎么样了? q2 : 申请的价保进度怎么样了? 

这两个问题只有两个字不同,直接使用bert获取到的句向量是十分类似的。但句中的“退货”和”价保“是核心的业务关键词,bert无法感知到。

而在使用word2vec获得词向量之后,需要加权得到句向量。加权时,对以下两类词进行提权。
(1) 业务实体词 (退货、物流等)

(2) 重点词性 (动词、名词等)

通过对上述两类词进行提权,保证获取的句子向量向核心词上进行倾斜,使句向量更合理。

3.2 浅层语意特征

为何有了深层语意特征,还需要构建浅层语意特征。以两组用户问题为例:

q1 : 如何申请退货? q2 : 如何申请换货? 

这一组问题只相差一个字,字面上其实是很相似的两个问题。但在客服场景下,因为这两个问题的解决方案完全不一致,是两个完全不同的问题。

深层语意特征获取不到这种差异性,“退货”和“换货”这两个词无论是基于何种语言模型,获得的向量表征都是很相近的。因此,我们基于词粒度构建了浅层语意特征。

q3 : 能不能申请退货? q4 : 如何申请退货? 

这一组问题核心的实体词上都相同,在严选的faq知识库中却是两个不同的问题。在构建深层语意特征时,向核心词上倾斜了,需要捕捉字面粒度的差异性。

构建浅层语意特征时,先对用户问题进行切词、停用词过滤。预处理之后,构建 1 ~ 4 gram的词袋模型,进行n-gram编码。将编码之后的结果利用PCA降维后作为用户问题的浅层语意特征。

4. 聚类算法

特征构建完成之后,就是选取合适的聚类算法进行聚类。在我们的业务场景下,希望不依赖任何的先验知识,仅依靠构建的文本特征之间的相似度进行聚类。k-means、DBSCAN这类聚类算法依赖于先验的知识,尝试之后效果不佳。

在词聚类时,我们采用了层次化聚类这种全局最优的聚类算法。但是时间复杂度是: O(N^3) ,词粒度上,表述方式是有限的,忽略词频时,层次化聚类算法可以在有限的时间内跑出结果。 但句子不同,句子的表述千差万别。 预处理之后,在忽略句频的情况下,参与聚类的句子数量还有几十万乃至上百万的量级,层次化聚类并不能适用。

因此,对层次化聚类进行改造,采用了分桶层次化聚类的方法,将每次参加层次化聚类的样本点数量控制在可接受的范围内。分桶层次化聚类算法的示意图如下:

YBz22eB.png!web

(1) 设定桶的数目

假设样本点数量N,每个桶中可参与层次化聚类的样本点数量为M, 那么桶的数量不少于 K = N /M 。假设有15万的数据,层次化聚类的数据不超过2w,那么桶的数量至少为 8。

(2) 样本分发入桶

最简单的方式,随机将样本分发到K个桶中去。如果希望每个桶中的数据具有一定的相关性。可采用k-means等算法预先对样本进行聚类,先验的类别数设置为桶的数目。但是聚类结果各个簇中样本数量可能失衡,导致某些簇中样本点数量过多,无法实施后续的层次化聚类。这种情况下,需要调整桶的数量。

(3) 桶内层次化聚类

对每个桶内的样本实施标准层次化聚类。为了防止聚类效果发散,每一轮层次化聚类的合并阈值会适当提高。

(4) 簇内样本合并

桶内层次化聚类之后,需要将同一簇内的样本点合并成新的样本点,合并的过程是为簇找到一个特征向量。选取同一簇内频次最高的十个样本,对其特征向量,按照样本数量进行加权平均。加权结果作为该簇的特征向量,参与下一轮的分桶层次化聚类。

(5) 判断是否满足停止条件

一轮分桶层次化聚类之后,需要判断是否满足停止条件。停止条件三种:

(a) 该轮聚类只有一个桶;

(b) 这轮聚类之后的样本点数量没有减少,无法继续合并样本;

(c) 该轮桶数量与上一轮桶数量一致,并且合并的样本点占比很小。

如果满足停止条件,则聚类停止,输出各个簇中的用户问题。如果不满足,则合并之后样本参与下一轮分桶层次化聚类,重复步骤 (1) (2) (3) (4) (5)。

改造后的分桶层次化聚类算法,能够保证聚类效果的同时,适应大规模语料,将聚类时间控制在可接受范围内。

5. 摘要抽取

聚类之后产生的聚类簇,与知识库中的已有知识计算相似度。采用第3章中的方式获取已有faq的向量表征,计算簇与已有faq的相似度。大于阈值时,作为已有faq的相似问题提供给客服同学审核。

当无法与已有faq合并时,认为产生了一个新的用户问题簇。需要在知识库中新增一个标准问题以及对应的相似问题。提供了一个简单的摘要抽取的功能,从用户问题簇中抽取核心的用户观点,辅助配置。

对簇中的用户问题进行分词等预处理之后,利用跳词的新词发现算法,进行摘要抽取。”跳词“是指候选摘要的各词之间可以有间隔。以下列三个句子为例。

q1 : 物流查询 q2 : 物流怎么查询? q3 : 我的物流能不能帮忙查询一下? 

三个句子的摘要是”物流查询“,可以发现”物流“和”查询“两个词之间并不是连续的,是可以有间隔的。所以在进行摘要抽取时,候选的词之间也是可以有间隔的,摘要相邻词在原句中可以有0~2个词的间隔。

以 a、b两个词组成的摘要为例,在相同用户问题簇中主要衡量以下两个指标:

互信息 :主要考虑摘要内部词的聚类度。互信息越大,表明a b共现的几率越大,成为摘要的可能性越大。

MI_{ab} = log\frac{p(a,b)}{p(a)p(b)}

32iyMvU.png!web

左右邻接熵 :反映了⼀个⽂本⽚段的左邻词集合和右邻词集合的随机程度,邻熵越⼤,表明该摘要的左右边界越随机,成摘要的概率越⼤。

H_{left}=-\sum_wp(w,a,b|a,b)logp(w,a,b|a,b)

MFzEBfR.png!web

6. 总结

本文主要介绍了严选业务知识库算法智能辅助的技术方案,部分结果示例如下表所示。

(1)  已有标准问题新增相似问题

知识库已有标准问题 聚类问题簇

业务问题 – 售后

商品有问题怎么办?

商品收到有问题怎么办

我的商品有问题

这个商品出现严重问题

……

业务问题 - 物流

商品多久送达?

商品多久可以送达?

跨境商品多久能送到

商品一般多久到货

……

业务问题 - 发票

可以开发票吗 ?

开发票

开增值税专用发票

商品支持开发票吗

……

(2)  新增标准问题

职能摘要 聚类问题簇

业务问题

退,定金

没付,全款,退,定金

退定金

定金什么时候退

帮我预购严选那个定金退了

……

商品信息咨询

保质期,多久

多久,吃,完

这个保质期多久

这个保质期多长时间

开封后多久吃完

……

特殊意图 – 投诉

投诉,商家

投诉,这家,店

投诉店铺

我要投诉商家

你们不处理,我就投诉到消协去

……

现在的结果中还是存在“该聚未聚”和“错聚”的badcase在,后续在文本表征以及聚类算法上还有一定的优化空间

作者简介

志伟,2018年硕士毕业于浙江大学,后加入网易严选算法部。 从零到有参与了网易严选智能客服的算法构建工作,并为考拉智能客服提供算法能力支持。 致力于将自然语言处理领域的新技术与业务相结合,赋能于严选智能客服、人工客服工作台、客服质检等各个场景。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK