陳 鈺,張安勤,許春輝
(上海電力大學 計算機科學與技術學院,上海 201306)
隨著大數據時代的到來,數據的規模不斷增大,信息過載的問題日益嚴重.因此快速準確地抽取關鍵信息有著重大意義.關系抽取在信息抽取中有著舉足輕重的作用,目的是提取自然語言句子中實體對之間的語義關系.實體關系抽取作為自然語言處理的一項基本任務,是知識圖譜、自動問答、機器翻譯,自動文摘等領域的關鍵模塊.隨著深度學習的不斷發展,引起了人們對NRE的興趣,現在大多使用神經網絡來自動學習語義特征.
作為先驅,Liu 等提了一個基于CNN的關系抽取模型[1].在此基礎上,Zeng 等提出一個帶有最大池化層的CNN 模型[2],并且引入了位置嵌入來表示位置信息,然后他們設計了PCNN 模型[3],但是PCNN 模型在句子選擇方面存在問題.為了解決這一問題,Lin 等[4]將注意力機制應用于其中.盡管PCNN 模型有著不錯的效果,但是它不能像RNN 類型的模型一樣挖掘上下文的信息.因此,帶有注意力機制的LSTM 網絡也被應用于關系抽取任務中[5,6].
盡管NRE 不需要進行特征工程,但是它們忽略了不同語言輸入粒度對模型的影響,特別是對于中文關系抽取.根據輸入的粒度的不同,現有的中文關系抽取方法可以分為基于字符的關系抽取和基于詞的關系抽取的兩種.
對于基于字符的關系抽取,它將每個輸入語句看作一個字符的序列.這種方法的缺點是不能充分利用詞語級別的信息,想比較于基于詞語的方法捕獲到的特征少.對于基于詞語級別的關系抽取,首先要進行分詞,導出一個詞序列,然后將其輸入到神經網絡模型中.但是,基于詞的模型的性能會受到分割質量的顯著影響[7].
比如說,一句中文語句“喬布斯設計部分蘋果”有兩個實體,“喬布斯”和“蘋果”,它們之間的關系為“設計”.在這種情況下,對于這句話的分詞為:“喬布斯/設計/部分/蘋果”.但是,隨著對語句切分的變化,句子的含義可能變得完全不同.如果該句話分割為:“喬布斯設計部/分/蘋果”,那么這句話的實體就變為“喬布斯設計部”和“蘋果”,它們之間的關系轉變為“分發”.因此,無論是基于字符的方法還是基于詞語的方法都不能充分利用數據中的語義信息.因此,要從純文本中發現高層實體關系,需要不同粒度的綜合信息的幫助.此外,中文的詞語存在大量的多義詞,這限制了模型挖掘深層次語義信息的能力.例如,詞語“蘋果”含有兩種不同的含義,即一種水果和電子產品.但是,如果沒有語義信息的加入,就很難從純文本中學習到這種信息.
本文提出了一種能夠綜合利用句子內部的多粒度信息以及外部知識的網絡框架(PL-Lattice)來完成中文關系抽取任務.(1)該模型采用基于Lattice-LSTM 模型的結構,將基于詞語級別的特征動態的集成到基于字符級別的特征中.因此,可以利用句子中的多粒度信息而不受到分詞錯誤的影響.(2)為了解決中文中多義詞的現象,改模型加入了HowNet[8]這一外部知識庫對詞語的多種語義進行標注,在訓練階段結合語義信息,提高模型的挖掘能力.
給定一個中文句子和其中的兩個標記實體,中文關系抽取的任務就是提取兩個標記實體之間的語義關系.本文提出用于中文關系抽取的PL-Lattice 模型,該模型的整體結構如圖1所示.

圖1 模型整體結構
(1)輸入層:給定一個以兩個目標實體為輸入的中文語句,該部分表示語句中的每個單詞和字符.該模型可以同時提取和利用字級和詞級的信息.
(2)PL-Lattice 編碼器:這一部分使用Lattice-LSTM網絡結構為基礎,改進了字級別和詞級別的輸入的循環結構,并且將外部語義知識融入到網絡里面來實現語義的消歧.
(3)注意力機制:使用詞級注意力機制和句級注意力機制.
(4)關系分類層:通過Softmax函數輸出關系類型.
本文模型的輸入是一個帶有兩個標記實體的中文句子.為了利用多粒度信息,本文在句子中同時使用字級和詞級信息.
(1)字符集向量表示
本文將每個輸入的中文語句看作一個字符序列.給定一個由M個字符組成的句子s,表示為s={c1,···,cM},使用Skip-gram 模型[9]將每個字符映射到一個dc維的向量,表示為∈Rdc.
此外,在關系抽取任務中,句子中的字到命名實體的距離能夠影響關系抽取的結果.所以,本文采用位置特征來指定句子中的字符,即當前字符到第一個命名實體和第二個命名實體的相對距離[2].具體來說,第i個字符ci到兩個命名實體的距離分別表示為和.對于本文使用以下的方法來計算:

其中,b1和e1為第一個命名實體的開始和結束索引,的計算方法與等式1 類似.然后,和分別映射為dp維度的向量,表示為∈Rdp以及∈Rdp.
(2)詞級向量表示
雖然模型有字符特征作為輸入,但是為了充分捕捉句子中的多粒度特征,本文還需要提取句子中的所有潛在的詞級的特征,潛在詞為是由字符組成的句子中的任意子序列.這些子序列與構建在大型原始文本上的字典D相匹配得到真正的詞級特征.
用wb,e來表示由第b個字符開始,第e個字符結束的詞.為了將wb,e表示為向量形式,大部分文章使用Word2Vec 模型[9]來將其轉化為詞向量.
但是,Word2Vec 模型只是將詞語映射為一個嵌入向量,忽略了一詞多義這一事實.本文使用SAT 模型來解決這一問題,SAT 模型是基于Skip-gram 模型改進出來的,它可以同時學習詞語以及意義之間的關系,并將其轉換為詞向量.
給定一個詞語wb,e,首先通過檢索HowNet 這一知識庫來獲得該詞語的K種意義.用S ense(wb,e)表示詞語wb,e所有意義的集合.通過SAT 模型將每種意義映射為向量形式,表示為∈Rdsen.最終,wb,e表示為一個向量集合,即
本文的編碼器是在Lattice-LSTM的基礎上,進行改進,加入詞的意義這一特征,改進了基于字符級別和基于詞級別的循環單元的網絡結構;通過改進結構,減輕了Lattice-LSTM 編碼器中對詞的特征的提取導致的字符級別的特征被削弱的現象;并且使用了雙向循環單元的結構,使編碼器能夠同時捕捉學習正向和反向的信息,能夠顯著提高模型的準確率以及合理性.
(1)Lattice-LSTM 編碼器
LSTM 神經網絡是循環神經網絡的變種,主要思想就是引入一種自適應門控機制來控制LSTM 單元保留以前狀態的同時學習當前數據輸入的特征.LSTM神經網絡有3 個門:輸入門ij、遺忘門fj和輸出門oj.基于字符的LSTM 網絡表示為:

其中,σ ()為激活函數,W和U為可訓練權重矩陣,b為偏置.
在輸入語句中給定一個詞語wb,e,與外部詞典D相匹配,可以表示為:

其中,b和e表示詞語在句子中的開始與結束的索引,ew表示一個查找表.在這樣的情況下,對的計算需要結合詞語級的表示,先構建詞語級別的門控邏輯單元,再與字級的LSTM 網絡相結合,形成Lattice-LSTM 編碼器.使用來 表示的細胞狀態.的計算方法如下:

其中,和分別表示詞級的門控邏輯單元里面的輸入門和遺忘門.
第e個字符的細胞狀態將通過合并以索引e結束的所有詞語的信息來計算,這些單詞wb,e具有b∈這樣的特征.為了控制每個詞語的輸入,設計了一個額外的門:

第e個字符的細胞狀態計算方法如下:



雖然Lattice-LSTM 編碼器能夠利用字符和詞的信息,但是它不能充分考慮中文的一詞多義的特征.例如,如圖1所示,w2,3(蘋果)這個詞有兩種意義,代表一種水果,但是在Lattice-LSTM 中只有一個表示w2,3.并且Lattice-LSTM 編碼器會造成對詞的信息的過度提取會減弱字符級別的信息,甚至會忽略字符的信息,影響模型的效果.
為了解決這兩個缺點,本文改進了模型.首先在模型中加入了感知層,將外部語義融入其中,如1.1.2 節中所示,本文使用來詞語wb,e的第k種意義.其次,改進了詞級和字符級的LSTM 結構,加強了字符之間的信息傳遞,減弱詞級信息的提取.
并且本文采用了雙向循環網絡的結構,使編碼器能同時提取句子上下文的關系與信息對于字符級的循環神經網絡單元,本文改進的前向傳播的計算方法如下:

其中,σ ()為激活函數,W和U為可訓練權重矩陣,b為偏置.
這種結構將上一個單元的細胞狀態合并進入當前單元的各個門控邏輯單元中,增強了對的影響,即增強了字符級別的信息的提取能力.
對于詞級的循環神經網絡單元,本文的改進的前向傳播的計算方法如下:

其中,表示詞語wb,e的的第k個意義的細胞狀態.這種結構將遺忘門合并進輸入門,會在傳入信息的時候就遺忘一部分信息,從而起到減弱詞級別信息的作用.
然后,將所有的意義的細胞狀態結合起來,得到,表示詞語wb,e所有意義的細胞狀態,計算方法如下:

所有感知層的細胞狀態都被合并為,這樣可以更好的表示一個詞語多義的現象.然后,類似于式(9)到式(12),以索引e結尾的所有詞語的細胞狀態融入到第e個字符的細胞狀態:

隱含狀態h的計算方法與式(5)相同.
最終將每一個單元前向傳播與后向傳播得到的隱含狀態結合起來,計算方法如下:

其中,⊕表示將兩個向量拼接起來.然后送入注意力層.
(3)注意力機制與關系分類
近年來,注意力機制在深度學習的各個領域取得了成功.從本質上講,深度學習中的注意力機制和人類的選擇性注意力類似,都是從眾多的信息中選擇出對當前任務目標更重要的信息.本文采用了雙重注意力機制.
由雙向PL-Lattice 網絡訓練產生的輸出向量組成矩陣h=[h1,h2,h3,···,hM],其中M表示句子的長度.
基于詞級的注意力機制的句子表示的計算方法如下所示:

其中,ω為可訓練參數矩陣,α為h所對應的權重向量.
為了計算每種關系相對于句子的權重,使用句子級的注意力機制,將句子S的特征向量h?送入Softmax分類器:

其中,W∈RY×dhb∈RY為變換矩陣,為偏執向量.Y表示關系類型的數量.y表示每種類型的概率.
最終,給定所有的訓練樣本T=(S(i),y(i)),本文使用交叉熵作為目標函數來計算模型輸出結果分別與真實結果分布的差距,如式(28)所示:

其中,θ表示模型中所有的參數.
由于公開的中文關系抽取語料庫的匱乏,目前還沒有較為通用且權威的中文遠程監督關系抽取數據集.
本文使用的數據為中文的散文數據[10].該數據集收錄837 篇中文文章,包含9 中關系類型,其中訓練集695 篇,測試集84 篇,驗證集58 篇.
本文實驗采用3 種評估指標.召回率,F1 以及AUC.
召回率(Recall)是度量的是多個正例被分為正例:

式中,TP表示將正類預測為正類的數量,FN表示將正類預測為負類的數量.
F1是分類問題的一個衡量指標,數值在0~1 之間:

式中,FP表示將負類預測為正類的數量.
本文實驗參數的設定如表1所示.

表1 實驗參數設定
為了驗證PL-Lattice 模型在中文實體關系抽取方面的效果,本文設置了5 組實驗:
(1)BLSTM[5]:提出了一種雙向的LSTM 用于關系抽取.
(2)Att-BLSTM[6]:在雙向LSTM的基礎上加入了詞級注意力機制.
(3)PCNN[3]:提出來一種具有多實例的分段CNN模型.
(4)PCNN+Att[4]:利用注意力機制改進了PCNN.
(5)Lattice-LSTM[7]:使用基礎的Lattice-LSTM 模型加注意力機制作為對比實驗.
實驗結果如表2所示.
各模型的召回率隨訓練次數的變化如圖2所示.

表2 實驗結果

圖2 各模型召回率隨訓練次數的變化曲線
PL-Lattice 模型的F1 值和AUC 隨訓練次數的變化如圖3所示.
從實驗結果可以看出,注意力機制的加入能夠使模型關注到句子中更重要的部分,從而提升模型的表現能力.由于LSTM 模型相對于CNN 模型在處理序列數據上擁有天然的優勢,所以會表現出更好的水平.
本文提出的PL-Lattice 模型在各方面都優于其他5 種模型.經過分析,認為主要的原因是本文對于分詞更加精準,模型使用了多粒度的信息,使詞向量的表示更加合理化,并且加入了雙重注意力機制,從多個方面提升了模型的可解釋性和能力.

圖3 PL-Lattice 模型F1和AUC 隨訓練次數的變換曲線
本文提出了一種用于中文關系的PL-Lattice 模型,該模型同時使用了字符級別和詞級別的信息,并且引入了外部語義庫來表示詞向量,使其擁有更深層次的語義信息,避免了一詞多義的現象.加入了基于詞級和基于句子級別的雙重注意力機制,關注了詞和句子的多個方面.在散文數據集上與其他5 種模型進行了對比,表現出更好的優越性.
在未來,可以將更多粒度的語料信息融入到模型中,這些信息可能會由于模型挖掘更深層次的意義特征.