桔妹导读:滴滴是一个让出行变得更美好的公司,语音交互作为出行领域最安全,最自然的交互方式在滴滴内部有着广泛的应用前景,目前滴滴语音交互已经应用在智能外呼,司机端,地图,车机系统多个领域中。语音交互离不开自然语言理解,用户说的每一句话都应该得到正确的理解和反馈,自然语言理解技术让语音助手变得像人一样和用户进行交流。本文主要讲解滴滴语音交互中自然语言理解技术的一些探索和实践。
1.
模块介绍
语音交互在滴滴有非常丰富的应用场景,因为它可以解放双手,让人们在出行过程中更方便,更安全,实现我们美好出行的愿景。目前语音交互已经应用在滴滴司机端,四轮车,外呼等多个业务中。
滴滴语音交互的整体算法框架如下:
图1 语音交互整体流程
下面着重介绍下交互引擎和纠错引擎中用到的一些算法和算法使用中的一些思考。
2.
ASR纠错
▍2.1 概述
2.1.1背景介绍
语音识别结果的纠错是语音理解过程中的一项重要工作。由于受限于语音识别的准确性,语音识别的结果常常会出现错误,这将对语音理解的后续工作造成障碍,增加了语音理解的难度。语音识别结果的纠错可以对一些识别的错误结果进行纠正,从而提高语义理解及后续对话链路的成功率。
2.1.2 研究现状
在ASR纠错任务上,目前学术界主要使用的是端到端模型,输入是原始文本,输出是纠错后的文本。ACL2020的一篇论文[1],通过联合训练基于BiGRU的错误检测网络和基于soft-masked BERT的错误修正网络,预测输入序列每个位置对应的纠正词。另一篇ACL2020的论文[2], 用GCN网络增加了混淆集信息,每个字不仅是它自己融合上下文特征后的embedding,在embedding里也加入了音近、形近字的信息。从上面两篇较新的端到端纠错论文中都有几个共同点,仅使用无任何添加的bert基线模型效果相比其他模型都能独占鳌头,另外再在扩展特定任务上增强数据,性能又能提升一些。但端到端纠错方法同时也存在的问题如下:
模型都需要大量高质量的训练数据保障模型效果;
无法直接更新纠错词库,需要重新训练模型或增加额外模块。
在ASR纠错任务上由于需要的训练数据不够多样,另外在实际项目中的纠错功能需要及时的更新易错词汇, 在工业应用上大多使用的是传统的纠错框架,主要分为错误检测、候选召回、纠错排序等。多个子模型针对性优化,可以快速高效地在多个项目中落地。友商的纠错系统,有的是基于通用领域的纠错,有的是针对文法、拼写错误场景的纠错,有的是面向任务型对话垂直领域的纠错,而我们的是在特定语音对话场景下基于发音混淆的语音识别纠错。
2.1.3 待解决问题
在确定好在实际项目中使用传统的纠错方式后,我们系统地分析了这套纠错系统存在的难点和痛点:
如何高效地检测错误位置和错误纠正?
在实际项目中如何实现可复用?
如何实现纠错效果的持续性优化?
针对以上等问题,我们希望能够搭建一个高效、可复用、可持续优化的纠错系统。
▍2.2 技术方案
2.2.1 基础方案
我们采用分阶段的纠错架构,来解决任务型语音交互中的识别错误问题。纠错系统主要有三个模块组成,分别是错误检测、候选召回和候选排序。纠错系统的最终输出,可以用于后续链路的解析处理。
图2 纠错整体框架
2.2.2 错误检测
根据语音识别的评价指标,语音识别项目中的错误分为3种类型,分别是替换错误、删除错误和插入错误,其中替换错误占70~80%左右。这里的错误检测主要针对的是发音相同或相似的替换错误。使用的方法是利用识别的混淆集和关键词构建AC自动机,将待纠句子的音节序列来寻找适配的热词。
图3 纠错技术方案
混淆集的构建:基于识别结果和标注文本进行对齐得到混淆字对,对应的不同音节则视为发音混淆集。当然由于识别结果中删除错误和插入错误的存在,获取的混淆集并非可能性都一致。此处不同发音混淆集的概率由出现的频次来决定,概率和门限值均是经验值。
AC自动机构建错误检测网络:以关键词表的音节作为模式串,如yu shi ju jin, yu ren wei shan, ju jing hui shen, shan gu作为模式串,以音节为单位,在初步的图网络上再创建fail指针。