封闭领域和开放领域
聊天机器人分封闭领域和开放领域,这两个主要从话题层面进行区分,在开放语境下,用户可以和聊天机器人聊任何话题,在封闭语境下, 只能聊机器人设定的话题。
典型方法
- 基于检索式的模型
检索模型所使用的回复通常是预先存储且知道的数据,输入一段上下文内容,和一个可能作为回复的候选答案;模型的输出是对这个候选答案打分。寻找最合适的回复内容的过程:先对一堆候选答案进行打分及排序,最后选出分值最高的那个作为回复。基于生成式的模型
生成模型不依赖于任何预选定义好的响应。经典的生成模型是基于机器翻译技术的, 只不过不是将一种语言翻译成另一种语言, 而是将问句“翻译”成回答(response) 。生成模型可以创新出崭新的未知的的回复内容,不需要预先存储和定义的数据,比检索模型更加灵活多变,更加智能。
Seq2Seq模型是一个翻译模型,把一个sequence翻译成另一个sequence。 其基本思想是两个RNN, 一个作为encoder, 另一个作为decoder。 作为encoder的RNN,用来把一个sequence压缩表示成一个固定大小的向量(fixed-length vector representation)(可以理解为把一段文本进行语义表示)作为decoder的RNN, 根据encoder的vector生成一个token序列,这个token序列就是另一个sequence。优化时, 采用极大似然估计, 让sequenceA被encoder后进行decoder得到的B的概率最大(A和B的长度可以不一样长)
两种模型优缺点
基于检索的模型,“回答集”是人工编写的答案,几乎不会有语法错误,但是无法处理没有见过的问题,即数据库中没有的问题, 同时无法追溯上文中的实体信息,例如上文中提到的人名、地名。
基于生成式模型的约束条件少,过于多变的模型会导致回复中出现一些语法错误和语义无关的内容。生成模型需要海量的训练数据,且难以优化。
目前工业用的较多的还是基于检索模型或者以生成模型作为补充的两者结合。谷歌的Smart Reply 就是一个例子。阿里小蜜结合检索模型和生成模型各自的优势提出了一种新的融合模型, 首先采用检索模型从QA知识库中找出候选答案集合,然后利用带注意力的Seq2Seq模型对候选答案进行排序,如果第一候选的得分超过某个阈值,则作为最终答案输出,否则利用生成模型生成答案。