开发者学堂课程【阿里小蜜中的开放语聊技术:多轮问答】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/44/detail/974
多轮问答
基于关键词识别
现在介绍最后一部分的内容,多轮问答。这里的多轮问答并不是利用模型直接给出答案的结果,而是利用问题重写的方式,结合用户的历史问题以及当前的问题,整体的看用户到底表达什么意思,再根据多轮问题重写的结果,利用文本匹配模型,做单轮的文本匹配,从知识库中得到合理回复。
所以重点在问题重写的这一部分,设计出基于关键词识别和问题重写多任务学习的训练方式。
看一下训练方式的简图,左下角是对用户历史问题做语义表示的部分。可以采用不同神经网络的结构进行,例如 RNN 或双向的 STM 等。在此语义表示的基础上做关键词识别的词语分类,识别用户问题中哪些词语是比较重要的用词,可以使用常用的分类模型,例如 CNN ,或是利用序列标注模型进行关键词与非关键词的分别标注。
然后使用用户历史问题的语义表示以及关键词抽取结果的关键词,语义信息作为整体的语音输入,用于生成问题改写的结果,也就是考虑了用户当前的问题,以及上文的历史问题,综合来看用户真正问题是什么。实际上是有两个过程,一个是关键词识别,另一个是问题改写。这里将两个任务放在一起做多任务学习的方式进行,希望利用这种方法得到效果比较好的模型结果。
这里和其他常见的问题重写模型做了简单的效果对比。针对问题改写的常见模型,最常规的 six to sequence ,以及 A4L2016 的一篇文章中有人提出 copy night 模型。
设计了一种词语的 copy 机制,把词语从原来的句子中保留下来,这种靠替代的方法最开始是用来做文本摘要,也可以属于一种文本重写的模型,主要和这两种模型做了效果对比。另外自己的模型也尝试了将关键词识别和问题重写这两个任务进行分别训练的方式。最后为了实验结果验证,提出的关键词识别和问题重写相结合的方法比 six to sequence 和 copy night 的两种模型效果都要好。
关键词识别和问题重写进行多任务学习的方式效果,也是比两个任务单独进行的方式效果好。