©作者 | 叶哲宇
单位 | 携程旅行网-帝国理工学院
研究方向 | 文本生成&机器问答
在多轮对话问答,端到端对话聊天机器人等多个场景下,不完整的句子在现有框架下的处理显得尤为棘手。句子的不完整性可以体现在:1. 指代词(9coreference),使得语句语焉不详指代不清,没法在上下文缺失的情况下就单一句子理解含义;2. 省略词(ellipsi),导致句子成份缺失,上下文背景信息不完善。如何解决这两个问题也引发了学界业界的广泛研究探讨,从而衍生出两个子任务 Coreference Resolution 和 Information Completion。
上述两个子任务可以统称为 Incomplete Utterance Rewriting(IUR),目的是将不完整的话语改写成语义等价但独立于语境的话语。这篇文献综述选取了近年来比较有价值的一些(23 篇)相关工作,做了简要梳理,包括相关公开数据集,模型构造方法等。
EMNLP 2019 [1]
关注于解决 Question Answer 任务中的 Coreference 和 Ellipsi,引入了基于上下文的问题改写任务(Task of question-in-context rewriting),文中又称 de-contextualization。
We introduce the task of question-in-context rewriting: given the context of a conversation’s history, rewrite a context-dependent into a selfcontained question with the same answer.
从 QuAC 数据集中提取了40,527个 questions,构造了 Context Abstraction:Necessary Additional Rewritten Discourse(CANARD)数据集。
从下表中可以到人类对模型表现的对比(BLEU scores),这仍然是一个难度较高且值得去探索的任务。
COLING 2016 [2]
这篇 2016 年的文章指出 Question Answering(QA)system 当中 non-sentential(incomplete)的问题。然而上下文缺失的情况下这些问题很难被问答系统很好的理解,因此需要 QA system 借助历史对话数据来还原这些 non-sentential utterances(NSU),从而可以更好地理解用户的意图。
实验数据集无论在当时还是现在看来都是比较小的,只包含了 7220 段对话, 其中每段对话包含先前的问题(Q1),先前的答案(A1),NSU question(Q2),and 改写后的句子(R1),如下图所示:
模型层面,使用了 RNN-based encoder-decoder 网络结构,并分别设计了 Syntactic Sequence Model 和 Semantic Sequence Model 来学习语言和语义表征信息,并通过一个集成模型选取上述两个模型的输出序列中与待改写问题关键字重合度最高的一个作为结果。
Syntactic Sequence Model :
尽管训练语料很小, 但是字典大小的量级仍然维持在 10k 左右,这在 RNN encoder-decoder 结构下需要大量的参数来维护一个输出向量,这在算力有限的 2016 年仍然是一个挑战。常见的处理方式是,维护一个较小的字典大小,然后把未知词都标识为 UNK。
Syntactic Sequence Model 将语料库中 OOV 的单词替换为带有数字编号的 UNK,这个数字编号是它在对话中的相对位(如下图)。symbols(UNK1, UNK2, UNK3, UNK4)在不同对话当中是共享的,这使得该模型能够在不同的对话中学习语言结构信息。
Semantic Sequence Model :
Syntactic Sequence Model 只关注 OOV 词在序列中的位置,分配一个新的未知符号 UNK,完全抛弃了 OOV 词之间的语义相似性。下面这个两个例子 (a) (b) 中的 UNK 拥有完全相同的位置,但是所期望得到的 R1 其实是大相径庭的。
对此,Semantic Sequence Model 的处理方式是,将 UNK 词通过 word2Vec 的结果进行 k-means 聚类,生成 Category Label(CL)。上述 (a) (b) 两个例子中的 UNK 的类别分类如下:
SIGIR 2017 [3]
上文的两位作者,在 SIGIR 2017 也有后续的工作展现。好像很重要,找不到Access。
https://openreview.net/forum?id=Sy41ErWd-B
ACL 2016 [4]
作者来自香港大学和华为诺亚方舟实验室。这篇文章参考了人类在对话当中喜欢重复复述名词实体和较长短语的复读机行为,提出了基于 sequence-to-sequence 的 COPYNET,很好得将传统的生成模式和拷贝模式集成到一起。
在 NLP 中,sequence-to-sequence 这样的经典模型试图将以原始词汇表组成的原始序列映射到一个目标词汇表组成的目标序列中。原始词汇表和目标词汇表可以是相同的,或者有很大一部分是重叠的,就像文本摘要任务;也可以是完全不同的,比如机器翻译场景下。还有许多这样的任务都要求模型能够在目标序列中产生出现在源序列中,但相对于目标词汇表而言 out-of- vocabulary(OOV)的 token。一个简单而直观的想法就是直接从原始序列复制 token,来解决这个 oov 问题。
“copy mechanism”被拟用来模拟人类沟通交流过程中“复述”的行为,是一个选择原始序列中的某个片段,然后将该片段拷贝到目标序列中的过程。
模型构造:
2021 年了,sequence-to-sequence,RNN,Attention Mechanism 这些都老生常谈了,不再赘述了。
CopyNet 的工作方式是在每个 decoding step 中计算目标词汇表中的每个 token 和源序列中的每个 token 的概率。通过这种方式,CopyNet 获得一个目标词汇表以及原始序列构成的 extended vocabulary,允许模型潜在地生成相对目标词汇表 OOV 的 token。在 CopyNet 中,Encoder 采用了一个 Bidi-RNN 模型,输出一个隐藏层 M 作为 short-term memory;Decoder 基于 Canonical RNN-decoder 改造,主要有以下三点不同:
Prediction:存在生成模式和拷贝模式两种不同的词汇解码模式,CopyNet 的预测基于这两个模式的混合概率模型。
State Update:更新 t-th step 的状态时,COPYNET 不仅仅使用用 t-1-th step 预测结果的词向量,而且使用 M 中特定位置的 hidden state。
Reading M:Copynet 选择性地读取 M 的值,获取内容信息以及位置信息有效混合信息。
拓展词汇表 extended vocabulary 可以定义为:
其中目标词汇表 原始序列 ,未知词 [UNK]。该模型将能够在拓展词汇表中自由地选择词汇。具体而言,在解码步骤的 t-th step,token 的概率分布为:
根据上图的四种情况,分别计算 generation probability 和 copy probability :
其中:
是一个 normalization term, 是 generation 的得分函数, 是 copy 的得分函数。
状态更新
t-1-th step 时刻, 的 hidden state 表示为 ,由 的词向量与状态权重和拼接而成,理解为 attentive read+selective read,weighted sum 函数 定义为:
M 的混合解析
一个词的语义和它在 X 中的位置都将被一个经过适当训练的编码器 RNN 编码到 M 中的隐藏状态中。
在生成模式下,attentive read 占据主导,其主要由受到语义信息和语言模型来驱动,因此阅读 M 上的信息时位置更加跳跃自由;在拷贝模式下,对 M 的 selective read 往往受到位置信息的引导,从而采取非跳跃式僵化移动(rigid move)的做法,往往涵盖连续的多个词,包括未知词。
位置信息的更新方式如下:
ACL 2017 [5]
论文原作者 Abigail See 的解读:
http://www.abigailsee.com/2017/04/16/taming-rnns-for-better-summarization.html
Two Problems :
基于 RNN + attention 的 abstractive summarization 方法面临两个问题:
没法准确地再现事实细节(复制某个词),特别面对 oov 或者不常见的词。
rare words 的 word embedding 不够强。
一些名词性质的单词尽管拥有较强的 representation,但是其 embedding 倾向于聚集在一起,这可能会在试图还原单词时造成混淆。
经常自我重复。
decoder 过度依赖于其输入,即先前生成的词,而不是在 decoder 中存储长程信息。
How to Fix :
Easier Copying with Pointer-Generator Networks:为了解决 Problem 1(inaccurate copying),提出了 pointer-generator network。这是一个混合网络,可以选择通过 point 从原本复制单词,同时保留从 fixed vocabulary 生成单词的能力。具体模型构造可以概括为计算 attention distribution ,vocabulary distribution ,generation probability :
生成单词 w 的概率 = 从词汇表生成的概率 + 复制原文某一个处文本的概率
Eliminating Repetition with Coverage:为了解决 Problem 2(repetitive summaries),提出 coverage 方法使用 attention distribution 记录覆盖率,为重复部分添加惩罚机制。
即,一个原始单词的覆盖率等于它迄今所接收到的 attention scores 的和。
ACL 2019 [6]
这篇来自微信人工智能模式识别中心的文章,利用指针网络引入了一种基于 transformer 的重写体系结构,同时另外一大贡献是收集了一个带有人工注释的新数据集。
数据集构造:
作者从几个主流的中文社交媒体平台上抓取了 200k 个候选的多轮会话数据,从中整理出了 40k 正负比例平衡的高质量语料,其中正例指包含省略或指代,负例中的句子则拥有完整的语义表达,不需要重写。
下面这张表是其中随机 2000 个对话数据中,省略 or 指代出现频率的分析结果。只有不到 30% 的 utterances 既没有指代也没有省略,相当多的 utterances 二者都有,这进一步证实了在多轮对话中处理指代和省略的重要性。
模型构造:
使用了基于 Transformer encoder-decoder 结构的 copy network,试图根据历史对话数据 以及需要被改写的最后一轮 utterances 学到一个 mapping function 从而得到改写后的句子 。跟经典的 Transformer 类似,对于每一个 token ,它的词向量由 word embedding 以及 positional embedding 相加得到,再次基础上本文引入了第三种 embedding ——turn embedding 用以区分不同轮数:
上图显示了模型的整体架构,Encoder 和Decoder 的部分几乎就是 typical 的Transformer,这边不再赘述了。在最后 decoder 的输出层,我们希望模型能在 decoding 阶段的每一步都能学习到是否 copy 来自历史对话数据 H 的字词。这边一个额外的 probability λ 需要在每一步被计算来决定是否从 context 或者原始待改写句子