
摘要
我们研究了基于检索的聊天机器人在多轮对话中的响应选择问题。现有的方法要么将上下文中的多轮对话串联起来,要么最终将响应与一个高度抽象的上下文向量进行匹配,这可能导致丢失各轮对话之间的关系或重要的上下文信息。为了解决这两个问题,我们提出了一种序列匹配网络(Sequential Matching Network, SMN)。SMN首先在多个粒度级别上将响应与上下文中的每个utterance进行匹配,并通过卷积和池化操作从每对匹配中提取出重要的匹配信息作为向量。这些向量随后按照时间顺序通过循环神经网络(Recurrent Neural Network, RNN)进行累积,以建模各轮对话之间的关系。最终的匹配得分是根据RNN的隐藏状态计算得出的。在两个公开数据集上的实证研究表明,SMN在多轮对话的响应选择任务中显著优于现有最先进方法。
代码仓库
xiaobaicxy/SMN_Multi_Turn_Response_Selection_Pytorch
pytorch
GitHub 中提及
yangliuy/NeuralResponseRanking
tf
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| conversational-response-selection-on-douban-1 | SMN | MAP: 0.529 MRR: 0.569 P@1: 0.397 R10@1: 0.233 R10@2: 0.396 R10@5: 0.724 |
| conversational-response-selection-on-e | SMN | R10@1: 0.453 R10@2: 0.654 R10@5: 0.886 |
| conversational-response-selection-on-rrs | SMN | MAP: 0.487 MRR: 0.501 P@1: 0.309 R10@1: 0.281 R10@2: 0.442 R10@5: 0.723 |
| conversational-response-selection-on-ubuntu-1 | SMN | R10@1: 0.726 R10@2: 0.822 R10@5: 0.960 R2@1: 0.926 |