李晨亮,龍俊輝,唐作立,周 濤
(1. 武漢大學空天信息安全與可信計算教育部重點實驗室 武漢 430072;2. 武漢大學國家網絡安全學院 武漢 430072)
關鍵詞抽取技術是一種從文本中抽取主題和一些重要短語的技術,可以幫助閱讀者快速了解文本中最有價值的信息[1]。一篇文檔的關鍵詞通常是幾個單詞或者短語,可以作為該文檔主要內容的提要。近幾十年來,自動抽取關鍵詞的任務受到了廣泛關注[2]。另外,由于關鍵詞具有表達簡潔、精準的特點,被廣泛用于自然語言處理領域中的下游任務,比如文本摘要、情感分析以及文本聚類等[3]。
最傳統的關鍵詞抽取方法基于TF-IDF,它能識別出在當前文檔中頻繁出現,但在整個文檔集合中不會頻繁出現的單詞,即該文檔的重點單詞。還有基于圖的排序方法[4],它首先從文檔構造一個詞圖,然后用基于隨機游走的方法(如PageRank)確定關鍵詞的重要性。通過構建詞圖,這些方法可以有效地識別最顯著的關鍵詞。近年來,基于端到端神經網絡的關鍵詞抽取方法受到越來越多的關注。文獻[2]將關鍵詞抽取視為一項序列標注任務,并提出了一種聯合層RNN的模型。文獻[5]首先提出了一種用于關鍵詞抽取的編碼器-解碼器框架,并在框架中引入了注意力機制,使模型基于輸入的文檔來輸出對應的關鍵詞。文獻[6]進一步提出了一個基于CNN的模型來完成這項任務。文獻[7]提出了一種標題指導的seq2seq網絡來加強隱式文檔表示。另外,為了考慮生成的關鍵詞之間的關系,文獻[8]使用了自適應獎勵的強化學習方法。文獻[9]指出了關鍵詞生成中第一個詞的重要性。文獻[10]利用了聚類的方法來過濾掉無意義的候選關鍵詞。
基于端到端的神經網絡方法還面臨兩個重要挑戰:1) 建模有效的文檔向量表示。文檔向量表示能夠直接決定解碼器的輸出結果,影響整個模型的效果;2) 生成全面并準確覆蓋整個輸入文檔主題的關鍵詞集合。為了解決以上問題,本文提出了結合鄰域知識的文檔級關鍵詞抽取方法。在編碼端給定一個文檔,基于該文檔與相似文檔的相關信息以及文檔內部單詞之間的距離構建出文檔的圖結構,將相同的單詞聚合到一起用同一個節點表示。在解碼端設計了一種多樣化指針網絡,從原文檔的詞圖中動態地選擇相關的單詞構成強概括性且不重復的關鍵詞,極大優化了解碼器端的性能。實驗結果表明,相比傳統非監督學習方法和經典的深度學習方法,結合鄰域知識的文檔級關鍵詞抽取模型可以有效提升抽取結果的相關指標。
本文模型由檢索器、編碼器及解碼器組成。編碼器采用了圖卷積神經網絡(graph convolutional networks, GCN)[11]進行編碼,解碼器以關鍵詞為單位逐個生成關鍵詞。編碼器和解碼器的結構示意圖分別如圖1和圖2所示。

圖1 編碼器結構的示意圖
輸入指定文檔,找到與該文檔相似的鄰域文檔,鄰域文檔表示在局部空間中與指定文檔靠近的文檔。鄰域文檔可以給原文檔提供額外的領域知識上下文信息。即給定文檔x,利用相似文檔檢索技術檢索出Top-K個鄰域文檔,原文檔x被擴充為文檔集合 χ={x,x1,···,xk},作為輸入文檔的增強上下文知識數據。相似文檔檢索技術的核心依賴于兩個文檔相似度的評估功能。本文使用余弦相似度方法來度量文檔xi和文檔xj的相似度,并引入TFIDF指標來度量文檔中單詞的重要性,最后計算出基于加權的文檔詞項向量的余弦相似度分數,其計算公式為:

1.2.1 圖構建




1.2.2 圖卷積神經網絡
圖卷積神經網絡(GCN)是一個直接對圖進行操作的多層神經網絡,能夠根據圖內部節點中鄰居節點的屬性來歸納學習當前節點的嵌入向量表示。圖卷積神經網絡中一個卷積層能夠捕獲到每個節點的直接鄰居信息,如果堆疊多層卷積網絡就能夠聚集到更大范圍的鄰域節點信息。因此一旦完成了文檔圖構建操作,便把整個圖輸入到一個多層圖卷積神經網絡中。每個卷積層通常包含兩個階段,第一個階段聚合每個節點的所有鄰居節點信息,在第二個階段中,每個節點根據當前節點表示和聚合信息表示來更新自身的節點表示,兩個階段共同實現了一次完整的信息傳輸和聚合流程。給定節點矩陣表示Hl,l表示當前卷積層的下標,圖中所有節點的聚合和更新過程用函數fl(Hl)表示,則有:


門控單元內部的函數gl具有和fl相似的網絡結構。H0初始化為單詞的嵌入表示,作為模型的初始輸入。
1.2.3 文檔聚合
針對編碼器端最后一層HL中屬于原文檔的節點,模型采用多頭自注意力機制[15]線性轉換原文檔中出現的單詞表示,計算均值并拼接得到文檔的向量表示c,則有:

實驗中設置多頭的數量為4,即T= 4。
解碼器是該方法的重要組成部分,文檔通過編碼器得到文檔的向量表示。基于文檔表示,解碼器將連續生成多個具有多樣性且完整覆蓋文檔主題的多個關鍵詞。本節將詳細介紹用指針網絡來實現解碼器的方法,并說明引入的上下文修改機制以及覆蓋機制的原理和作用。
1.3.1 指針網絡
指針網絡[16]是一種學習輸出序列的條件概率的網絡結構,能夠解決可變大小輸入字典的問題。因此輸入文檔表示,解碼器就能從輸入文檔的字典范圍中生成多個高質量關鍵詞,滿足關鍵詞抽取任務的要求。和大多數seq2seq框架一樣,解碼器首先使用RNN框架來依次輸出每一時刻t的網絡隱藏狀態,則有:


1.3.2 上下文修改機制


1.3.3 覆蓋機制
在關鍵詞抽取任務中,多個關鍵詞通常對應原文中不同的位置,已經被模型選擇過的單詞應該盡量避免多次被模型選中。為了避免這個問題,模型引入了覆蓋機制[17],靈活調節每個關鍵詞的概率分布,確保原文中所有的重要區域都能夠被模型重點關注并且被總結為關鍵詞。



式中,新增的Wc是可學習參數。


另外,訓練和解碼的過程中在關鍵詞的末尾添加“EOS”符號來讓模型停止生成多余的單詞。
使用4個科學文獻基準數據集來評估模型的效果,包括KP20k、Inspec、Krapivin以及SemEval。對KP20k數據集做了預處理,刪除了其中重復的數據,最終保留了509 818個訓練集樣本,20 000個驗證集樣本以及20 000個測試集樣本。并且有模型都是基于KP20k數據集進行訓練。模型訓練完成之后,在4個基準的測試集上測試了所有模型。數據集的統計結果如表1所示。

表1 數據集統計表
首先分別采用以下幾個經典的關鍵詞抽取算法作為本文模型的對比模型,其中包括4種無監督關鍵詞抽取算法(Tf-Idf、TextRank、SingleRank[18]、ExpandRank[18])和其他基于監督的關鍵詞抽取算法(Maui[19]、RNN[5]、CNN[6]、CopyRNN[5])。
為了評價每種模型的表現,采用F1分數作為評價指標。F1指標由召回率R、精確度P計算得到,計算方式如下:

最后,模型使用英文分詞算法(porter stemmer)處理關鍵詞,決定關鍵詞之間是否匹配。
表2總結了不同的關鍵詞抽取算法在4個基準數據集上的表現情況,給出了前5位和前10位的F1結果,并且使用粗體顯示最好的分數。

表2 不同模型在4種基準數據集上的關鍵詞抽取性能
首先將本文的模型與傳統的關鍵詞抽取算法進行比較,結果顯示本文的模型在所有測試集上都取得了明顯的提升效果。另外,本文模型相較于常見的基于端到端的深度學習方法也有了更進一步提升,說明本文模型引入了文檔鄰域知識,圖卷積方法以及多種多樣性機制確實學習到了有效的文檔向量表示,并使生成的關鍵詞盡可能多地覆蓋了文檔主題。本文的模型相較于各對比模型都有著良好的關鍵詞抽取效果,證明了該模型的有效性。
為了驗證上下文修改機制和覆蓋機制對關鍵詞抽取任務的性能影響,在Inspec數據集和Krapivin數據集上對模型進行消融實驗。其中,“-ConModify”表示不使用上下文修改機制,即模型在解碼的時候不參考之前生成的關鍵詞內容來修改文檔向量表示。“-CovMech”表示不使用覆蓋機制即每當解碼器生成關鍵詞單詞的時候,不再記錄所有單詞one-hot編碼總和。“-Neither”表示兩者都不使用。從表3中能看到如果模型單純添加了覆蓋機制的情況下即“-ConModify”,相比于“-Neither”方法能夠在Krapivin數據集上得到更好的效果,然而在Inspec數據集上的效果卻降低了。如模型僅僅增加了上下文修改機制即“-CovMech”,結果表明上下文修改機制在兩種數據集上都能給模型帶來更好的關鍵詞抽取效果。相較于“-Neither”方法,當同時加入上下文修改機制和覆蓋機制,模型的關鍵詞抽取效果得到了提升,說明當前兩種機制存在很強的互補關系,并且進一步增強了模型的魯棒性。

表3 消融實驗
編碼器端使用了圖方法來對所有文檔進行建模和編碼。為了深入研究模型的效果,分析不同GCN層數對模型效果的影響。實驗結果如表4所示,結果顯示當編碼端只有一層GCN的時候,圖中的節點無法從鄰居節點得到足夠的有效信息。在設置2層GCN的情況下,模型在Inspect數據集上取得了較好的效果。直到在實驗中設置了6層GCN的情況下,模型在Inspec和SemEval數據集上同時達到了出色的效果。

表4 GCN層數對模型效果的影響
實驗結果表明隨著GCN層數的增加,模型效果會逐漸提升。然而過多的GCN層數會導致整個圖中的節點出現同質化的負面效果,導致模型性能下降。另外,通常情況下2層GCN會得到較好的擬合效果,然而卷積網絡門控單元和殘差學習框架來緩解GCN的過擬合過程,并最終取得了更好的關鍵詞抽取效果。
針對關鍵詞抽取任務,本文提出了一種結合鄰域知識的文檔級關鍵詞抽取方法。為了更好地建模輸入文檔的向量表示和生成覆蓋文檔所有主題的關鍵詞集合,計算文檔之間的相似度并選擇部分最近鄰文檔作為原文檔的鄰域知識。然后根據每個文檔中單詞之間的長短程關系構建詞圖,合并輸入文檔和鄰域文檔的詞圖,利用圖卷積網絡完成編碼過程。最后采用指針網絡完成解碼過程。模型引入上下文修改機制和覆蓋機制,共同避免模型生成重復的關鍵詞。在多種數據集上進行關鍵詞抽取任務的對比實驗,結果證明結合鄰域知識的文檔級關鍵詞抽取模型能夠有效提升關鍵詞抽取任務的效果。