指針網(wǎng)絡(luò) Pointer Network 是一種 Seq2Seq 模型邑雅,但是其 Decoder 預(yù)測的結(jié)果是從 Encoder 的輸入序列中得到的坑质。Pointer Network 從輸入序列中得到輸出結(jié)果,所以比較適合用于文本摘要的生成前硫,并且可以比較好的避免 OOV (Out of vocabulary) 問題胞得。本文主要介紹兩種利用 Pointer Network 的文本摘要算法:Pointer-Generator Networks 和 Multi-Source Pointer Network。
1.引言
在之前的文章中介紹過指針網(wǎng)絡(luò) Pointer Network屹电,指針網(wǎng)絡(luò)是一種 Seq2Seq 模型阶剑,但是其 Decoder 預(yù)測的結(jié)果是從 Encoder 的輸入序列中得到的。指針網(wǎng)絡(luò)改變了傳統(tǒng) Seq2Seq 模型 Attention 的用法危号,用 Encoder 輸入序列中 Attention 得分最高的作為當(dāng)前輸出牧愁。下圖展示了傳統(tǒng) Seq2Seq Attention 與 Pointer Network 使用上的區(qū)別。簡單來說外莲,傳統(tǒng)的 Seq2Seq 在預(yù)測時(shí)計(jì)算的是整個(gè)字典中的概率分布猪半,而 Pointer Network 預(yù)測時(shí)計(jì)算的是輸入序列中每個(gè)單詞的概率分布。
而文章摘要是 NLP 中一個(gè)比較重要的領(lǐng)域偷线,常見的文章摘要方法可以分為抽取式摘要和生成式摘要办龄。抽取式摘要主要從源文檔中提取現(xiàn)成的句子作為摘要句,一般在語句流暢程度上比生成式摘要好淋昭,但是容易引入較多的冗余信息。生成式摘要主要根據(jù)源文檔內(nèi)容安接,通過算法模型生成摘要翔忽,而非提取原文的句子。
Pointer Network 由于可以復(fù)制輸入序列的 token 作為輸出盏檐,因此比較適合用于文本摘要歇式,另外 Pointer Network 可以在一定程度上緩解 OOV 問題。例如訓(xùn)練集里面沒有出現(xiàn) "哈士奇" 這一個(gè)單詞胡野,但是在預(yù)測的時(shí)候出現(xiàn)了 "哈士奇"材失,一般的 Seq2Seq 在生成摘要時(shí)通常會(huì)用 "UNK" 替換 "哈士奇",但是 Pointer Network 可以直接從輸入序列中復(fù)制 "哈士奇" 作為輸出硫豆。
本文主要介紹兩種利用 Pointer Network 的文本摘要算法:Pointer-Generator Networks 和 Multi-Source Pointer Network龙巨。Pointer-Generator Networks 是一種同時(shí)利用了抽取式和生成式的摘要算法笼呆,而 Multi-Source Pointer Network 主要是抽取式。
2.Pointer-Generator Networks
Pointer-Generator Networks 出自論文 《Get To The Point: Summarization with Pointer-Generator Networks》旨别。Pointer-Generator Networks 的主要內(nèi)容包括以下兩點(diǎn):
- 傳統(tǒng) Seq2Seq 模型可以計(jì)算輸出時(shí)整個(gè)字典所有 token 的概率分布诗赌,Pointer-Generator Networks 在此基礎(chǔ)上融合了指針網(wǎng)絡(luò)計(jì)算出的輸入序列 token 概率分布。從而可以緩解 OOV 問題秸弛,并且同時(shí)賦予模型生成新單詞和復(fù)制原始序列兩種能力铭若。
- 為了解決 Seq2Seq 生成摘要時(shí)容易重復(fù)相同單詞的問題,Pointer-Generator Networks 加入了 coverage 機(jī)制递览,coverage 可以記錄已生成的內(nèi)容叼屠,避免重復(fù)生成。
2.1 模型
Pointer-Generator Networks 在 Seq2Seq 基礎(chǔ)上加入了指針網(wǎng)絡(luò)绞铃,首先看一下 Seq2Seq 的模型結(jié)構(gòu)圖镜雨,如下圖所示。
Seq2Seq 中利用 Decoder 的輸出和 Encoder 每一時(shí)刻的輸出計(jì)算出 Attention 分?jǐn)?shù)憎兽,并根據(jù) Attention 分?jǐn)?shù)融合 Encoder 的輸出得到 context vector冷离,將 context vector 和 Decoder 的輸出傳入 Softmax 得到字典中 token 的概率分布。計(jì)算的公式如下:
Pointer-Generator Networks 在 Seq2Seq 中加入了指針網(wǎng)絡(luò)的機(jī)制纯命,模型如下圖所示西剥。
可以看到,Pointer-Generator Networks 在 Seq2Seq 預(yù)測的概率分布 P_vocab (圖中綠色部分) 加上了 Attention 分布 (圖中藍(lán)色部分)亿汞,得到最后的概率分布瞭空。可以看到 P_vocab 中原本沒有單詞 "2-0"疗我,但是在 Attention 分布中包含了 "2-0"咆畏,因此最后的分布也加入了 "2-0",從而減緩 OOV 問題吴裤。Pointer-Generator Networks 通過一個(gè)參數(shù) p_gen 將兩個(gè)分布加在一起旧找,p_gen 通過學(xué)習(xí)得到。
2.2 coverage 機(jī)制
Pointer-Generator Networks 為了避免模型生成重復(fù)的序列以及遺漏翻譯麦牺,加入了 coverage 機(jī)制钮蛛。通過一個(gè) coverage 向量 ct 記錄 t 時(shí)刻前所有的 Attention 分?jǐn)?shù),因此可以通過 coverage 向量中每個(gè) token 的取值判斷該 token 是否被使用過剖膳,取值高的更可能被使用過魏颓。
然后在計(jì)算 Attention 時(shí)要加入 coverage 向量。
最后要在 Loss 中加上 coverage loss吱晒,可以看到對(duì)于第 i 個(gè)單詞甸饱,如果其 attention 值和 coverage 值都很大,說明之前已經(jīng)大概率生成過單詞 i,則此時(shí) coverage loss 會(huì)很大叹话。
2.3 實(shí)驗(yàn)效果
上面是三種模型的摘要對(duì)比偷遗,藍(lán)色的是參考摘要,紅色的是錯(cuò)誤的摘要渣刷,可以看到 Seq2Seq 模型的摘要包含較多錯(cuò)誤以及 UNK 單詞鹦肿。綠色的是重復(fù)的摘要,Pointer-Generator Networks 雖然比較少錯(cuò)誤和未知單詞辅柴,但是其會(huì)生成重復(fù)的摘要箩溃。而加上了 coverage 機(jī)制的 Pointer-Generator Networks 則可以比較好避免重復(fù)摘要。
3.Multi-Source Pointer Network
Multi-Source Pointer Network (以下簡稱 MS-Pointer) 出自論文《Multi-Source Pointer Network for Product Title Summarization》碌嘀,是阿里巴巴團(tuán)隊(duì)提出的涣旨,用于生成產(chǎn)品的標(biāo)題。
MS-Pointer 需要兩個(gè)數(shù)據(jù)源股冗,其中一個(gè)是商品原來的標(biāo)題霹陡,另一個(gè)是一些額外的信息。額外的信息稱為 "knowledge"止状,主要包含商品名和品牌名烹棉,類似與一些商品的標(biāo)簽。
由于產(chǎn)品的標(biāo)題不應(yīng)該引入不相關(guān)的信息并且要保留原來的重要信息怯疤,所以 MS-Pointer 采用了抽取式的方法浆洗,摘要中所有的 token 均來自標(biāo)題或者 "knowledge"。
MS-Pointer 和 Pointer-Generator Networks 比較類似集峦,區(qū)別在于 MS-Pointer 使用一個(gè)標(biāo)題 Encoder 得到標(biāo)題 token 的 Attention 分布伏社,使用一個(gè) "knowledge" Encoder 得到 "knowledge" 的 Attention 分布,將兩個(gè) Attention 分布融合在一起塔淤。模型的示意圖如下:
如上圖所示摘昌,MS-Pointer 將兩個(gè) Attention 分布融合,融合的參數(shù)用以下公式計(jì)算:
4.參考文獻(xiàn)
Get To The Point: Summarization with Pointer-Generator Networks
Multi-Source Pointer Network for Product Title Summarization