智能对话机器人的整个框架分为7个模块,但可以

发布时间:2020-06-23 作者:admin 0
一般来说,如上图所示,智能对话机器人的整个框架分为7个模块,但可以根据实际设计的产品功能进行增减。增加或减少的部分主要集中在输入/输出部分,这将在后面详细解释。
01输入/输出
对话机器人认为,对话是一种核心的交互模式,那么基于具体产品是软件还是硬件,硬件是屏幕还是没有屏幕,实际上输入和输出的交互会有细微的差别。
语音输入当然很方便,它突破了手工打字的一些限制,从而扩展了智能产品的使用场景,比如开车时语音地图导航,比如睡觉前语音关灯等。
另一方面,我们必须认识到语音输入本身的局限性:
由于下一步语音识别的技术瓶颈(一方面是远场语音识别的准确率,另一方面是各种方言的准确率),会有一定的识别错误,导致最终结果被推翻,影响用户体验,给用户一种“弱智机器人”的感觉。
语音输入需要特定的使用条件。并非所有用户都能在任何时间和地点以这种交互模式输入语音。用户有需要保护隐私的使用场景。
然而,语音输出的局限性也是显而易见的。一旦机器人的回答技能相对较长,用户等待机器人输出完整的声音肯定要比通过视觉获得同样的信息花费多倍的时间。所谓“一只眼,十条线”就是事实。毕竟,人类已经掌握了通过视觉从大量文本和图片信息中快速获取关键信息的技能。因此,如果您的产品有允许用户操作的屏幕,最好支持多模式输入/输出,如语音、文本和触摸(点击屏幕,完成一些对话场景的信息交互),以适应用户复杂的使用场景,提高用户的使用效率。
当然,在信息输出部分,目前有许多纯软件产品只支持文本和图片等结果的输出,而不支持语音输出。原因可能如下:
信息输出效率低;
基于第一点,一些产品场景不适合语音输出,例如当基于任务的对话机器人的结果更复杂时;
产品实现的复杂性增加了,在语音输出期间是否支持中断,中断后是否需要重新唤醒,最后一次对话的结果是否被保留等等。
总之,在输入和输出方面,可以根据自己的产品场景做出适当的选择。
02语音识别/语音合成
目前,通用智能对话机器人产品可以直接使用主流厂商提供的功能,包括:迅飞、百度、腾讯等。该行业的整体语音识别准确率在数量上没有很大的差异。一般来说,语音识别有两种类型:免费语音识别和付费语音识别。一般来说,免费的语音识别对于身材矮小的用户来说就足够了。对于尺寸较大的产品,只需比较不同的费用。
目前,语音识别可能存在一个问题:大厂的语音识别语料库是基于更广泛的场景。然而,一旦你的产品属于垂直领域,即有一些特殊行业的词汇,一般的识别能力不能被正确识别,从而导致整个过程的识别错误最终反馈给用户错误的结果。
当然,大型工厂也可以定制。目前,也支持用户导入词库,在一定程度上解决了这个问题。同时,大多数厂商还具有语音识别和纠错功能,整体经验是可以接受的。此处不再赘述,相关信息可自行查询。
03自然语言理解(NLU)
该模块是机器人理解用户输入信息的核心模块,即让机器人“理解”用户。它主要分为两部分:意图和缝隙填充。
意图识别需要通过产品需要支持的功能来描述,并且可以识别单个意图或多个意图。例如,如果你是一个简单的天气检查机器人,那么你的意图识别字段是定义用户输入的信息是否是“天气检查”,或者如果你是一个旅行领域的机器人,那么你的意图识别需要确定是“预订机票”还是“预订火车票”或“预订公共汽车票”等。
目前,意图识别所涉及的技术主要分为两类:基于规则的和基于算法的。然而,意图识别的困难在于每个意图的不同表达。例如,如果用户想要“预订机票”,可能的表达式如下:我想订一张机票。
请帮我查一下从北京飞往上海要多少钱。
下周我要出差去检查我的航班。
请查一下5月1日飞往厦门的头等舱航班
仅基于规则很难准确识别用户的各种表情,因此目前主流的方法是“少量规则算法模型”,而更主流的算法模型包括:CNN、LSTM等。
插槽填充是实现目标和意图所需的必要或关键内容。例如,如果目的是识别为“检查天气”,那么要填充的槽是“位置”。机器人需要回答天气,这必须是指定城市或县的天气。此“位置”是必需的[插槽]。然而,如果是“预订机票”的情况,所需的时段包括“出发地点”、“到达地点”和“旅行日期”。但是,如果用户在机票业务场景中说“商务舱”,它可以用作需要识别的非必需实体信息。
04对话管理
一般来说,多轮对话机需要进行对话管理,因为对话是连续的,所以机器人每次回复时,都需要对当前的对话状态给出适当的回复。对话管理分为两个模块:状态跟踪(DST)和策略优化(DPO)。
状态跟踪意味着在时间t  1的会话状态取决于在先前时间t的状态、在先前时间t的系统行为和对应于当前时间t  1的用户行为。因此,确认当前意图和槽信息是状态跟踪的核心,并且有必要知道当前对话状态正在前进到哪个步骤。
策略优化是根据状态跟踪的结果给出机器人在当前对话状态下应该给出的正确答案。
例如,在“订票”的对话过程中,需要根据用户当前不同的对话状态节点给出不同的回复,如下所示:
场景1:
用户:预订机票
机器人:你想在哪里预订航班?
用户:去北京
机器人:你从哪个城市开始?
用户:上海
机器人:你打算什么时候离开?
用户:下周一
机器人:给出机票信息的具体结果
场景2:
用户:我想订一张从上海到北京的机票。
机器人:你打算什么时候离开?
用户:下周一
机器人:给出机票信息的具体结果
从以上两个场景可以看出,机器人给出的回答需要判断用户先前信息给出的状态。如果满足所有要求的[槽]组,将给出最终结果。否则,将需要按照设定的顺序进行查询。当然,也存在用户在对话期间跳出当前意图的情况,例如在机票预订期间询问目的地的天气,然后机器人需要根据现有设置给出回答新意图所需的语音。
05自然语言生成(NLG)自然语言生成是在对话管理之后向用户确认回复内容的过程。目前,大多数产品的NLG模块仍然使用传统的基于规则的方法加上新的基于模型的算法来生成对话。
基于传统规则,例如上面举例说明的“预订机票”的场景,它可以简单地通过规则来实现。然而,如果对话是在开放的领域中进行的,则很难完成基于规则的对话设计,并且基于规则的回答会使用户感到机器人是僵硬和无聊的。然而,该模型产生的语言反应更加多样化,也将在产品层面反映机器人的情感态度等。
当然,自然语言生成在其他应用场景中使用得更广泛,例如写诗、写春联、写文章、生成文本摘要等等,这里就不讨论了。
$(document).ready(function () { $.get("/index.php?s=floating", function(data){ $("body").floating(data); }, 'json'); })