因此,自然语言处理领域的玩家们,除了要思考模型的效果、产品的架构,更要思考一个最为本质的问题:要处理什么数据?为什么要处理这类数据?
Recurrent AI 选择了「呼叫系统」。
「电话录音可追溯而不可作假,这让呼叫系统成为了一个不可篡改的精准用户画像来源。同时坐席与客户的全部沟通过程也完整保留在电话录音中,这意味着影响成单率的全部因素都在录音之中,只要你能准确地把它们提取出来。」CTO 张宇韬说。
如何选择提取哪些信息?如何分步进行提取?近日,机器之心前往 Recurrent AI(睿科伦),与 CEO 陈麒聪、CTO 张宇韬、首席科学家杨植麟进行了深入的对话。他们讲述了一个用语音识别、语义理解和数据挖掘,把呼叫系统「变废为宝」的故事。
机器之心:能否介绍一下 DealTape(交易磁带)智能呼叫系统?
我们的产品是一个优化沟通的 AI,希望能够从统计分析的角度帮助人们去分析,在不同的商业背景下,哪些话术产生了积极的影响,哪些产生了消极的影响。想要实现这一点,就首先需要语音识别和自然语言处理技术,把声音转换成由标签组成的向量,因此这也是我们的技术栈的主要构成部分。
我们最先切入的行业是那些会使用呼叫系统的行业。购买呼叫系统说明他们对监督坐席与客户沟通的过程是有强需求的。然而过去囿于技术,大部分录音只能靠人工重听或者弃置。而我们的系统可以节省 90% 以上听录音的时间,让坐席和管理者都能够直接发现沟通中的问题、直接进行有针对性的优化。
机器之心:为什么选择做智能呼叫系统?
我们几位创始人的背景集中在 NLP 与数据挖掘领域。最开始我们是从聊天机器人开始进行业务上的探索的。然而一段时间之后,我们逐渐认识到,聊天机器人在商业逻辑上有一些不通畅的地方:一方面,现在的任务型聊天机器人仍然需要非常深度的定制,换言之成本十分高昂,另一方面,它对于大多数公司仍然是一样「nice to have」的东西,大家的支付意愿也不是特别高。
因此,我们就在思考,做一些技术栈更深一点的东西。与其说创造对话,不如对已有对话进行分析。而对话数据最多的地方就是呼叫中心。
呼叫中心的用户花了大量成本进行录音,但是却没有利用它获得任何价值。电话录音可追溯而不可作假,这让呼叫系统成为了一个不可篡改的精准用户画像来源。同时坐席与客户的全部沟通过程也完整保留在电话录音中,这意味着影响成单率的全部因素都在录音之中,只要你能准确地把它们提取出来。
所以我们就在思考,如何能把利用这些数据提高企业的价值。
机器之心:DealTape 能够满足哪些需求?
两个典型的需求是培训和实时座席辅助。
一方面是找到各种话术与成单率之间的关系,帮助管理者可视化座席问题在哪里,然后通过个性化提示让坐席学习容易成单的话术,能够提高他们的销售水平。
另一类是自动填写客户画像,节省销售记录的时间,可以联系更多的客户 , 以及实时根据客户问题推送来自销冠的优秀回复案例。
另一类是把客户画像抽取出来,分析其分布,不同类型客户的流失率、成单率等,是一个数据来源详实的商业分析工具。
机器之心:DealTape 服务于哪些行业?对不同行业的系统进行什么程度的定制?
会购买呼叫系统的企业都是我们的潜在用户。我们现在比较集中的行业是金融,教育和 B2B。这些行业的很多基本情况非常类似:没有一家独断的垄断龙头公司,而是有非常多中等规模的企业,同时都可以支付得起呼叫系统和相关服务。因此在这些领域内,DealTape 既有可扩展性,也能够进行一些定制。
针对每个不同的行业,我们都对语音和语义模型进行了定制化。
这是因为,同样是呼叫系统,不同行业的使用方式差别会很大,最后音频中的信息分布、信息量以及内容差异也非常大。例如保险销售需要在电话里和客户确认非常多个人信息,一通电话可能长达一小时。而信贷行业去销售的时候,只需要询问对方房产,社保等资质再加微信邀约就可以结束了,一个电话平均只要几分钟。
机器之心:从模型角度看,DealTape 智能呼叫系统可以分成几部分?
我们的整个技术栈可以分为三层:
第一层是语音识别层,主要解决的是如何把呼叫系统里一段短则几分钟,长则几小时的电话录音转换为机器可以处理的双轨文字记录。
第二层是语义理解,通过一系列的文本分类模型,为文本中体现坐席与客户特点的句子打上标签,并为对话双方建立「画像」。
第三层是数据挖掘层,计算不同的标签与成单率之间的关系,将结果用于培训、实时座席辅助等不同目标。
图:坐席的「话术点」标签类别
机器之心:语音识别层和语义理解层分别包括哪些模块?进行哪些任务?
语音识别层首先通过把人声段落和背景噪音段落分开的形式把长录音断句,进一步根据声纹信息区分不同说话人身份,并判断哪一方是销售坐席,哪一方是客户。这个阶段解决的是「谁在说话」以及「在什么时候说话」。最后,才对每一句话(utterance)进行语音识别。
语义理解层的目的是把自然语言结构化,最后给出一系列关于坐席和客户的标签,我们称之为「画像」。
常见的针对坐席的标签包括「是不是加了微信」,「是不是约了下次见面」等 KPI 衡量指标。而常见的客户标签则会根据行业的不同而产生比较大的差异。例如,在金融信贷领域,「是否有社保」、「是否有房产」,就是一些重要的二值标签。标签的数量从几个到几十个不等,随着新用户逐渐加入,需求逐渐增多,我们也在不断扩充自己的标签体系。
图:保险行业的「保险责任 1」标签对应的语句样例
机器之心:数据挖掘层如何利用上两层给出的信息?
数据挖掘层像是一个商业智能(BI)工具包。
在这一层,我们会对所有标签与成单率之间的关系建模,找到那些与成单率负相关程度最高的、波及客户最多的因素,将它们视为目前坐席需要解决的首要问题。
同时,我们会分析具有这些因素反而成单的案例,例如「被连续拒绝反而成单」的案例,「被竞品先入为主反而成单」的案例,分析究竟哪些话术起了作用促成了成单,找出销售打动客户的原因。
对于销售坐席来说,我们可以利用分析结果进行有针对性的话术培训。我们可以根据某一位坐席的数据进行回归分析,再把报表推送给他:通过数据分析,我们发现,从用户角度,你在遇到某种情况的客户时成单率最低,从个人角度,你的某一环节最为薄弱,然后推送和他情况类似的成单案例,对他进行有针对性的话术培训。
对于管理者来说,我们可以给出管理建议:例如,一位坐席同时维护多少个客户的时候,成单率最高;又如,哪些话术能够最有效地促进成单。
另外,我们也可以通过上一层的语义理解,进行类似「网站埋点」,监督坐席是不是按要求完成了工作,例如是不是推广了小程序。
机器之心:语音识别层的核心技术要点有哪些?
众所周知,语音识别模型除了需要声学模型还需要语言模型。
如果没有语言模型,单纯用声学模型进行识别,文字会出现漏字、同音字错误识别等可读性问题。因此我们需要一个语言模型在解码过程中对声学模型定向搜索过的结果进行一次重排序。
经典的语言模型做法是采用 n-gram 统计模型、但 n-gram 模型存在几个问题,一是因为参数非常多,所以容易过拟合;二是即使在 n 取值非常小的时候,例如 3-gram,仍然会发生参数爆炸。后来有了基于神经网络的语言模型,把每个词,或者每个词的分布变成一个嵌入码(embedding), 然后用 RNN 模型来刻画句子的上下文。这一做法的局限性在于,无论如何设计模型结构,最后都要通过 softmax 进行输出,模型的表现力就被嵌入码的规模所限制了。
因此我们在语言模型中引入了「softmax 混合体」概念,相当于将若干个 softmax 解码器做成了一个混合模型,克服了基于神经网络的语言模型的表现力限制性,在多个语言建模标准数据集上获得复杂度(perplexity)的大幅提升,例如在 1B Word 数据集上就提高了 5.6%。这篇文章入选了 ICLR 2018 oral,是前段时间影响力比较好的一个工作。
机器之心:训练语音模型需要进行什么规模的标注工作?
在冷启动阶段,我们对接了两家不同行业的客户,分别来自信贷领域和 B2B 销售,我们从他们的数据库中提取数据,进行了数百个小时的人工标注,然后利用这部分数据训练处了一个基本可用的基线模型,用于后续的数据标注。有了基线模型之后,新的未标注数据首先通过基线模型进行预识别,再交给标注员做精细标注,这样成本就大大降低了。同时,基线模型的训练集也在不断扩充,现在我们最新的基线模型训练集规模已经达到数千个小时。
至于生产阶段,每个行业都有一个专属的语音识别模型,如果用户所在行业是我们之前没有接触过的,那么我们需要大量标注数据从头训练;如果我们之前做过相关行业,那么标注的目的只是适配一下特定公司的数据特点,这时只需要进行「轻标注」,标注量大概是新行业的十分之一。
机器之心:目前市面上已经有许多公司将语音识别视作一项基础能力模块,对外提供相对比较成熟的技术服务。为什么 Recurrent AI 仍然选择「自己造轮子」?而不是调用其他 API?
我们尝试过用通用的语音识别引擎去识别电话录音,识别的结果并不足以支撑上层的语义处理任务。这是我们「重造轮子」的主要原因。通用语音识别引擎的识别结果会丢掉很多关键信息,例如一些实体的名称,像公司名称和产品名称之类的,这是用户最关心的一部分内容,但是反而不能被正确识别。我们甚至尝试过用一些规则修改通用识别引擎的识别结果,比如用户的企业名称是「百姓网」,经常被识别成「百姓好」,那么我们可以制定规则把所有的「百姓好」修改成「百姓网」。但是识别模型是不可控的,可能的错误方式有太多了。
另外,从「造轮子」的可行性角度,虽然我们公司创始成员的主要背景是自然语言处理和数据挖掘,但是深度学习这类端到端的算法在不同领域之内有相通之处,而且它大大降低了语音识别的门槛——比如说标注精度就从原来的需要「逐字校准」变成了给出每句的对应文本即可,这就是一个成本和精力上可控的任务了。
机器之心:数据挖掘层的核心技术要点有哪些?
数据挖掘的难点就在于如何结合所有的特征去预测。我们一般从三个层面来考虑这个问题,一是特征工程(feature engineering),二是模型,三是模型的结合(ensemble)。模型层面需要考虑的问题比较少,用分类器解决预测问题已经成为定式,xgboost 等工具已经非常成熟了。所以我们考虑的主要是,第一,怎么样去定义更有效的特征;第二,怎么样去做特征的交叉与结合,使得其表达能力和泛化能力更强;第三,在最后模型结合、调参的层面,把利用不同特征训练出来的模型进行结合。
机器之心:各个行业的「标签」是如何确定的?
每个行业的标签都有所不同,标签是和我们的用户逐步沟通出来的。
用户公司的运营人员会和产品沟通,提供一小部分音频。我们的运营人员在听过录音之后会帮助他们进行设计,而用户也会给出很多需求。
有一些标签能明显地体现出用户的商业逻辑。比如说,在一个竞价排名销售的场景里,用户就要求系统能够区分出「不想花钱」、「价格异议」和「问优惠」。在用户看来,「不想花钱」指代的是完全不想付费、想要免费使用的客户。「价格异议」是一个更为积极的信号,表示客户有支付意愿,只是觉得价格太贵。而会「问优惠」的客户则更为主动,信号更为积极。
机器之心:行业内存在哪些竞品吗?
在美国,公司使用呼叫系统的历史远比国内悠久,普及情况也远胜于国内,因此有一些类似的产品。例如有一家名为 Chorus 的公司,还有 Gong.io (http://gong.io/) 都是针对销售领域的智能对话系统公司,但它们针对的对象通常是视频 demo,在国内,这一类场景还比较少。