对话系统分类
按应用领域分类
- 任务导向对话系统闲聊对话系统
按回复生成方式分类
- 检索式对话系统生成式对话系统检索式+生成式对话系统
任务导向对话系统

以订票为例,我们需要收集的信息有出发地、到达地和出发时间。对话系统需要从用户那里收集到这些信息,才能说通过调用订票系统接口进行订票。 这些需要的信息,我们称为对话状态(Dialogue state)。因为涉及到状态的转化,我们很难通过用户的一句话就收集到所有信息,通常需要多轮对话。
比如用户说“帮我订一张去北京的机票”,我们只能获取到到达地信息,我们需用向用户提问来获取其他信息。
出发地
到达地
出发时间
到达地
到达地
这里假设想询问出发时间,选择“请问您什么时间出发”。然后继续整个过程,直到收集到所有的槽值。
闲聊对话系统

我们主要来学习任务型对话系统。
下面我们回顾一下实现对话系统所需要的基础技术。
首先我们看一下在深度学习兴起之前,我们一般会遵循的流程。
NLP Pipeline

值得一提的是,上面的标准化一般用于英文,比如将单词的过去式、将来式等提取成一个能表示该单词的部分。
NN

神经网络由线性运算和非线性激活函数组成。
注意,这里并不会对基础网络做过多介绍,如果想深入了解,推荐从零实现深度学习框架。
Word2Vec

TextCNN


RNN

由于仅使用一个状态来做这件事情有点困难,后来就出现了LSTM通过多个状态和一些门控来简化这个操作。
Seq2seq

Seq2seq模型解决了从一个序列映射到另一个序列的问题,常见的应用由机器翻译、文本生成、摘要生成等。
具体来说由编码器和解码器组成,编码器接受输入序列,解码器根据编码器得到的编码生成输出序列。
Attention

Seq2seq模型由一个问题,不管多长的序列它都编码成定长的向量,这样总会有一些信息丢失。而注意力(Attention)机制的提出,可以让我们在解码的过程中,有机会注意到输入序列中的每个单词。比如翻译“I”的时候应该需要看到“我”。
Transformer


经过Transformer模块,可以把输入表征序列转换为更强大的另一种输出表征序列。