一.概述
我之前做的一個小demo怎么利用gpt2進行句子改寫生成,是一種使用自監督的方式進行學習和生成,這種方式生成的句子對原句的改動比較大,另外還有改變原句意思的可能性,所以是不太適用較嚴謹的句子改寫。最近正好看過一篇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