从对话系统到智能问答产品(一):对话系统简介

自从计算机问世以来,如何更好的进行人机交互,一直都是人们非常关注的。最好的人机交互方式,莫过于能让机器也像人一样来交流沟通。问答系统的学术价值和商业价值都是非常有诱惑力的。这也是对话系统这么多年来,无论是学术界还是工业界,都非常受关注的原因。对话系统的发展已经有几十年的历史了,随着深度学习,知识图谱的兴起,对话系统也变得越来越聪明。

从对话系统到智能问答产品(一):对话系统简介

近年来自己也一直在从事关于知识图谱相关的工作,问答系统是知识图谱的一个重要应用,因此接触过多个对话系统相关的项目和产品。所以打算结合自己的经验和一些业界的典型案例,来系统的做个对话系统关键技术的梳理,以及对市面上常见的智能对话产品实现方式介绍。

一、对话系统的分类

对话系统按照不同的分类标准,有不同的分类方式。一般而言,大家习惯于按照问题的类型来做分类。主要可以分为三类:基于任务的问答系统(Taskbot),基于知识的对话系统(QA Bot),闲聊系统(Chat Bot)。

1、基于任务的对话系统(Task Bot)

基于任务的对话系统,核心是通过执行某个指令,来完成一个具体的任务。比如要订餐,要打车,要买机票。就是用户有个很明确的意图,希望系统能帮他们实现。基于任务型的对话系统通过识别用户的意图,并通过跟用户的多轮对话,去澄清,追问,推荐问等方式来获取该意图下,所有必须的信息。这些信息作为指令的入参,执行调用相关指令或api,完成任务执行。

2、基于知识的对话系统(QA Bot)

基于知识的对话系统,解决的问题场景是:用户想要获取某些具体信息,用户想要知道某个知识问题的具体答案。系统直接给出答案或者返回用户想要的信息或资源。比如常见的问题形式:周董的老婆是谁?中国大于2000万人口的城市是哪几个?帮我找一下中信证券2019年人工智能行业的行研报告。

3、闲聊系统(Chat Bot)

没有明显的意图,多为开放式的聊天。例如,我论文答辩没有通过,好难受呀。

二、对话系统的架构

从对话系统到智能问答产品(一):对话系统简介

上图是一个通用的问答系统的架构图。问答系统主要包含4类模块:

语音模块(语音识别,语音合成):现在语音技术已经是比较成熟的技术了,加入语音识别模块,用户可以直接说话,通过语言识别转化成文字,输入到系统中。语音合成,就是将文字以人声的形式说出来。

语音模块其实涵盖的领域也很多,包括声学,信号处理,端点检测,特征提取,同时也会用到NLP相关的技术例如语言模型。该领域目前已经有成熟的解决方案,也有基本是几大巨头垄断。实际项目中大部分直接采购。但是由于实际人们说话的语音语调,发音的标准度不同,汉字的同音字问题,用户识字错误等问题的存在。实际应用中,经过ASR处理后的文本,还是要进行进一步的预处理。这部分我们在NLU模块具体说明。

语言模块(自然语言理解,自然语言生成):

语言模块是系统的核心模块,自然语言理解(NLU)主要是实现对用户问题的精准理解,在精准理解的基础上,才能做出正确的判断,给予正确的回复。自然语言生成是将答案以一种合理的用户体验良好的方式进行包装呈现。

对话管理系统(对话状态追踪,对回复策略生成):

一个综合的对话系统一般都是会涉及到多轮对话。对话管理系统内,可以加入大量的规则引擎,来应对一些复杂的,特殊的问题。

对话系统后台和知识(任务型,知识型,闲聊型):

任务型,知识型,闲聊型,一般分成不同的模块,根据NLU和DM的系统的处理,根据具体问题类型,灵活的调用。

接下来,重点的讲一下语言理解(NLU)模块和对话管理系统。

三、语言语义理解模块

语言语义理解模块,主要是利用自然语言理解相关技术,去理解用户的query。输入是经过ASR转换后的文本,输出是经过机器“理解”后的文本。那到底什么是自然语言理解呢?自然语言理解是NLP的一个分支,简单的说就是让机器也能像人一样,去理解人类的语言,让机器听懂人话,是一类方法,任务的总称。人类可以理解文字的意思,但是对机器来说,这些文字不过是一堆字符串。NLU这块儿,我会单独的写一篇来具体说明一下,相关的任务和技术。这里就先大概的写一些在问答场景中,语义理解模块一般做的事情:

query预处理:

问题纠错,改写。用来对asr输入的query做进一步处理。

实体识别:

识别query中的具体实体,所谓的实体识别就是让机器能理解这是现实世界的一个事物,而不是一个单纯的字符串。

实体链接:

将识别的实体,通过消歧等处理,正确的链接到知识图谱对应的实体上。

角色标注:

利用预先定义好的角色,为关键词,或实体做的标注。例如我想要买一部[苹果:公司]手机。这里“苹果”被识别,并做了标注。

意图分类:

识别句子的意图。例如,帮我订一下去深圳的机票。 这个就是一个“订机票”的意图。

上面提到的是一些一般任务,在具体的应用时,会根据情况做相应的增删。后面会针对,具体的问答类型,做具体的说明。

四、对话管理

对于多轮对话的场景,对话管理系统就是一个必要的模块。尤其是基于任务型的对话系统中,大部分都是多轮对话。因为用户其实很难通过一句话把自己所有的需求都讲清楚,甚至都不知道哪些信息是一定必须的。所以基本要经过多轮陈述。

1、对话管理系统类型

• 系统主导

系统询问用户信息,用户回答,最终达到目标。一般用于,任务型的对话场景中。

• 用户主导

用户主动提出问题或者诉求,系统回答问题或者满足用户的诉求,一般在知识型问答系统,例如智能客服。

• 混合

用户和系统在不同时刻交替主导对话过程,最终达到目标。

2、DM基本模块

从对话系统到智能问答产品(一):对话系统简介

• DST(dialog state tracking)

维护 & 更新对话状态。当前轮的状态是由“上一轮的状态”和“上一轮系统行为”+此轮用户行为决定的。

• DP(对话策略)

系统可以根据当前轮用户动作和历史的对话状态来做出相应的动作,决定下一步是去澄清意图,执行操作等等。后续NLG模块也会根据DP模块输出的对话决策来决定回复内容。

总结

本文简单的介绍了对话系统的基本分类和通用的工作流程和架构,以及一些重点模块介绍。后面我会具体的介绍每一类对话系统。

业界动态

B端产品中Web端表单如何设计

2020-7-30 16:17:59

业界动态

产品经理如何推进产品版本升级?

2020-7-30 16:36:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索