原作者:譚繼偉、萬曉軍、肖建國
引語(quote pr quotation)是在自己的陳述中抄寫别人的話。引語是一種常見的語言現象,常用作引語,以更好地闡明意思或支援自己的觀點。正确使用引語通常能使陳述更優雅、更有說服力。然而,使用引語的能力通常受到所知引語數量的限制。有時我們很想在某個地方引用一句話支援我們的觀點,但隻能對合意的引語産生一些模糊的印象,甚至根本不知道相關的引語。盡管網絡上有很多引語庫(例如BrainyQuote,引語頁面),但即使在今天的搜尋引擎的幫助下,也很難找到合适的報價。引用推薦是一項任務,根據作者所寫的上下文,自動推薦作者在寫作時可能需要的引用。圖7展示了quote、context和quote recommendation任務。Tan等人首先介紹了支援我們的觀點,但隻能對合意的引語産生一些模糊的印象,甚至根本不知道相關的引語。盡管網絡上有很多引語庫(例如BrainyQuote[1],引語頁面[2]),但即使在今天的搜尋引擎的幫助下,也很難找到合适的報價。引用推薦是一項任務,根據作者所寫的上下文,自動推薦作者在寫作時可能需要的引用。圖7展示了quote、context和quote recommendation任務。Tan等人。[29]首先介紹了引語推薦任務,并對該任務進行了初步的研究。他們提出了一個learning to rank架構,通過使用許多手動設計的特征對候選引語進行排名,來推薦潛引語。本文表明,在給定的上下文環境下猜測哪些引語可以使用是可行的。
Tan等人探索quote recommendation任務的多個特征,并顯示上下文-上下文特征最有用。上下文-上下文特征的作用是通過比較訓練語料庫中的上下文和查詢上下文來推薦候選引語。這是一種我們稱之為“二階”特征的特征。相對而言,“一階”特性,即查詢上下文和候選引語之間的直接相關性,對系統的貢獻很小。是以,Tan等人]發現很難對引語的含義進行模組化或表示。然而,二階特征的計算代價很高,在實際的推薦系統中是不可接受的。在本文中,我們試圖解決上述問題,并以更直接的方式解決引語推薦任務,通過直接模組化上下文和引語之間的相關性。
直接建立上下文和引用之間的關聯模型的主要困難在于兩個方面。首先,引語通常是短文,由一個或幾個句子組成,引語不太可能與上下文共享常用詞。其次,引用可以通過比喻、隐喻等文學手法,以一種含蓄的方式表達其意義。是以,引語中使用的詞可能具有不同于其正常含義的含義。以金哈伯德(Kim Hubbard)的名言為例:“一個好的戰線是愛情或戰争的一半”,在名言中,“戰線”往往更像是“過程”而不是“戰役”的意思。所有這些現象使得我們很難了解或表達引用的真正含義,即使使用最先進的自然語言處理技術。
在這項研究中,我們提出了一種基于長短期記憶(LSTM)的神經網絡引語推薦方法。我們使用LSTMs學習上下文和引語的分布表示,然後根據所學上下文和引語向量的相關性來完成推薦任務。我們引入一種機制,将有用的引用特性內建到引用嵌入學習架構中,以幫助學習更好地表示引用含義。此外,在所提出的模型中,我們嘗試根據不同的上下文和主題,甚至根據不同的作者偏好,學習不同引語中使用的單詞的具體嵌入。我們在[29]中使用的基準資料集上進行了實驗,并将我們提出的方法與幾種最先進的方法進行了比較。
這項工作的主要貢獻是:
•我們的工作是首次将神經網絡模型應用于引語推薦任務。神經網絡模型避免了二階特征的計算,因而更适合于實際的推薦系統。
•在神經網絡模型中,我們利用複雜的LSTM編碼器結構來應對學習好的引用語義表示的挑戰。我們通過學習的權重向量來利用主題和作者資訊,并學習引用詞的不同嵌入。實驗結果表明,該政策具有較好的學習引用表示的能力。
•在大型真實資料集上的實驗結果表明,我們的方法達到了最先進的性能。盡管我們提出的方法隻利用了很少的特性,但是它比使用大量手工設計的特性的最新的學習排序方法要好得多。
我們将論文整理如下。第二節介紹了相關工作。在第三節中,我們介紹了報價推薦任務和本文中使用的一些關鍵概念。在第4節中,我們開始介紹我們提出的方法。在第五節中,我們介紹了引用資料集和實驗,以及讨論。最後,在第六節中,我們對本文進行了總結,并介紹了未來的工作。
1.相關工作
引文推薦任務是一項基于内容的推薦任務,與之最為密切相關的工作是面向科技寫作的基于内容的引文推薦。對于基于内容的引文推薦任務,一個典型的方向是利用文本内容來輔助推薦。Shaparenko和Joachims[25]讨論了引文上下文和論文内容的相關性,并将語言模型應用于推薦任務。Huang等人 提出将被引用的論文用唯一的id表示為新語言中的新詞,并利用翻譯模型直接估計在給定的引用上下文中被引用論文的機率。He等 提出了一種上下文感覺方法,用于測量引用上下文和文檔之間基于上下文的相關性。一些研究試圖通過翻譯模型或分布式語義表達來彌補被引論文與被引上下文之間的語言差異。Lu等人。[17] 假設引文語境中使用的語言和被引文中使用的語言是不同的,并提出使用翻譯模型來彌補這一差距。Tang等人提出了一個聯合嵌入模型來學習上下文和引文的低維聯合嵌入空間。Huang等人 提出學習單詞和被引用文檔的分布語義表示,然後利用神經機率模型估計給定引用上下文的論文被引用的機率。他們通過估計每個需要引文的單詞的機率來制定任務,并且他們不使用深層神經網絡來完成推薦任務。總之,引文推薦方法的思想,如建立引文語境與被引文的相關性模型,利用語境資訊,縮小不同“語言”之間的差距,對引文推薦任務也有幫助。這項工作與以往工作的主要差別在于,由于它們與科學論文的不同,我們關注的是引文的特點。此外,我們訓練神經網絡以達到彌合語言鴻溝和利用關聯和上下文資訊的目的,進而以最直接的方式處理推薦任務。
引用推薦最直接的方法是測量引用和上下文之間的關系。上下文可以看作段落級文本,引用可以看作句子級文本。一種常用的文本相關性度量方法是用向量表示文本,并根據文本的向量表示來度量文本的相關性。例如經典流行的袋裝詞文本相似度模型,以及最近出現的句子或段落分布式語義嵌入方法,如段落向量和skipthough向量。嵌入方法試圖從一個大的語料庫中學習任意長度文本的語義表示,然後以無監督或有監督的方式将學習到的向量應用到特定的任務中。非特異性任務嵌入在多個任務中都能取得良好的效果,但總體上仍然不能很好地表示文本。相反,為了将任意長度詞的文本映射到句子或語篇層面的向量中,更多的方法嘗試在詞的嵌入上學習構詞運算符。複合算子可以通過遞歸網絡、卷積網絡和循環網絡等神經網絡在特定任務中學習。學習到的文本表示向量通常能在特定任務上取得更好的效果。在本文中,我們也遵循這一政策,學習在引文推薦任務中的具體引文和上下文表示。
處理文本關聯性的另一種方法不是學習每個文本的顯式表示,而是直接模組化一對文本的關系。大多數典型的作品使用卷積神經網絡來獲得比對分數。這些方法可以應用于釋義識别和語義文本相似度等成對問題。主要缺點是,對于像quote推薦這樣的任務,成對比對方法必須分别枚舉和計算所有可能的對。
2. 問題表述
在本節中,我們将介紹本文中使用的一些概念。
引用q是一個詞的序列q={t1,t2,……,t|q|}。在quote recommendation任務中,除了單詞序列外,quote還與作者和主題的人工注釋标記相關聯。
在包含引語的連貫語句中,引語前的單詞命名為left context,引号後的單詞命名為right context。因為引文的上下文是左上下文和右上下文的連接配接。請求上下文(Query context)是使用者提供的上下文,用于推薦系統相應地推薦引文。
候選引語是可能與查詢上下文相關的引号。在這項研究中,資料集中的所有引用都被視為候選引用。整套候選引語構成一個引語集。
黃金引語是一個最适合查詢上下文的候選引用,。在本研究中,一個查詢上下文的黃金引文是與實際文獻中的查詢上下文一起出現的實際引文。因為兩個完全相同的上下文幾乎不可能用兩個不同引文出現,是以我們假設每個查詢上下文都有一個且隻有一個黃金引文。
引文建議:給定一組查詢上下文C以及一組候選引文Q,對于每個查詢上下文c∈C,系統需要傳回一個Q中的排名引号清單。
3.模型
3.1預備知識
3.1.1 RNN
循環神經網絡(RNN)是一種試圖利用輸入資料的序列資訊的神經網絡結構。處理序列資料的能力對于文本處理非常重要。RNN的思想是對序列中的每個元素執行相同的任務,輸出取決于前面的計算。圖1左邊是最基礎的RNN,右邊是它的展開形式。展開的表單顯示完整輸入序列的網絡。在圖1中,xt是時間步驟t的輸入,st是時間步驟t的隐藏狀态。隐藏狀态的作用類似于網絡的“記憶體”。st是根據以前的隐藏狀态和目前步驟的輸入,如:st=f(Uxt+Wst-1)。U和W是合并目前輸入xt和隐藏狀态st影響的矩陣。函數f是非線性函數,例如tanh或sigmoid。ot是步驟t的輸出,ot可以計算為:ot=f(Vst)。由于遞歸結構,RNN可以處理任意長度的輸入,而隐藏狀态使得RNN能夠捕獲輸入序列的依賴關系。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TTzMmZk1mY2x2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2EjMzUjNwETM1AzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3.1.2 LSTM
盡管RNN可以接受任意長度的輸入序列,但是如果輸入序列太長,它通常無法捕獲依賴關系,太長的輸入序列也會導緻梯度消失和爆炸問題。長-短期記憶(LSTM)是一種遞歸神經網絡,它能較好地解決長期依賴性和梯度消失的捕獲困難。LSTMs已經成功地應用于許多任務,并取得了最新的成果。LSTM是一種用LSTM單元代替RNN中遞歸單元的RNN。LSTM的核心思想是在遞歸神經單元中引入門來控制資料流。門是以乘法方式應用的層,是以,如果門為1,則可以保留來自門層的值;如果門為0,則可以将該值歸零。特别是,使用三個門來控制是否忘記目前單元值(忘記門f)、是否應該讀取其輸入(輸入門i)以及是否輸出新單元值(輸出門o)。一個LSTM單元如圖2所示。在本文中,我們使用了記憶單元的定義,如:
其中σo是logistic sigmoid函數,i、f、o和c分别表示輸入門、遺忘門、輸出門和單元。所有向量的大小與隐藏向量h的大小相同。.W是權重矩陣,其下标表示不同的門,例如Whf表示隐藏忘記門矩陣。b是偏置矢量,在圖2中省略。
3.2 架構
給定查詢上下文c,我們的引文推薦系統的目的是傳回查詢上下文c和所有候選引文qi∈Q之間的關聯度得分rc=[r(cq1),r(cq2),……,r(cq|Q|)],然後根據rc對Q中的引号進行排序。輸入是上下文和候選引号的單詞序列,以及人工注釋的作者和引号的主題标記。在我們的架構中,我們首先通過一個引文編碼器将每個引文qi轉換為一個引文嵌入向量vqi,然後通過一個上下文編碼器将上下文c轉換為一個上下文嵌入向量vc。然後相關性得分可以計算為rc=VQvcT,其中VQ=[vq;……vq|Q|]。
在訓練過程中,根據查詢上下文和黃金引文對的訓練資料,學習好上下文編碼器和引文編碼器。然後,通過生成上下文和引文向量并計算相關性得分,将學習到的編碼器用于引文推薦任務。候選引文是根據相關性得分進行排名,作為最終推薦名單。我們架構的主要差別在于,我們使用一個複雜的引号編碼器來內建引号的主題和作者資訊,并且引号編碼器可以學習不同引号中使用的單詞的特定嵌入。在接下來的部分中,我們将首先介紹上下文編碼器,然後介紹引文編碼器,最後描述學習目标和算法。
3.3上下文編碼器
上下文編碼器的目标是将段落級上下文(一個可變長度的單詞序列)映射到一個固定維的表示向量中。由于能夠表示長序列的單詞并在許多任務中成功使用,我們使用LSTM作為編碼器。上下文編碼器的體系結構如圖3所示。
以往的工作和實驗表明,LSTM雖然具有較好的處理長距離依賴關系的能力,但如果輸入序列太長,其性能仍會下降。在我們的工作中,我們沒有将上下文作為一個整體來處理,而是分别對左上下文和右上下文進行編碼,進而得到左上下文向量vl和右上下文向量vr。那麼vc=vl+vr。我們通過對左上下文和右上下文使用共享的LSTM編碼器來實作這一點,這樣既可以避免輸入序列過長的風險,又不會引入新的參數。如圖3所示,上下文編碼器的輸入是上下文單詞序列。通過字嵌入矩陣X或稱為查找表将輸入字映射到字嵌入向量xi。
X∈R(|V |×d),其中| V |是詞彙大小,d是單詞嵌入的次元。然後按順序将字向量輸入LSTM。LSTM反複接收輸入并更改其隐藏狀态。在LSTM接收到所有輸入序列後,我們将最終的隐藏狀态作為上下文向量。接下來,我們将介紹輸入上下文表示和單詞嵌入矩陣。
3.3.1文本矩陣
在我們的架構中,我們嘗試将每個引文或上下文編碼為分布式語義表示,或者更具體地說,是一個d維向量。這個目标是通過LSTM編碼器實作的。LSTM編碼器的輸入是一個單詞序列,其中每個單詞t都來自詞彙表V。T由|T|×|V|維矩陣表示、 矩陣T的每一行對應一個單詞。T的行跟随T的單詞序列。每個單詞由一個| V |維one-shot向量表示。
3.3.2嵌入矩陣
将原始的一個one-hot向量通過查找|v|×d維表X映射到分布向量中,X是單詞嵌入矩陣,X的行i是字Ti的d維分布向量xi。單詞嵌入矩陣X可以使用CBOW和Skip gram等單詞嵌入模型進行預訓練,也可以在神經網絡架構中學習
3.4引文編碼
在本小節中,我們将介紹引文編碼器。我們使用不同于上下文編碼器的引文編碼器。究其原因,不僅引文和語境來自不同的作者,而且語錄通常使用不同的表達方式。在我們的引文推薦架構中,一個好的引文表示模型是關鍵。為了解決引文表示的困難,我們利用因引文的外部特性并使用更複雜的體系結構。quote編碼器的體系結構如圖4所示。
3.4.1體系結構
引文最直接的編碼器是使用與圖3中的上下文編碼器相同的架構。引文和上下文共享一個通用的單詞嵌入矩陣,盡管它們有不同的LSTM參數。我們将在稍後的實驗中證明這個模型的性能不好。這表明,由于引文的特性,引文編碼并不容易。引語往往以非平凡的方式來表達其意義,引語中使用的詞語可能與它們的典型意義不同。一種直覺的改進方法是為引号指定不同的單詞嵌入矩陣。這使得對引文中所用單詞的不同含義進行模組化更加容易。然而,學習一個好的引用詞嵌入矩陣仍然不容易。原因是,不同作者或不同主題的引文中的詞語可能仍有很大差異。由于缺乏大量的引文語料庫,很難學習好的引文嵌入方法。
在本研究中,我們提出一個更複雜的模型來解決上述問題。模型如圖4所示。右邊部分是典型的LSTM編碼器,由“輸入引文”分隔,使用引文單詞嵌入矩陣和LSTM編碼器将引文編碼成向量表示。左半部分說明如何獲得引文單詞嵌入矩陣。關鍵是學習引文中單詞的偏差嵌入矩陣Xd,通過将典型的嵌入矩陣X和引文偏差嵌入矩陣Xd合并得到引号q的最終引文單詞嵌入矩陣Xq,如下所示:
其中diag是根據向量構造對角矩陣的函數。圖4中的“⊕”表示元素相加,“⊗”表示向量v與矩陣M之間的運算diag(v)×M。
是作者權重向量,
是q的主題權重向量。這兩種權重向量分别來自作者權重矩陣
和主題權重矩陣
,而這兩個矩陣是引入以用來反映該引文中用詞的作者偏好以及主題偏好,這将在3.4.3中介紹。
3.4.2偏差嵌入矩陣
偏差矩陣Xd允許模型學習引文中單詞的不同單詞嵌入,即學習單詞表示在引文環境中的含義。但是,如果同一個單詞的引文來自不同的作者或是談論不同的話題,那麼在不同的引語中使用的同一個單詞的含義可能仍然不同。是以,偏差矩陣不能直接加入到典型的嵌入矩陣中,形成引文嵌入矩陣。相反,我們為每個引文學習一個權重向量W=
+
,以控制哪些單詞以及偏差應在多大程度上添加到典型的單詞嵌入矩陣X中。
3.4.3權重向量
|V|維權重向量w表示引文中每個單詞的相應權重。w試圖根據引語的特點,反映不同引語中詞語的微妙用法。其基本思想是,該模型一般對引文學習一個偏差矩陣,進而使偏差矩陣反映出引文中詞的潛在意義。然而,在不同的引語中使用的同一個詞在意義上可能仍然不同。是以我們學習了兩種不同的權重矩陣:作者偏好權重矩陣和主題偏好權重矩陣
包含所有不同作者的
,Wtopic包含所有不同主題的Wtopic。給定一個引用q,首先根據其作者得到其權重向量
,然後根據其主題求和得到的全部主題向量得到
。然後根據方程(1)計算Xq。
這樣,模型可以根據作者、主題和上下文,為每個引文學習不同的單詞嵌入矩陣。這樣做的好處有兩個:一是可以學習一個不同的嵌入矩陣來更好地模拟單詞的意義;二是新的嵌入矩陣不能自由設定,依賴于主題和作者。權值矩陣有助于避免過度拟合,利用傳統神經網絡架構中不易加入的外部資訊。該模型假設在引文中使用的一個詞可能有不同的含義,但這些不同的含義有一些共同點,并且在偏離程度上有所不同。假設并不完美,但實驗結果表明了該政策的積極影響。盡管該模型為每個引文學習不同的單詞嵌入矩陣,但由于操作可以公式化為矩陣乘法,是以該體系結構沒有引入昂貴的計算。
有一個直覺的觀察,雖然在引語中使用的詞可能有不同于其典型意義的含義,但在一個引語中的大多數詞仍然保留原來的含義。是以,我們在權值矩陣中加入l1範數的稀疏限制,以減少字數的變化。
3.5模型訓練
在這一部分中,我們介紹了我們架構的學習目标和學習算法。
損失函數:給定一個查詢上下文向量vc和候選引用向量VQ,關聯度得分rc可以計算為rc=VQvcT。我們在rc上應用softmax函數,得到查詢上下文c在所有候選報價上的機率分布向量pc,如下所示:
其中上标(i)表示向量的第i個元素。然後用分類交叉熵定義c的損失Lc:
如果Q中的第i個引号是c的黃金引文,
=1,否則
=0。
損失函數L是C中所有查詢上下文的分類交叉熵損失的總和,以及參數正則化:
其中θ是要學習的所有參數的集合,包括上下文編碼器和引号編碼器的LSTM參數(上下文編碼器和引号編碼器有它們各自的W∗∗、b∗和W∗∗參數,但我們在此不加以區分):θ={Wxi,Whi,Wxf,Whf,Wxc,Whc,Wxo,Who,bi,bf,bc,bo,wci,wcf,wco,Wtopic,Wauthor,Xd}.
最優算法:在該模型中,我們使用AdaGrad算法來優化損失函數,該算法已被證明是一種非常有效的算法,并廣泛應用于神經網絡。AdaGrad算法通過除以累積梯度平方根來調整學習速率,進而适應不同參數下不同步驟的學習速率。使用步長η,AdaGrad在時間步長t計算特征i的學習率為:
其中,gt,i 表示在時間步驟t處特征i的梯度,并且是避免除以0的小值。
避免過度拟合:由于神經網絡結構深、參數多,使得神經網絡具有很好的拟合能力,也容易産生過拟合問題。在本文中,由于現有的訓練資料還不是很大,是以過拟合問題是一個有待解決的問題。我們介紹了三種避免過度拟合的技術,即正則化、dropout和預先訓練單詞嵌入。正則化是通過在損失函數中加入參數的l2範數正則化來實作的。dropout通過将LSTM編碼器的部分輸入随機設定為0來完成。
典型的單詞嵌入矩陣X既可以在模型中學習,也可以使用預先訓練的矩陣。我們使用一個預訓練的單詞嵌入矩陣并保持它的固定,因為我們發現如果在模型中學習嵌入矩陣,它很容易被過度拟合。如果嵌入矩陣是在相對較小的資料集中學習的,那麼它很容易被過度拟合。經驗是,對于為給定任務調整單詞嵌入,對于十萬的任務應該有要求資料集的最小大小。