《Proactive Human-Machine Conversation with Explicit Conversation Goals》

论文出处:ACL 2019

1. 摘要

论文提出了一种基于知识图谱能主导对话的对话系统,并开源了对应的数据集DuConv。该数据集涉及电影、导演和演员相关题材,包含3w个多轮对话,约27w个句子。每个对话包含一个目标三元组[START, TOPIC_A, TOPIC_B],表示系统的目标是将对话主题从A引导到B;另外包括一系列跟TOPIC_A或者TOPIC_B有关的知识三元组,形式为(主体,谓词,客体),表示主客体之间的关系,比如(张艺谋,导演,红高粱);然后包括多轮对话。数据示例如下(文末附json格式的示例):
《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第1张图片

2. 模型

论文提出了基于检索和生成的两种模型。

2.1 检索模型

检索模型的整体思路是对每个对话先筛选出n个候选句子,然后使用模型对这n个候选句子打分,选出得分最高最高的句子,作为最终的目标句子。因此分两个主要步骤,一个是筛选得到候选句子,第二个是打分。现在分别介绍:

  • 筛选候选句子
    整体思路是使用知识中的slot(谓词)对每个对话的句子提取模板,并且抽取每个对话的domain,然后相同domian对话的句子就可以共用一个模板池,最后生成候选的时候只需要将模板的slot填充成该对话相应的知识既可。以附录示例为例详细步骤如下:
    步骤如下:
    1) 抽取知识库的slot,即(s, p, o)三元组的p,并且命名为topic_a_KaTeX parse error: Double subscript at position 14: {p}(或者topic_b_̲{p})的形式,比如"topic_a_票房",存在一个slot字典里。
    2) 上述slot名为『领域』的同时也为domain,抽取每个对话的两个topic的domian,分别为domain_a, domian_b,比如domain_a=『电影』,domain_b=『明星』。
    3) 对于每个对话session的每轮bot的对话,如果句子的子串命中了知识库的o,则将该子串替换为对应的slot。比如『特别 是 主演 林志玲 很好看,网友 都 说 她 是 两岸 男人 的 唯一 共识』替换后变为『特别 是 主演 林志玲 很好看,网友 都 说 她 是 topic_b_评论』。然后将替换后的模板放入KaTeX parse error: Expected group after '_' at position 11: {domain_a}_̲{domain_b}_${轮次}作为key的字典candidate_set_gener中(每个key对应一个模板列表)。这次替换只替换slot,然后再只替换topic后 的模板放入另一个字典candidate_set_mater中。
    4) 完成整个语料候选集合构建,下面对于单个对话,找到起对应的候选集合。
    5) 抽取对话两个topic 的domain以及要预测的句子的轮次,抽取该轮对话知识库中的slot
    6) 根据两个domain和轮次找到相应的模板池,shuffle后,使用该轮对话的slot对模板中的slot进行填充既可得到一个候选,重复直到达到k个。这里先使用candidate_set_gener的模板池,不够再用candidate_set_mater,如果还不够就随机从整个模板里抽取,不在考虑domian和轮次的映射。
  • 对候选rank打分
    模型图如下:
    《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第2张图片
  1. 首先对上下文sourceX和候选targetY编码,类似于transformer中对句子对编码,其中sourceX为所有上下文句子的拼接,句子之间使用[INNER_SEP]连接,如果上下文为空,则置为[START]符号,编码得到xy(这里取最后池化层的结果);
  2. 对知识库和goal使用Bi-GRU编码,三元组(s,p,o)使用空格拼接,两条知识之间使用[KN_SEP]连接,两条goal之间使用[PATH_SEP],goal和知识之间使用[SEP]编码。查看源码并没有对每条知识分开编码,而是将所有知识拼接到一起一起编码输出,所以图(a)中k1、k2、k3应该是token级别,而不是知识级别(有错误欢迎指出)。
    3) 将xy和kc拼接放入mlp做个二分类既可。

2.2 基于生成的模型

架构图如下:
《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第3张图片
模型对上下文和goal一起编码(序列拼接到一起编码),对知识和当前轮的y一起编码,这里两个编码器都使用RNN编码。在训练时,有三个loss,分别为先验分布和后验分布的kld散度,预测的词的交叉熵loss和BOWloss(即用知识直接预测真值的概率)。在预测时,不计算后验概率,类似于机器翻译。
后验概率使用完整的response句子编码结果和x拼接后过MLP层,与知识计算attention。
这部分结构参考:论文

3. 结论

两种模型的结果为:
《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第4张图片
在针对该任务的竞赛中,top3 的成绩为:
《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第5张图片

  • F1:评估输出回复相对于标准回复在字级别上的准确召回性能,是评估模型性能的主指标。

  • BLEU: 评估输出回复相对于标准回复在词级别上的性能,是评估模型性能的辅助指标。

  • DISTINCT:评估输出回复的多样性,是评估模型性能的辅助指标。

附录

json格式的数据示例
《Proactive Human-Machine Conversation with Explicit Conversation Goals》_第6张图片

你可能感兴趣的:(对话系统)