转载:https://help.aliyun.com/document_detail/64541.html?spm=a2c4g.11186623.6.581.1Qls7S
智能对话平台简介
-
智能语音交互系统(Spoken Dialogue System)架构图
在整个语音交互流程中,对话部分起着承上启下的左右,客户端用户说的话经过ASR转为文本后进入对话系统,在对话系统中通过语义理解和对话决策后,调用指定的内容服务,输出文本内容,再经过TTS转换成语音后返回给客户端上的用户。
-
简介
智能对话平台由两部分组成。
-
基于自然语言理解的问答系统:
问答系统侧重于一问一答,即直接根据用户的问题给出精准的答案,是一个信息检索的过程。需要事先准备好一个知识库,知识库可以包含一个或多个领域,当有用户提问时,会根据用户提问的句子从知识库中找到语义匹配的答案。
-
基于任务驱动的对话系统:
任务驱动的多轮对话是指用户带着明确的目的而来,希望得到满足特定限制条件的信息或服务,例如:订餐,订票,查找音乐、电影或某种商品等。因为用户需求比较负责,可能需要分成多轮陈述,在对话过程中不断修改或完善用户自己的需求意图。此外,当用户陈述的需求不够明确时,机器也可以通过询问、澄清或确认来帮助用户找到满意的结果。学术文献中所说的Spoken Dialogue System(SDS)一般特指任务驱动的多轮对话。
相比问答系统的信息检索,任务驱动的对话系统是一个决策的过程,需要机器在对话过程中不断根据当前和上下文状态决策下一步应该采取的最优动作。问答和对话的根本区别在于是否需要维护用户状态和需要一个决策过程来完成任务。
-
-
多轮对话流程
多轮对话一般由下面四部分组成:
- Natural Language Understanding(NLU):理解用户的意图并提取slots,例如用想找一首歌,就要提取出歌手名、歌曲名、专辑等相关信息。
- Dialogue State Tracker:追踪用户的目标意图和对话上下文信息。
- Dialogue Policy:基于当前状态选择系统下一步的action。例如歌曲名这个slot不存在时,向用户询问歌曲名。
- Natural Language Generator(NLG):将系统的action转化成自然语言文本,或直接配置自然语言文本,任务驱动的多轮对话中,NLG一般由开发者自行配置。
智能对话平台中,对这些概念和流程进行了工程化,隐藏NLU的实现,帮助开发者维护对话上下文信息,开发者只需要关注核心对话决策和要返回的对话结果。该平台采用serverless架构,每个对话决策都映射为一个function,开发者只需在function中拿到当前对话的意图和slots数据,并决定返回什么给用户即可。
流程如下:
- 用户输入句子经过NLU理解为一到多个意图
- 在selection function中对意图进行筛选、排序、修改等操作
- 每个意图会映射到一个dialogue function,在该function中做对话决策处理,并返回本意图的对话结果
- 多个dialogue function的结果会进入ranking function,在这里对多个意图的结果进行处理,并返回给用户的最终结果
其中selection function和ranking function都是可选的。如果selection function为空,当nlu结果里有多个意图时,选择一个默认意图。
-
亮点
-
配置使用简单
提供基于sdk开发对话function或通过web页面配置生成对话两种方式,满足不同用户的需求。
-
函数式编程
sdk采用函数式编程,开发简单
-
本地调试
提供本地debug工具包,可以在本地模拟服务器上的环境,开发完成后再打包上传到服务器。
-
弹性扩容
-
热更新
通过web界面配置的对话或通过sdk开发的对话function有更新时,只需要保持或上传jar包再发布就可以马上生效。
-
丰富的通用场景技能
提供50多个通用场景的技能,如天气、音乐、火车票等,可以直接导入自己的项目中使用。
-
授权后,用户间技能调用
开发者可以把自己开发的对话场景授权给其他人使用,使用方只需要在控制台配置一下别人授权的token,智能对话平台就可以自动调用经过授权的对话function,开发者无需自己调用,只要处理下返回的数据格式就可以。
-
serverless架构
对于一些简单的对话场景,用户无需搭建自己的服务器,节省服务器和运维成本。
-