AAAI 2019 | 采用聚类集束搜索机制的知识对话系统
DSTC7 Track 2「Sentence Generation」任务要求基于 Fact 和对话历史自动生成回答。该任务它要求利用端到端的对话系统自动读取 Fact。这就像使对话系统具备阅读理解的能力,能够基于 Fact 产生正确的答案。文章《Cluster-based Beam Search for Pointer-Generator Chatbot Grounded by Knowledge》以pointer-generator为基础,在解码时采用了聚类集束搜索机制,提高了模型生成句子的丰富性,在DSTC7中拿下Sentence Generation任务冠军。
论文地址:
http://workshop.colips.org/dstc7/papers/03.pdf
引言
Pointer-Generator机制可以从历史会话和知识语料中直接提取有用的信息,该文采用这种方法在对话生成中解决OOV问题并进行知识提取。通过将聚类机制引入到beam search解码过程,提高了模型生成回复的丰富性,最后通过语言模型过滤掉在回复中经常出现但无意义的结果。
数据集
本文数据集为DSTC官方在reddit社区上抓取的300万对话问答,以及从 reddit 网页上相关的网页中提取的 2 亿个句子。经该文作者处理后,共组成1426601组对话的数据集,其中训练集大小为1408951,验证集大小4542,测试集大小为13108.每个句子的长度为8到20个token。
模型
整体架构
模型的整体架构如下图1,采用端到端的编码器解码器架构,编码器部分对对话中的Conversational history和Fact Extraction分别采用bi-LSTM模型编码。解码器部分在beam search时做K-means聚类处理,然后通过N-gram语言模型去除重复token,最后用N-gram Language Model过滤掉语义上无意义的safe response。
图1 模型整体架构解码器结构
模型的解码器结构如下图2,主要包括三个部分:
(1)对Conversation history和Facts进行Attention计算;
(2)模式预测,即解码器预测分别从history copy、从fact copy、直接generation的概率,下式中m表示三种模式的编号;
(3)输入词的概率估计,将(2)中的模式预测与每个token在每个模式下的概率进行插值计算,得到总的概率;
图2 解码器结构图聚类集束搜索
如图3所示,解码进行beam search时,算法将扩展的候选集
图3 聚类集束搜索算法流程进行聚类操作,然后分别选出每一类的BS/K个候选集作为新的候选集数据,之后分别经过语言模型去重和过滤safe response,然后选出最好的一个候选句作为解码结果。
实验
本文共对比了三个官方提供的baseline模型和比赛中其他两组模型、以及自己的两个模型(含聚类集束搜索、不含聚类集束搜索),衡量指标也分为机器评价、人工评价两大组。
机器评价用了NIST-4、BLEU-4、Meteor评价结果的相关性,并用Entropy-4、Div-1、Div-2评价结果的丰富性,如下表1所示,结果显示该文模型具有最好的相关性结果;
表1 机器评价结果人工评价由三个人分五档进行评分,分别给出六组模型的平均得分和95%置信得分区间,如下表2所示,结果显示该文模型具有最好的丰富性,并且综合得分也排名第一;
表2 人工评价结果结论
1)本文将pointer-generator的copy机制引入到知识对话生成模型中,模型成功地结合了上下文和外部知识生成回复,生成的结果具有较好的知识相关性。另外聚类、语言模型等机制的引入,较好地处理了生成结果的丰富性问题。这两点都对知识对话系统的构建具有借鉴意义。
扫码识别关注,获取更多新鲜论文解读