结合语言知识的句子改写生成


一.概述

  我之前做的一个小demo,是一种使用自监督的方式进行学习和生成,这种方式生成的句子对原句的改动比较大,另外还有改变原句意思的可能性,所以是不太适用较严谨的句子改写。最近正好看过一篇AAAI-20的文章《Integrating Linguistic Knowledge to Sentence Paraphrase Generation》,此篇文章主要用于句子改写,不同于gpt2,它的整体架构是encoder-decoder这种翻译模型,主体就是transformer,是一种有source和target的监督学习,可用于中文和英文的句子改写,但改写的力度不会很大,不会偏离原句的主要大意。

二.主要内容

  通篇看下来,在transformer中主要进行了2点整合:一是在transformer decoder阶段融合了外部的同义词信息以及同义词对应的句子中的词的位置信息;二是提出了所谓的多任务结构,即是融合了对原句中的每个词是否同义词的这种二分类模型加上生成模型。下面一幅图即可明了:

(一)说明:

1.Sentence Encoder: 这是transformer 中的encoder部分

2.Synonym Tagger:这是利用transformer encoder的输出对source句子进行的一个前馈二分类,用来标注source中的词是否是同义词

3.Knowledge-enhanced Paraphrase Decoder:这部分结合了两部分的输入,一个是基本的transformer decoder的输出以及来自同义词典中的同义词的embedding和同义词典中对应的source中的词的position embedding

(二)注:

1.因为source和target都是同一种语言,所以encoder、decoder以及同义词的token embedding部分是共享的

2.position embedding部分利用sin,cos生成

3.用soft-attention分别去计算同义词与decoder输出的注意力,以及句子中同义词位置与decoder输出的注意力,联合两种注意力,再结合decoder的输出共同进行句子改写生成,公式如下:

其中,表示cat联结,表示基础decoder的输出,的计算同,只是用位置embedding替换了同义词embedding,上面的几个式子就是soft-attention的计算方式

4.文章説在训练时先让同义词标注进行训练,然后微调一起训练同义词标注模型和句子生成模型,整体的loss是结合这两部分:

 项目见:https://github.com/jiangnanboy/chinese_sentence_paraphrase