本文将介绍 AAAI 2018 中的五篇关于应答生成方面的论文,希望对大家有所启发。
写作动机
作者认为,虽然之前的论文对多轮对话的层次结构进行了建模,知道应答的生成应该考虑到上下文(context)信息,但是却忽略了一个重要的事实,就是上下文中的句子(utterance)和单词(word)对应答有着不同分量的影响。
所以,作者提出了一种层次化的注意力机制来对多轮对话中不同层面的影响进行刻画,分别是句子级注意力机制(utterance level attention)和单词级注意力机制(word level attention)。
具体模型
写作动机
作者认为,在基于检索的应答生成场景中,加入社会常识可以改善检索结果的质量。
具体模型
上图表示一个常识库。它是一个语义网络,concept 是它的节点,relation 是它的边,三元组 <concept1,relation,concept2> 称为一个 assertion 。
问题定义
x 是一个message(context), [y1,y2,...,yK]∈Y 是一个应答候选集。
基于检索的应答生成系统就是要选出最合适的,其中 f(x,y) 是衡量 x 和 y 之间的“相容性”的函数。
那么,如何将常识库融入我们的问题定义中呢?
以上图为例。首先,事先定义好一个 Assertion={c:
然后,论文里又定义一个 Ax ,表示所有与 message(context)x 有关的 assertion 三元组。
这个 Ax 的建立规则是:对 message 文本 取 n-gram(所有uni-gram,bi-gram,...,n-gram)短语,然后从 Assertion 词典选取那些与 n-gram 短语匹配的 key 所对应的 value,加入到 Ax 中。
至此,我们就得到了所有与 message 有关的常识。
Dual-LSTM Encoder
上图中下面的方框。利用 LSTM 结构对 message x 和 response y 进行编码,得到和向量,计算两者之间的“相容性”。
Tri-LSTM Encoder
上图中上面的方框。因为 c1 和 c2 都有可能是几个单词通过下划线连在一起的concept,所以我们将 c1 拆成 [c11,c12,c13,...] , c2 拆成 [c21,c22,c23,...] ,至于为什么不拆 relation?因为 concept 是由多个常见词连接起来的单词,如果将这个合成词直接作为词典中的单词,那么词典将会很大,而 relation 则没有几种。
最终,三元组
最后,将两个 Encoder 的“相容性”值加起来,最终选择总和最大的 response。
写作动机
作者认为,以前的生成模型在生成单词时,模型需要遍历整个词典。如果词典非常大,那么每次遍历都非常耗时。所以,作者提出,每次生成单词时,都可以根据输入的情况灵活地选择需要遍历的词典的大小以及它里面的词,这样将可以节省大量时间。
具体模型
问题定义
那么又是怎么得到呢?
>>>>阅读全文