博舍

语音助手——指令型(任务型)助手架构和设计 智能语音助手有谁设计的

语音助手——指令型(任务型)助手架构和设计

    这一章我们来一起看一下语音助手中,指令型(任务型)助手的整体架构和设计。

一、指令型助手的应用场景

    在这里,如果助手的作用是帮助用户实现某些操作,比如:语音定闹钟,语音听歌,语音导航等等,那么实现这一类任务的助手我们叫做指令型语音助手,即用户通过语音来下发某些指令,助手根据指令进行操作,从而实现解放双手,快捷操作的目的,比如下面的几个例子:

       

二、指令型助手架构和设计

    我们在前面章节《语音助手整体架构和设计》中有讲到,指令型助手中各个垂类作为BOT的形式存在,BOT内自成一个小周天,各个模块皆具备,如下图则为一个BOT的整体架构和设计:

     如上图,在BOT中存在各个worker,分别负责处理不同的任务,worker之间不直接通信,而是通过DataBus来进行数据传递,因此,worker与worker之间是完全相互独立的,只需要满足DataBus中的接口定义,即可实现数据传递,这样的设计,可以使worker可以独立迭代,分模块开发。

    下面来分开看下各个worker的作用:

1、基础语义理解

    这里的基础语义理解,指的是对于输入query的一些基本处理,比如NER、句法分析、分词、场景分类,纠错等等,这一步一般由外部的DM中公共模块处理,传入到BOT中。

2、history_session_worker

    此worker主要用于处理历史信息,包括获取全局对话历史信息,该BOT相关历史信息等,一般如果是开放式多轮,则需要全局对话历史信息,如果是封闭式多轮,则一般需要该BOT相关历史信息。

3、qu_worker(BOT内)

    此worker和外部DM中的qu模块有区别,外部的qu模块用于处理基础语义理解,其识别的内容会无差别的共享给各个激活的BOT,而BOT内部的qu_worker则专门处理该worker特有的qu信息(如果需要的话),举个例子,如果有个针对闹钟场景的query改写,则在这里生效。

4、scene_identify_worker

    此worker一般是多分类或者二分类,我们之前说过,每个BOT需要具备“识别进入的query是否属于该BOT”的能力,因此该worker主要实现的功能为排除掉不属于该场景的query,DM中的场景分类模型重召回,因此对于部分BOT间模糊的话术会误召回,此时该worker中的分类则需要重准确,能够提高准确率。当然,除了这个功能外,也可以实现为多分类,为下方的worker提供信息。

5、intent_entity_worker

    此worker主要用于识别意图,提取槽位,其内部实现可以根据BOT类型来实现,一般来说有几种:模板、模型(意图槽位模型)、模板+模型、语义角色标注等等。

6、context_association_worker

    此worker用于实现多轮会话的能力,一般包含:封闭式多轮即槽位询问,开放式多轮即语义顺承、省略补全、指代消解,脚本式多轮。

7、NLU_postprocess_worker

    此worker用于对语义内容进行后处理。此worker之前(包含此worker)的内容,我们都划分为语义层,即这里识别的内容都为纯语义的结果,即query本身具备的语义。区别与下方的技能层,有时根据产品需求,需要将部分语义执行特殊的技能,比如:query:“搜索洗面奶”,该query的语义为“搜索物品”,如果此时物品为商品,则需要执行购物技能。如果直接将该query划分给购物的语义,和“在淘宝中购买洗面奶”同等处理的话,则可能造成该BOT的误召回。

    因此,将query根据语义进行划分,每种不同类型的语义可以分别迭代效果,以及根据不同语义针对性的进行一些处理,比如上面的例子,如果query为“搜索xxx”,则需要结合知识图谱判断“xxx”是否为商品,如果是商品则走购物,否则走百科;如果query为“在淘宝中购买xxx”,则不管“xxx”是什么,都需要走购物。

    该worker中,一般实现实体消歧、实体校验等语义层面的后处理。

8、skill_worker

    这里进入了技能层的第一个worker,即将语义结果映射为技能,这里一般会维护一个映射表,映射语义-技能。

9、skill_rank_worker

    这里实现BOT内不同skill之间的排序,举个例子,在地图BOT内,query:“xxx在哪”,此语义会映射为两个技能:1、“在地图中搜索xxx”。2、“出百科卡片显示xxx的介绍”。这两个技能会根据"xxx"的类型进行排序,如果“xxx”为景点,则出技能2,如果“xxx”为普通地点,则出技能1。 

10、skill_postprocess_worker

    这里实现对于skill的后处理,比如query:“今天天气怎么样”,在识别到语义并映射为“查询天气”技能后,可以在此worker中访问天气服务器,获取天气信息,封装为卡片的形式,下发给客户端。

11、nlg_worker

    这一步一般用于生成nlg话术,在技能型BOT中,一般nlg都是基于模板配置的,根据slot、intent以及context信息,不同的组合生成不同的回复话术。在闲聊BOT或者问答BOT中,此worker可以替换为生成模型或者检索模型来生成回复。

    一般推荐内容也在这里获取,比如:query:“今天天气怎么样”,获取推荐内容:“明天呢”、”今天适合穿什么“等

12、execution_worker

    这里主要用于最终的结果封装,封装为结构化的数据,返回给外部的DM。

三、写在后面

    上述的架构形式,可以实现将BOT内各个环节细化、分解,各个worker之间相互独立,可以由不同的负责人独立负责开发、升级。同时BOT与BOT之间也相互独立,可以独立升级,个别worker或者BOT错误,不一定会影响全局的结果(注意这里是”不一定“,即在一定程度上提升了系统的鲁棒性,但是可能会导致最终结果不是最优的)。

    由于各个worker之间相互独立,只通过data_bus进行通信,因此理论上可以设计为通过RPC或者http的形式通信,这样就可以真正实现worker的独立升级。但是这样会增加网络开销,可能导致系统性能降低。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

市场上的智能语音助理,主要的工作原理是什么

一个包括语音交互的chatbot的架构如下图所示:

一般chatbot由语音识别(ASR)、语音合成(TTS)、自然语言理解(NLU)、对话管理(DM)、自然语言生成(NLG)几个模块组成,其中:

语音识别:完成语音到文本的转换,将用户说话的声音转化为语音。

自然语言理解:完成对文本的语义解析,提取关键信息,进行意图识别与实体识别。

对话管理:负责对话状态维护、数据库查询、上下文管理等。

自然语言生成:生成相应的自然语言文本。

语音合成:将生成的文本转换为语音。

通常智能助理一个完整的交互流程是这样的:

首先:音频被记录在设备上,经过压缩传输到云端。通常会采用降噪算法来记录音频,以便云端“大脑”更容易理解用户的命令。然后使用“语音到文本”平台将音频转换成文本命令。通过指定的频率对模拟信号进行采样,将模拟声波转换为数字数据,分析数字数据以确定音素的出现位置。一旦识别出音素,就使用算法来确定对应的文本。

然后:使用自然语言理解技术来处理文本,首先使用词性标注来确定哪些词是形容词、动词和名词等,然后将这种标记与统计机器学习模型相结合起来,推断句子的含义。

最后:进入对话管理模块,确认用户提供的信息是否完整,否则进行多轮对话直至得到所需全部信息。根据得到的信息进行相应的业务处理,执行命令。同时将结果生成自然语言文本,并由语音合成模块将生成文本转换为语音。在这些模块中,对话管理(DM)模块的首要任务是要负责管理整个对话的流程。

通过对上下文的维护和解析,对话管理模块要决定用户提供的意图是否明确,以及实体槽的信息是否足够进行数据库查询或开始履行相应的任务。

当对话管理模块认为用户提供的信息不全或者模棱两可时,就要维护一个多轮对话的语境,不断引导式地去询问用户以得到更多的信息,或者提供不同的可能选项让用户选择。

对话管理模块要存储和维护当前对话的状态、用户的历史行为、系统的历史行为、知识库中的可能结果等。当认为已经清楚得到了全部需要的信息后,对话管理模块就要将用户的查询变成相应的数据库查询语句去知识库(如知识图谱)中查询相应资料,或者实现和完成相应的任务(如购物下单,或是类似Siri拨打xx的电话,或是智能家居去拉起窗帘等)。

实际实现中,对话管理模块因为肩负着大量杂活的任务,是跟使用需求强绑定的,大部分使用规则系统,实现和维护都比较繁琐。

规则的描述主要基于正则表达式或者类似正则表达式的pattern,用户的问题匹配到这样的pattern上,从而取得答案结果。

使用规则的好处是准确率高,但是缺点也很明显:用户的句式千变万化,规则只能覆盖比较少的部分。

而越写越多的规则也极其难维护,常常有可能会发生互相矛盾的规则,而往往一个业务逻辑的改动就要牵一发而动全身。另一个方法是维护一个庞大的问答数据库,对用户的问题通过计算句子之间的相似度来寻找数据库中已有的最相近的问题来给出相应答案。

目前任务导向chatbot也在逐渐使用基于深度学习的端到端来实现架构。

简要来说就是将用户输入的内容直接映射到系统的回答上,但是这种方式也存在需要大量的训练数据的问题,还不能完全取代传统规则系统。人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:人工智能快速发展的今天,语音识别现在发展到什么阶段了?http://www.duozhishidai.com/article-2278-1.html智能语音技术,主要面临哪些挑战?http://www.duozhishidai.com/article-1927-1.html语音的识别过程主要分哪几步,常用的识别方法是什么?http://www.duozhishidai.com/article-1739-1.html

多智时代-人工智能和大数据学习入门网站|人工智能、大数据、物联网、云计算的学习交流网站

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇