陳 鈺,張安勤,許春輝
(上海電力大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,上海 201306)
隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)的規(guī)模不斷增大,信息過載的問題日益嚴(yán)重.因此快速準(zhǔn)確地抽取關(guān)鍵信息有著重大意義.關(guān)系抽取在信息抽取中有著舉足輕重的作用,目的是提取自然語言句子中實體對之間的語義關(guān)系.實體關(guān)系抽取作為自然語言處理的一項基本任務(wù),是知識圖譜、自動問答、機器翻譯,自動文摘等領(lǐng)域的關(guān)鍵模塊.隨著深度學(xué)習(xí)的不斷發(fā)展,引起了人們對NRE的興趣,現(xiàn)在大多使用神經(jīng)網(wǎng)絡(luò)來自動學(xué)習(xí)語義特征.
作為先驅(qū),Liu 等提了一個基于CNN的關(guān)系抽取模型[1].在此基礎(chǔ)上,Zeng 等提出一個帶有最大池化層的CNN 模型[2],并且引入了位置嵌入來表示位置信息,然后他們設(shè)計了PCNN 模型[3],但是PCNN 模型在句子選擇方面存在問題.為了解決這一問題,Lin 等[4]將注意力機制應(yīng)用于其中.盡管PCNN 模型有著不錯的效果,但是它不能像RNN 類型的模型一樣挖掘上下文的信息.因此,帶有注意力機制的LSTM 網(wǎng)絡(luò)也被應(yīng)用于關(guān)系抽取任務(wù)中[5,6].
盡管NRE 不需要進(jìn)行特征工程,但是它們忽略了不同語言輸入粒度對模型的影響,特別是對于中文關(guān)系抽取.根據(jù)輸入的粒度的不同,現(xiàn)有的中文關(guān)系抽取方法可以分為基于字符的關(guān)系抽取和基于詞的關(guān)系抽取的兩種.
對于基于字符的關(guān)系抽取,它將每個輸入語句看作一個字符的序列.這種方法的缺點是不能充分利用詞語級別的信息,想比較于基于詞語的方法捕獲到的特征少.對于基于詞語級別的關(guān)系抽取,首先要進(jìn)行分詞,導(dǎo)出一個詞序列,然后將其輸入到神經(jīng)網(wǎng)絡(luò)模型中.但是,基于詞的模型的性能會受到分割質(zhì)量的顯著影響[7].
比如說,一句中文語句“喬布斯設(shè)計部分蘋果”有兩個實體,“喬布斯”和“蘋果”,它們之間的關(guān)系為“設(shè)計”.在這種情況下,對于這句話的分詞為:“喬布斯/設(shè)計/部分/蘋果”.但是,隨著對語句切分的變化,句子的含義可能變得完全不同.如果該句話分割為:“喬布斯設(shè)計部/分/蘋果”,那么這句話的實體就變?yōu)椤皢滩妓乖O(shè)計部”和“蘋果”,它們之間的關(guān)系轉(zhuǎn)變?yōu)椤胺职l(fā)”.因此,無論是基于字符的方法還是基于詞語的方法都不能充分利用數(shù)據(jù)中的語義信息.因此,要從純文本中發(fā)現(xiàn)高層實體關(guān)系,需要不同粒度的綜合信息的幫助.此外,中文的詞語存在大量的多義詞,這限制了模型挖掘深層次語義信息的能力.例如,詞語“蘋果”含有兩種不同的含義,即一種水果和電子產(chǎn)品.但是,如果沒有語義信息的加入,就很難從純文本中學(xué)習(xí)到這種信息.
本文提出了一種能夠綜合利用句子內(nèi)部的多粒度信息以及外部知識的網(wǎng)絡(luò)框架(PL-Lattice)來完成中文關(guān)系抽取任務(wù).(1)該模型采用基于Lattice-LSTM 模型的結(jié)構(gòu),將基于詞語級別的特征動態(tài)的集成到基于字符級別的特征中.因此,可以利用句子中的多粒度信息而不受到分詞錯誤的影響.(2)為了解決中文中多義詞的現(xiàn)象,改模型加入了HowNet[8]這一外部知識庫對詞語的多種語義進(jìn)行標(biāo)注,在訓(xùn)練階段結(jié)合語義信息,提高模型的挖掘能力.
給定一個中文句子和其中的兩個標(biāo)記實體,中文關(guān)系抽取的任務(wù)就是提取兩個標(biāo)記實體之間的語義關(guān)系.本文提出用于中文關(guān)系抽取的PL-Lattice 模型,該模型的整體結(jié)構(gòu)如圖1所示.
圖1 模型整體結(jié)構(gòu)
(1)輸入層:給定一個以兩個目標(biāo)實體為輸入的中文語句,該部分表示語句中的每個單詞和字符.該模型可以同時提取和利用字級和詞級的信息.
(2)PL-Lattice 編碼器:這一部分使用Lattice-LSTM網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ),改進(jìn)了字級別和詞級別的輸入的循環(huán)結(jié)構(gòu),并且將外部語義知識融入到網(wǎng)絡(luò)里面來實現(xiàn)語義的消歧.
(3)注意力機制:使用詞級注意力機制和句級注意力機制.
(4)關(guān)系分類層:通過Softmax函數(shù)輸出關(guān)系類型.
本文模型的輸入是一個帶有兩個標(biāo)記實體的中文句子.為了利用多粒度信息,本文在句子中同時使用字級和詞級信息.
(1)字符集向量表示
本文將每個輸入的中文語句看作一個字符序列.給定一個由M個字符組成的句子s,表示為s={c1,···,cM},使用Skip-gram 模型[9]將每個字符映射到一個dc維的向量,表示為∈Rdc.
此外,在關(guān)系抽取任務(wù)中,句子中的字到命名實體的距離能夠影響關(guān)系抽取的結(jié)果.所以,本文采用位置特征來指定句子中的字符,即當(dāng)前字符到第一個命名實體和第二個命名實體的相對距離[2].具體來說,第i個字符ci到兩個命名實體的距離分別表示為和.對于本文使用以下的方法來計算:
其中,b1和e1為第一個命名實體的開始和結(jié)束索引,的計算方法與等式1 類似.然后,和分別映射為dp維度的向量,表示為∈Rdp以及∈Rdp.
(2)詞級向量表示
雖然模型有字符特征作為輸入,但是為了充分捕捉句子中的多粒度特征,本文還需要提取句子中的所有潛在的詞級的特征,潛在詞為是由字符組成的句子中的任意子序列.這些子序列與構(gòu)建在大型原始文本上的字典D相匹配得到真正的詞級特征.
用wb,e來表示由第b個字符開始,第e個字符結(jié)束的詞.為了將wb,e表示為向量形式,大部分文章使用Word2Vec 模型[9]來將其轉(zhuǎn)化為詞向量.
但是,Word2Vec 模型只是將詞語映射為一個嵌入向量,忽略了一詞多義這一事實.本文使用SAT 模型來解決這一問題,SAT 模型是基于Skip-gram 模型改進(jìn)出來的,它可以同時學(xué)習(xí)詞語以及意義之間的關(guān)系,并將其轉(zhuǎn)換為詞向量.
給定一個詞語wb,e,首先通過檢索HowNet 這一知識庫來獲得該詞語的K種意義.用S ense(wb,e)表示詞語wb,e所有意義的集合.通過SAT 模型將每種意義映射為向量形式,表示為∈Rdsen.最終,wb,e表示為一個向量集合,即
本文的編碼器是在Lattice-LSTM的基礎(chǔ)上,進(jìn)行改進(jìn),加入詞的意義這一特征,改進(jìn)了基于字符級別和基于詞級別的循環(huán)單元的網(wǎng)絡(luò)結(jié)構(gòu);通過改進(jìn)結(jié)構(gòu),減輕了Lattice-LSTM 編碼器中對詞的特征的提取導(dǎo)致的字符級別的特征被削弱的現(xiàn)象;并且使用了雙向循環(huán)單元的結(jié)構(gòu),使編碼器能夠同時捕捉學(xué)習(xí)正向和反向的信息,能夠顯著提高模型的準(zhǔn)確率以及合理性.
(1)Lattice-LSTM 編碼器
LSTM 神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)的變種,主要思想就是引入一種自適應(yīng)門控機制來控制LSTM 單元保留以前狀態(tài)的同時學(xué)習(xí)當(dāng)前數(shù)據(jù)輸入的特征.LSTM神經(jīng)網(wǎng)絡(luò)有3 個門:輸入門ij、遺忘門fj和輸出門oj.基于字符的LSTM 網(wǎng)絡(luò)表示為:
其中,σ ()為激活函數(shù),W和U為可訓(xùn)練權(quán)重矩陣,b為偏置.
在輸入語句中給定一個詞語wb,e,與外部詞典D相匹配,可以表示為:
其中,b和e表示詞語在句子中的開始與結(jié)束的索引,ew表示一個查找表.在這樣的情況下,對的計算需要結(jié)合詞語級的表示,先構(gòu)建詞語級別的門控邏輯單元,再與字級的LSTM 網(wǎng)絡(luò)相結(jié)合,形成Lattice-LSTM 編碼器.使用來 表示的細(xì)胞狀態(tài).的計算方法如下:
其中,和分別表示詞級的門控邏輯單元里面的輸入門和遺忘門.
第e個字符的細(xì)胞狀態(tài)將通過合并以索引e結(jié)束的所有詞語的信息來計算,這些單詞wb,e具有b∈這樣的特征.為了控制每個詞語的輸入,設(shè)計了一個額外的門:
第e個字符的細(xì)胞狀態(tài)計算方法如下:
雖然Lattice-LSTM 編碼器能夠利用字符和詞的信息,但是它不能充分考慮中文的一詞多義的特征.例如,如圖1所示,w2,3(蘋果)這個詞有兩種意義,代表一種水果,但是在Lattice-LSTM 中只有一個表示w2,3.并且Lattice-LSTM 編碼器會造成對詞的信息的過度提取會減弱字符級別的信息,甚至?xí)雎宰址男畔?影響模型的效果.
為了解決這兩個缺點,本文改進(jìn)了模型.首先在模型中加入了感知層,將外部語義融入其中,如1.1.2 節(jié)中所示,本文使用來詞語wb,e的第k種意義.其次,改進(jìn)了詞級和字符級的LSTM 結(jié)構(gòu),加強了字符之間的信息傳遞,減弱詞級信息的提取.
并且本文采用了雙向循環(huán)網(wǎng)絡(luò)的結(jié)構(gòu),使編碼器能同時提取句子上下文的關(guān)系與信息對于字符級的循環(huán)神經(jīng)網(wǎng)絡(luò)單元,本文改進(jìn)的前向傳播的計算方法如下:
其中,σ ()為激活函數(shù),W和U為可訓(xùn)練權(quán)重矩陣,b為偏置.
這種結(jié)構(gòu)將上一個單元的細(xì)胞狀態(tài)合并進(jìn)入當(dāng)前單元的各個門控邏輯單元中,增強了對的影響,即增強了字符級別的信息的提取能力.
對于詞級的循環(huán)神經(jīng)網(wǎng)絡(luò)單元,本文的改進(jìn)的前向傳播的計算方法如下:
其中,表示詞語wb,e的的第k個意義的細(xì)胞狀態(tài).這種結(jié)構(gòu)將遺忘門合并進(jìn)輸入門,會在傳入信息的時候就遺忘一部分信息,從而起到減弱詞級別信息的作用.
然后,將所有的意義的細(xì)胞狀態(tài)結(jié)合起來,得到,表示詞語wb,e所有意義的細(xì)胞狀態(tài),計算方法如下:
所有感知層的細(xì)胞狀態(tài)都被合并為,這樣可以更好的表示一個詞語多義的現(xiàn)象.然后,類似于式(9)到式(12),以索引e結(jié)尾的所有詞語的細(xì)胞狀態(tài)融入到第e個字符的細(xì)胞狀態(tài):
隱含狀態(tài)h的計算方法與式(5)相同.
最終將每一個單元前向傳播與后向傳播得到的隱含狀態(tài)結(jié)合起來,計算方法如下:
其中,⊕表示將兩個向量拼接起來.然后送入注意力層.
(3)注意力機制與關(guān)系分類
近年來,注意力機制在深度學(xué)習(xí)的各個領(lǐng)域取得了成功.從本質(zhì)上講,深度學(xué)習(xí)中的注意力機制和人類的選擇性注意力類似,都是從眾多的信息中選擇出對當(dāng)前任務(wù)目標(biāo)更重要的信息.本文采用了雙重注意力機制.
由雙向PL-Lattice 網(wǎng)絡(luò)訓(xùn)練產(chǎn)生的輸出向量組成矩陣h=[h1,h2,h3,···,hM],其中M表示句子的長度.
基于詞級的注意力機制的句子表示的計算方法如下所示:
其中,ω為可訓(xùn)練參數(shù)矩陣,α為h所對應(yīng)的權(quán)重向量.
為了計算每種關(guān)系相對于句子的權(quán)重,使用句子級的注意力機制,將句子S的特征向量h?送入Softmax分類器:
其中,W∈RY×dhb∈RY為變換矩陣,為偏執(zhí)向量.Y表示關(guān)系類型的數(shù)量.y表示每種類型的概率.
最終,給定所有的訓(xùn)練樣本T=(S(i),y(i)),本文使用交叉熵作為目標(biāo)函數(shù)來計算模型輸出結(jié)果分別與真實結(jié)果分布的差距,如式(28)所示:
其中,θ表示模型中所有的參數(shù).
由于公開的中文關(guān)系抽取語料庫的匱乏,目前還沒有較為通用且權(quán)威的中文遠(yuǎn)程監(jiān)督關(guān)系抽取數(shù)據(jù)集.
本文使用的數(shù)據(jù)為中文的散文數(shù)據(jù)[10].該數(shù)據(jù)集收錄837 篇中文文章,包含9 中關(guān)系類型,其中訓(xùn)練集695 篇,測試集84 篇,驗證集58 篇.
本文實驗采用3 種評估指標(biāo).召回率,F1 以及AUC.
召回率(Recall)是度量的是多個正例被分為正例:
式中,TP表示將正類預(yù)測為正類的數(shù)量,FN表示將正類預(yù)測為負(fù)類的數(shù)量.
F1是分類問題的一個衡量指標(biāo),數(shù)值在0~1 之間:
式中,FP表示將負(fù)類預(yù)測為正類的數(shù)量.
本文實驗參數(shù)的設(shè)定如表1所示.
表1 實驗參數(shù)設(shè)定
為了驗證PL-Lattice 模型在中文實體關(guān)系抽取方面的效果,本文設(shè)置了5 組實驗:
(1)BLSTM[5]:提出了一種雙向的LSTM 用于關(guān)系抽取.
(2)Att-BLSTM[6]:在雙向LSTM的基礎(chǔ)上加入了詞級注意力機制.
(3)PCNN[3]:提出來一種具有多實例的分段CNN模型.
(4)PCNN+Att[4]:利用注意力機制改進(jìn)了PCNN.
(5)Lattice-LSTM[7]:使用基礎(chǔ)的Lattice-LSTM 模型加注意力機制作為對比實驗.
實驗結(jié)果如表2所示.
各模型的召回率隨訓(xùn)練次數(shù)的變化如圖2所示.
表2 實驗結(jié)果
圖2 各模型召回率隨訓(xùn)練次數(shù)的變化曲線
PL-Lattice 模型的F1 值和AUC 隨訓(xùn)練次數(shù)的變化如圖3所示.
從實驗結(jié)果可以看出,注意力機制的加入能夠使模型關(guān)注到句子中更重要的部分,從而提升模型的表現(xiàn)能力.由于LSTM 模型相對于CNN 模型在處理序列數(shù)據(jù)上擁有天然的優(yōu)勢,所以會表現(xiàn)出更好的水平.
本文提出的PL-Lattice 模型在各方面都優(yōu)于其他5 種模型.經(jīng)過分析,認(rèn)為主要的原因是本文對于分詞更加精準(zhǔn),模型使用了多粒度的信息,使詞向量的表示更加合理化,并且加入了雙重注意力機制,從多個方面提升了模型的可解釋性和能力.
圖3 PL-Lattice 模型F1和AUC 隨訓(xùn)練次數(shù)的變換曲線
本文提出了一種用于中文關(guān)系的PL-Lattice 模型,該模型同時使用了字符級別和詞級別的信息,并且引入了外部語義庫來表示詞向量,使其擁有更深層次的語義信息,避免了一詞多義的現(xiàn)象.加入了基于詞級和基于句子級別的雙重注意力機制,關(guān)注了詞和句子的多個方面.在散文數(shù)據(jù)集上與其他5 種模型進(jìn)行了對比,表現(xiàn)出更好的優(yōu)越性.
在未來,可以將更多粒度的語料信息融入到模型中,這些信息可能會由于模型挖掘更深層次的意義特征.