从实现的角度,目前有三种类型
第一大类是一种用状态机,或者和状态机类似的填槽方式。这种方式的主要特点是将整个的对话过程抽象成一个有限状态机,每一轮对话,或者每几轮作为一种状态,随着对话状态的进行,这个状态机在不断的迁移,最终对话结束,状态机也结束。这里面的所有状态,以及所要执行的动作都是事先约定好的,所以状态机它比较适合一些场景简单的对话,对于场景复杂的对话,状态机这种方式就已经不太适应了。
第二大类就是马尔可夫决策过程(Markov Decision Process, MDP)的方式,它和状态机的区别在于它里面增加了动作,状态机里面的动作是我们事先约定好的,是固定的动作,已经事先知道对话到了那时候,于是就固定的采取这样的动作,但是 MDP 这种方式,状态不确定,动作也不确定,所以说我的状态和动作是需要根据我的上一个状态和将要采用的动作做了以后的回馈(Reward)来进行决策的,所以说这个决策过程在特定领域里有足够的语料的时候可以做出很好的效果,但是我们得想办法去找到合适的领域,以及找到足够的语料才能做这样的事情。
最后一类是端到端的模型。端到端的模型主要出发点是:我有一个问题,把问题输入到一个模型里面之后,这个模型是帮我解决了我们之前整个对话过程所有流程的所有问题,而这个模型是需要从数据里面去学习,包括自然语言处理、意图识别,包括整个系统里面方方面面的各种东西都要学习到。这个模型对于我们来说它是个黑盒,我给它一个问题,它也能给我答案,我并不需要仔细的去研究里面是怎么做得,我只需要设计训练这么一个模型就行了。
这三种方式是现在的比较常见的三类对话技术,第一大类,像状态机和填槽这一类是商用系统的主流;第二大类是学术界的主流,但是工业界也在积极的尝试,有的也已经落地,或者接近落地;端到端这种模型,主要还是停留在学术界的研究阶段,我并没有看到哪一个商业系统已经做到了端到端的模型的产品化,还没有成为商用主流的技术。