自然语言对话系统主要由语音识别、自然语言理解、对话管理、自然语言生成和语音合成五个基本模块构成。语音识别是将语音信号转换成文本信息。目前,在远场(说话人距离麦克风较远)和有噪音的情况下,语音识别正确率仍然不高,这也为后面的自然语言理解带来了一些挑战。为此,需要针对场景进行语音识别的定制优化,或者开发相应的纠错模块。
自然语言理解模块将文本信息转换成结构化的语义表示。自然语言的表达非常多样,同一个意图可以有很多不同的表达方式,比如“怎么截取手机屏幕?”和“如何像电脑一样获取手机桌面?”都表达了截屏的诉求,但是字面上差别很大。“打电话”这样简单的一个意图就至少有上百种不同的表达方式。除了输入本身,自然语言的理解还需要依赖上下文、领域知识和常识。自然语言的表示和理解是发展通用对话机器人的核心问题,而当前并不存在一个“魔法盒子”可以实现通用的自然语言理解。
对话管理由两个子模块构成:对话状态更新和目然语理解行为选择。对话状态更新基于历史对话状态和当前用户输入。行为选择则是基于当前的对话状态决定机器人的下一步行为。在行为选择的过程中除了需要考虑业务逻辑的限制,通常还需要基于外部知识库的查询结果。比如,用户说“帮我订一张明天下午从北京到上海的机票”,对话管理模块需要根据机票数据库的查询结果来决定是订购机票还是告知用户无票。对话状态更新和行为选择之间可能是交替进行的。对话管理本质上是一个决策过程,可以通过人工编写规则来实现,也可以通过数据驱动的统计方法来实现。
自然语言的生成是将机器人的行为转换成自然语言文本,常见的方式有基于规则、模版填充和深度学习的方法。语音合成则是将自然语言文本转化为语言输出。
领取专属 10元无门槛券
私享最新 技术干货