本文主要是介绍智能客服机器人背后是思考与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
随着人工智能的发展,人机交互技术愈发成熟,应用场景也越来越多。智能客服是人机交互在客服领域的一个应用,服务于客人以及相关的客服人员。本文将介绍智能客服在旅游场景下的主要技术和应用。
当前度假的智能客服主要用于C端(客户端)面向客人,以及客服端辅助客服的两个角色。面向客服端的是智能客服助手,用于对话窗口的侧边栏,提示客服人员当前客人问题的答案,客服人员可视情况来采纳;而面向C端的智能客服则是直接服务于客人,回答客人问题。
智能客服又分为单轮问答的QA Bot和多轮对话的Task Bot,在携程的旅游场景下,以多轮对话的Task Bot居多。一般多轮对话的智能客服系统会切分为以下几个模块:客人的问题(Query)进来后首先经过NLU模块抽象化为客人的意图(intent)以及关键信息槽位(slot),意图及槽位传给DM模块后,经过DST、DPL、NLG模块返回答案。
• NLU(Nature Language Understand 自然语言理解),通过模型或规则的方式获取客人的意图和槽位;
• DST(Dialog State Tracking 对话状态追踪)存储对话状态,包括每一轮对话的意图以及已经抽取到的槽位信息、历史机器人的行为;
• DPL(Dialogue Policy Learning对话策略选取),DPL根据DST传输的内容决策机器人在该轮的行为;
一、NLU
NLU模块基础功能是获取客人的问题的意图及槽位信息,在业务比较复杂的场景,相对应客人可能问的问题维度也会很复杂。如果答案涉及的条件很多的情况,往往单轮的QA无法很好的解决客人问题。因此在度假业务的场景下,多轮次的Task Bot会占大多数。
1.1 错别字纠正
原始语句中难免会出现错字,错字可能会改变最终输出的答案。在识别意图之前首先通过纠错模块对错别字进行纠正。
兼容速度和准确率考虑,纠正分为规则部分和模型部分,度假业务中涉及到的地点比较多,在规则部分就能够覆盖大部分错别字的情况。模型部分首先会经过一个CRF模型输出字级别存在错误的可能性,生成候选集后,通过语言模型计算候选集句子的置信度,重排序得到最终纠正的结果。
• 检查错误模型,主要使用了五种特征向量连接后进入Bi-LSTM-ATT-CRF模型,得到对每个字是否错误的判断。
• 语言模型计算候选集替换为该字的情况在语言模型内的得分,文本转为特征向量后经两层向前和后向前的Transformer,最后全连接计算softmax。
1.2 意图识别
意图实质上是对客人问题的抽象化,比如常见的客人问及“这个产品多少钱?”,可转换为“询问价格”意图。而在直接服务客人的C端上,对回答答案准确率有较高的要求,高质量的服务背后首先是高准确率,而且通常在设计意图前期会存在意图训练语料不足的问题,因此一个高准确率并且弱监督的意图识别模型非常重要。
意图识别模型
意图识别模型整体采用上图的类似matching network框架,每个意图会有一个类别表示,新的query经计算获得其句向量,通过计算和每个类别的相似度得到该客人问题的意图。
当前的意图识别模型,相比于传统的文本分类模型,准确率更高,标注量更少,同时更方便迁移到多意图的情景。在训练阶段,共有已知C个类别,每个类别N个样本,语句经特征向量经过Bi-LSTM层后再通过Transformer-Attention把一句话映射为一条向量,最后经胶囊网络获得每个类别的类别向量。每个训练语句得到句向量后,再通过Bilinear-Function-Sigmoid计算与的相似度得分,最后采用二分类的对数似然损失函数计算损失。
模糊意图的处理
我们研究表明,客人在和机器人对话及与人对话的时候一些行为习惯是不同的。在面对机器人的时候,客人倾向于把机器人作为一个“搜索引擎”,常常输入关键词来获得回答,但关键词的信息不完整,通过模型或模板都无法返回切合的意图。针对于此,我们采用了“联想问”和“猜你想问”的功能来引导客人的提问方式。
• 联想问
客人在聊天输入栏输入问题的同时,显示相关的一些问题以供客人点选,由于是实时显示,对速度的要求较高,这里我们使用的是检索算法计算文本相似度。
我们会为每一个意图人工设置一些用户常问问题,当用户输入的时候,我们会用文本相似度的算法,算出和用户输入最接近的三个常问问题,提示给用户供其选择。
• 猜你想问
对于“猜你想问”功能,主要是处理问句过短的语义不明的情况。举个例子,在签证领域,客人会输入“照片”,而和照片相关的意图有“是否需要照片”、“照片要求”、“照片尺寸大小”等等能够涉及到的十几个意图。在触发“猜你想问”后,会返回4个最关联的问题供客人点选。
在使用“猜你想问”和“联想问”的机制后,可以引导部分客人的用户输入习惯,提升单轮次下信息输入的完整性及纯净度。
1.3 发现新意图
一个新业务线设计意图的时候,不可能把所有会出现的意图都理清楚,而是循序渐进,逐步增加。业务人员本身对业务的熟悉程度可提供新业务线的意图大框架,在小细节上难免存在漏缺,或是因为实时政策的变化产生的新问题。
比如说,在今年六月份大陆禁止发放台湾自由行签证,这段时间就新产生了很多类似于“已办的台湾签证是否还可使用”、“是否还能办台湾G签证”等这些新的客户问题。
层次聚类
我们采用的是对原始问题聚类的方法,把相似句聚集在一起。经过数据预处理后,生成句向量,第一层使用高斯混合得到一个初步的聚类结果,再通过规则判断是否需要再进行一次聚类,随后在第二层使用OPTICS聚类。
在用算法发现意图后,并不会即刻投入使用,而是业务做重审确定,整体上新意图的定位在于辅助业务对意图体系的完善。
1.4 槽位抽取
在Task Bot中,槽位信息抽取主要是服务于检索答案。比如签证一个常见问题“办签条件”,需要确定客人的办签国家、户口所在地、居住地等信息后才能给出最终回答。
有时客人的问题中直接会涉及相关槽位,目前槽位抽取采用的是规则+模型的方式。在实际应用中,规则能够覆盖70%的情况,剩下的则由模型来负责。
在度假业务里需抽取的槽位词有一个明显的层次关系,比如地点-送签地、地点-办签国家、职业-在职、职业-自由职业等,在模型的设计上会先抽第一层,第二层才是对最终结果的二级识别,通过多任务的学习,实际上每一层的任务是在对特征进行自动抽取。
大型的语言模型,比如说今年大热的BERT,在很多NLP任务中大放光彩。在这个词槽抽取任务中,语句中会先经过BERT得到字向量后,第一层经Bi-LSTM-CRF模型得到第一类的结果以及Bi-LSTM的编码结果,会映射为对应的类向量,经、、连接后进入第二层Bi-LSTM-CRF后得到最终的词槽。在加入语言模型后,对于语料比较少以及地点比较多的情况提升会比较大,尤其是一些语料中没出现过的地点,加入语言模型后也能识别出来。
二、对话管理系统
对话管理系统模块主要负责对话状态追踪DST(每轮意图、槽位的存储)、对话策略选取DPL(反问或给出答案)、答案生成NLG。在这部分接收NLU识别的意图和槽位结果,DST把对话状态信息发送给DPL,DPL根据知识库中的规则返回机器人在下一轮的决策(回答问题、反问或其它操作)。
三、智能客服平台
在整体上,智能客服业务和技术的部分是解耦的。业务相关信息的设定和操作都是通过智能客服平台,包括不同业务线的意图和词槽的设定、答案配置、数据审核、测试、标注等。新建一条业务线的智能客服应用,只需要在平台上新建项目,输入设定的意图、对应的语料、必要的槽位和对应的答案。
此外,平台上的答案配置也很灵活,可以是固定回答,可以是知识图谱的schema,可以是外部的接口,或是随不同词槽设定的回复等等。
四、结语
以上是度假人机交互的主要技术和成果,目前我们已经完成了一个智能客服项目落地的闭环,其中还有很多内容可以持续完善,比如多轮的意图识别、更多主动对话的探索等等。
未来的智能客服机器人将往多模态和多语言方向发展,支持语音和图像等模态的解析,支持英法日韩等多国的语言。智能客服还将提供主动服务模式、人机协同模式、群聊功能等多种模式。此外,采用大规模挖掘和生产的方式降低人工标注成本也是未来的主要方向之一。
这篇关于智能客服机器人背后是思考与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!