1. 程式人生 > >自動文摘(Automatic document summarization)方法綜述(四)——基於神經網路的(neural summarization)方法

自動文摘(Automatic document summarization)方法綜述(四)——基於神經網路的(neural summarization)方法

前三篇部落格(一)(二)(三)總結了抽取式自動文摘的一些經典方法,傳統抽取式自動文摘方法將文件簡單地看作是一組文字單元(短語、句子等)的集合,忽略了文件所表達的全域性語義,難免“斷章取義”。隨著算力的提升,深度學習在很多應用中非常的火熱也取得了state-of-the-art的效能,因此,將神經網路模型引入自動文摘任務是理所當然的,將文件用神經網路模型進行表示被稱為神經文件模型(neural document model),neural document model採用低維連續向量表示文件語義資訊非常有效。這篇部落格將介紹幾種經典的neural document model。

1、DocRebuild

該模型是北京大學發表在COLING2016上的一篇文章中提出來的,通過一個neural document model將文件用摘要句進行重構,同時保證選取的摘要句最小化重構誤差(construction error)。

An Unsupervised Multi-Document Summarization Framework Based on Neural Document Model
在模型中,文件集中每一篇文件用neural document model表示,然後取平均作為文件集內容的表示。文件集內容重構包括:1)選取摘要句,並將摘要句用文件模型進行表示。2)計算重構誤差。因此,多文件摘要任務轉化成最優化問題,目標函式是最小化重構誤差,選擇的摘要句需滿足這個誤差最小。下圖展示了DocRebuild的框架:

① neural document model是該框架的基礎,直接決定了模型的效能。文中作者分別採用了兩種非監督文件模型:Bag-of-Words(BoW)和Paragraph Vector(PV)。在BoW中,作者簡單採用詞袋模型,沒有考慮單詞之間的順序和關係,每一個單詞被表示成相應的word embedding,文件被表示成成單詞向量的加權平均。PV模型是另一種文件模型,考慮了單詞順序。具體的可以參考word2vec和Paragraph Vector的論文。

② 在定義目標函式之前,需要定義如下符號:D={d1,d2,,dn}D=\{d_1,d_2,\dots,d_n\}

1,d2,,dn}表示多文件集,DD中的文件都被處理成句子集合。C={s1,s2,,sm}C=\{s_1,s_2,\dots,s_m\}表示候選句子集。S={s1,s2,,sl}S=\{s_1^*,s_2^*,\dots,s_l^*\}表示摘要句子集,滿足SCS\subset CSC|S|\ll |C|θ\theta表示摘要長度限制。重構誤差通過摘要向量和文件向量之間的距離衡量:
minSCDM(S)1ni=1nDM(di)22s.t. len(S)θ \begin{aligned} &\min_{S\subset C}\enspace ||DM(S^*)-\frac{1}{n}\sum_{i=1}^nDM(d_i)||_2^2\\ &s.t.\quad\: len(S^*)\leq\theta \end{aligned}

其中,DMDM表示文件模型處理過程,SS^*表示SS相應的摘要序列,len(S)len(S^*)表示摘要序列的長度。

③ 選擇最優摘要集是一個NP-hard問題,在文中,作者提出了兩種策略用於句子選擇的效率和有效性。
句子過濾\quad這個策略主要用於縮減搜尋空間,通過過濾掉無關的噪聲句,保留最有價值的句子作為候選句(candidate set),同時刪除噪聲句也有助於文件表示。具體地,作者首先對句子進行排序然後選取top-ranked句子作為候選。
BeamSearch Algorithm\quad為了提高搜尋效率,作者提出了BeamSearch演算法,演算法的虛擬碼如下:

2、NN-SE

該模型由Cheng和Lapata在ACL 2016上提出:Neural Summarization by Extracting Sentences and Words。該論文中既提出了句子基於句子抽取的模型NN-SE,也提出了基於單詞抽取的模型NN-WE,本部落格中只討論NN-SE。在判斷一個句子是否屬於摘要句時,傳統方法依靠的是人工構建的特徵。這篇文章中,作者提出了一個基於神經網路和連續句子特徵的資料驅動方法。基於神經網路的方法的核心是一個encoder-decoder結構,encoder讀取源序列並編碼成一個連續向量,然後decoder從中生成目標序列。在decoder階段,注意力機制(attention mechanism)通常被用來定位焦點區域(locate the focus)。

問題描述 \quad對一篇文件D={s1,s2,,sm}D=\{s_1,s_2,\dots,s_m\},基於句子抽取的自動文摘希望選取一個包含jj個句子(j<m)(j<m)的子集形成摘要。我們可以對DD中每一個句子打分,然後預測一個標籤yL{0,1}y_L\in\{0,1\}指示其是否屬於摘要句。對於有監督學習,目標函式可以設定為最大化所有句子標籤yL=(yL1,yL2,,yLm)\bold{y_L}=(y_L^1,y_L^2,\dots,y_L^m)的似然
logp(yLD;θ)=i=1mlogp(yLiD;θ) \log p(\bold{y_L}|D;\theta)=\sum_{i=1}^m\log p(y_L^i|D;\theta)

NN-SE的關鍵成分包括一個基於神經網路的層次文件讀取器(document reader)和一個基於注意力的層次內容抽取器(content extractor)。層次結構天然符合文件由單詞、句子、段落甚至更大的單元合成。

Document Reader

作者首先採用一個單層卷積神經網路(CNN)和max-pooling操作獲得句子級的向量表示。之後,採用一個標準的迴圈神經網路(RNN)建立文件向量表示。Convolutional Sentence Encoder\quad採用CNN進行句子表示主要有兩個原因:①單隱層神經網路能夠高效訓練(沒有長期依賴);②CNN已經被成功地應用到句子級的分類任務中。假設dd表示word embedding的維度,s=(w1,,wn)s=(w_1,\dots,w_n)表示文件中的句子,因此一個句子可以表示成一個稠密矩陣WRn×dW\in \mathbb{R}^{n\times d}。接著就可以採用一個寬度為cc的卷積核KRc×dK\in \mathbb{R}^{c\times d}
fji=tanh(Wj:j+c1K+b) f_j^i=\tanh(W_{j:j+c-1}\otimes K+b)

其中\otimes表示矩陣的哈達馬積(乘積)並求和所有元素。fjif_j^i表示第ii個特徵圖的第jj個元素,bb是偏置。採用最大池化操作獲得一個單一特徵(第ii個特徵):
si,K=maxjfji s_{i,K}=\max_jf_j^i

實踐中,在每個卷積核上,作者採用多個特徵圖計算了dd個特徵,作為句子向量。同時,作者也採用了多個不同寬度的卷積核得到多個句子向量。最後,這些句子向量累加作為最終的句子表示。如下圖sentence encoder階段所示

Recurrent Document Encoder\quad在文件級別,作者採用了一個迴圈神經網路組合句子向量序列為一個文件向量。迴圈神經網路作者採用的是LSTM,假設一篇文件表示為d=(s1,,sm)d=(s_1,\dots,s_m),在tt時刻隱藏層hth_t計算如下:
[itftotc^t]=[σσσtanh]W[ht1st] \begin{bmatrix} i_t \\ f_t \\ o_t \\ \hat{c}_t \end{bmatrix}= \begin{bmatrix} \sigma \\ \sigma \\ \sigma \\ \tanh \end{bmatrix}W\cdot \begin{bmatrix} h_{t-1} \\ s_t \end{bmatrix}

ct=ftct1+itc^t c_t=f_t\odot c_{t-1}+i_t\odot\hat{c}_t

ht=ottanh(ct) h_t=o_t\odot\tanh(c_t)