李艷斌
(四川大學(xué)計算機(jī)學(xué)院,成都 610065)
關(guān)系抽取指的是給定一個句子,包含實體頭詞(用h表示)和實體尾詞(用t表示),預(yù)測h和t之間的關(guān)系(用 r表示),通常表示為(h,r,t)這樣的實體關(guān)系三元組。例如:在句子“華盛頓是美國的首都”中,已知包含實體詞“華盛頓”和“美國”,關(guān)系抽取要做的是預(yù)測這兩個實體詞之間的關(guān)系,這里的關(guān)系為“首都”關(guān)系。關(guān)系抽取具有非常重要的研究價值,可用于自動問答、知識圖譜的自動構(gòu)建以及信息檢索等自然語言處理任務(wù)。
盡管現(xiàn)有的數(shù)量大質(zhì)量高的知識庫如WIKIdata、Freebase、DBpedia等,已經(jīng)包含了大量的實體關(guān)系三元組,但是距離現(xiàn)實世界中三元組數(shù)量仍然相差甚遠(yuǎn),因此仍然需要對知識庫進(jìn)行不斷的補充。目前關(guān)系抽取的方法主要分為有監(jiān)督學(xué)習(xí)方法和無監(jiān)督學(xué)習(xí)方法。無監(jiān)督學(xué)習(xí)方法通常使用人工定義的一些規(guī)則,然后將規(guī)則與自由文本進(jìn)行對齊的方法進(jìn)行抽取,但是這種方法比較依賴人工規(guī)則,而且準(zhǔn)確率較低;有監(jiān)督學(xué)習(xí)方法通過訓(xùn)練傳統(tǒng)機(jī)器學(xué)習(xí)模型或者神經(jīng)網(wǎng)絡(luò)模型然后進(jìn)行關(guān)系抽取,近幾年來取得了很好的發(fā)展。但有監(jiān)督學(xué)習(xí)需要大量的標(biāo)注數(shù)據(jù),而人工標(biāo)注數(shù)據(jù)將耗費大量的人力物力。為了解決該問題,Mintz[1]等人提出使用遠(yuǎn)距離監(jiān)督方法對自由文本進(jìn)行標(biāo)注,高效地產(chǎn)生大量有標(biāo)注數(shù)據(jù)。遠(yuǎn)距離監(jiān)督方法假設(shè):知識庫中存在某個實體關(guān)系三元組(h,r,t),在自由文本中包含該實體對(h,t)的所有句子,都表示t這種關(guān)系。例如:知識庫中包含(喬布斯,創(chuàng)始人,蘋果)這樣的三元組,那么在“喬布斯出生于美國,發(fā)明家、企業(yè)家、美國蘋果公司的聯(lián)合創(chuàng)始人”這句話中,“喬布斯”和“蘋果”就被打上“創(chuàng)始人”標(biāo)簽。雖然遠(yuǎn)距離監(jiān)督能夠高效獲得大量標(biāo)注數(shù)據(jù),但由于該假設(shè)過于強(qiáng)烈,也會引入了大量的噪聲數(shù)據(jù),例如,在“喬布斯在家里吃著蘋果”這句話中,“喬布斯”和“蘋果”就不是表達(dá)創(chuàng)始人關(guān)系,但是還是會被標(biāo)注為“創(chuàng)始人”。
為了解決遠(yuǎn)監(jiān)督數(shù)據(jù)集中的錯誤標(biāo)簽的問題,早期Hoffmann[2]、Surdeanu[3]等人使用多實例方法進(jìn)行關(guān)系抽取,多實例方法通過使用取平均或者取最大可以有效緩解錯誤標(biāo)簽帶來的一些問題,但是這些方法比較依賴人工構(gòu)造特征,這些特征來自于一些特征工具,難免會存在一些問題,對后面的模型效果帶來影響。隨著神經(jīng)網(wǎng)絡(luò)在各個領(lǐng)域取得了顯著的成效,研究學(xué)者將神經(jīng)網(wǎng)絡(luò)應(yīng)用于關(guān)系抽取中。Socher[4]提出使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)用于關(guān)系抽取,Zeng[5]和dos Santos[6]采用卷積神經(jīng)網(wǎng)絡(luò)(CNN)用于關(guān)系抽取。但是以上方法都沒有考慮遠(yuǎn)監(jiān)督數(shù)據(jù)集中的噪聲影響。針對該問題,Zeng[7]等人提出分段卷積(PCNNs)的多實例方法來緩解錯誤標(biāo)簽帶來的影響。Zeng等人假設(shè)一個bag(bag表示包含同樣一個實體對的所有句子)中至少有一個句子表達(dá)特定的關(guān)系。因此,他們的模型僅僅利用bag中最可能的句子來進(jìn)行關(guān)系預(yù)測,但是這種方法會丟棄bag中其他句子,而其他句子可能對關(guān)系預(yù)測有一定的作用。為了解決該問題,Lin[8]等人提出實例注意力方法進(jìn)行關(guān)系抽取。該方法為bag中每個句子學(xué)習(xí)一定的注意力,然后加權(quán)求和后得到bag的表達(dá),再進(jìn)行關(guān)系預(yù)測。這種方法既可以使得錯誤標(biāo)簽的句子的注意力盡可能小從而降低錯誤標(biāo)簽帶來的影響,又可以利用bag中所有的句子,不會造成有價值的句子被丟棄。但是這種方法存在的問題是無法解決整個bag都是噪聲的問題。為了解決這個問題,F(xiàn)eng[9]提出使用強(qiáng)化學(xué)習(xí)的方法來進(jìn)行關(guān)系抽取,取得了目前最先進(jìn)的效果。
遠(yuǎn)監(jiān)督關(guān)系抽取解決噪聲問題的相關(guān)工作中,最具代表性的工作主要有兩個:一是分段卷積(PCNNs),二是:實例注意力。下面對這兩種種方法進(jìn)行詳細(xì)介紹。
分段卷積的提出主要是考慮到實體對在句子中的存在一定的結(jié)構(gòu)特征,即兩個實體通??梢园丫渥臃殖扇?,這種結(jié)構(gòu)信息對于預(yù)測兩個實體之間的關(guān)系會起到一定的促進(jìn)作用。下面我們將對PCNNs每個模塊進(jìn)行詳細(xì)介紹。
(1)嵌入層
模型的輸入為詞序列,該詞序列中的每個詞都是用詞典序表示。首先使用詞嵌入層,通過查表的方法將句子中的所有詞映射為k維的實值向量,使用的是Skip-gram[10]模型預(yù)訓(xùn)練的詞向量。使用預(yù)訓(xùn)練的詞向量已經(jīng)成為一種常見的方法,預(yù)訓(xùn)練詞向量可以捕捉單詞的語法和語義信息,能夠提升模型效果。除了使用詞嵌入外,PCNN還使用了位置信息引入實體在句子中的位置。具體的做法為首先計算句子中的每個詞分別距離兩個實體的相對距離,例如:句子“喬布斯是蘋果的聯(lián)合創(chuàng)始人?!睂τ趩卧~“是”,相對與“喬布斯”的位置為1,相對與“蘋果”的位置為-1。然后使用位置嵌入層將每個詞相對于兩個實體的位置映射為位置向量,位置嵌入層使用隨機(jī)初始化的矩陣。
這樣每個詞就有三個向量,分別為本身的詞向量、相對于第一個實體的位置向量以及相對于第二個實體的位置向量,然后將這三個向量進(jìn)行拼接得到包含位置信息的詞向量。
(2)卷積層和分段最大池化
經(jīng)過嵌入層得到的詞向量沒有上下文信息,因此,PCNNs首先使用CNN對詞向量進(jìn)行編碼,使得編碼后的詞向量能夠包含一定的上下文信息。CNN通過卷積核在句子序列上進(jìn)行滑動計算來得到單詞與前后文的關(guān)系,一個卷積核只能得到一個特征向量,要想得到不同特征向量則需要多個不同的卷積核。經(jīng)過多個卷積核編碼后,傳統(tǒng)的做法是直接對這多個特征向量進(jìn)行降維以進(jìn)行下一步的計算,如最大池化,但是簡單的進(jìn)行最大池化并不能很好的捕捉實體詞在句子中的結(jié)構(gòu)信息,而該結(jié)構(gòu)信息對于關(guān)系的預(yù)測有一定的作用。因此PCNNs使用分段最大池化來捕捉這種關(guān)系。經(jīng)過不同卷積核得到多個向量,每個向量都被兩個實體詞分為三個部分,分段最大池化就是在每一部分取最大值,然后將得到的最大值拼接成一個向量表達(dá)。
(3)輸出
經(jīng)過分段最大池化得到的向量表達(dá),首先要經(jīng)過一層全連接將維度進(jìn)行轉(zhuǎn)變,轉(zhuǎn)變?yōu)榕c關(guān)系個數(shù)相同的維度,然后再經(jīng)過Softmax后就可以得到每種關(guān)系的概率分布,選出概率最大的關(guān)系即可。
(4)多實例學(xué)習(xí)
多實例模型中,輸入為一個bag,bag中的句子都包含相同的實體對,目標(biāo)就是預(yù)測bag中實體對的類別。但是訓(xùn)練時,并沒有用到bag中的所有句子,而是通過計算,只使用bag中標(biāo)簽概率最大的句子來進(jìn)行訓(xùn)練,這樣也就避免了其他噪聲句子對預(yù)測帶來的影響。
實例注意力主要解決的問題是PCNNs多實例學(xué)習(xí)在訓(xùn)練中只是利用bag中最可信的句子來訓(xùn)練,丟失bag中其他有價值的句子。實例注意力的做法為:同樣使用PCNNs對bag中的每個句子進(jìn)行編碼,但是每種關(guān)系都其對應(yīng)的關(guān)系向量,將當(dāng)前bag的關(guān)系向量與bag中的所有句子向量計算注意力,這樣bag中所有句子會得到相對于當(dāng)前關(guān)系的注意力權(quán)重,然后將句子表達(dá)與得到的權(quán)重進(jìn)行相乘并求和得到bag表達(dá)。通過這種計算方法,噪聲數(shù)據(jù)的權(quán)重會比較低,達(dá)到降低噪聲數(shù)據(jù)對于預(yù)測的影響,正例數(shù)據(jù)權(quán)重都會比較高,就可以充分利用所有的正例數(shù)據(jù),使得預(yù)測更加準(zhǔn)確。
遠(yuǎn)監(jiān)督關(guān)系抽取主要使用的數(shù)據(jù)集為NYT數(shù)據(jù)集,該數(shù)據(jù)集由Riedel[11]首次提出,是由Freebase的實體對在New York Times上對齊產(chǎn)生,通過斯坦福命名實體識別工具標(biāo)注句子中的實體詞。來自2005-2006年的句子被作為訓(xùn)練集,共有522611個句子,281270個實體對和18252個三元組。來自2007年的句子被作為測試集,共有172448個句子,96678個實體對和1950個關(guān)系三元組。共有52種關(guān)系和一種表示實體間沒有關(guān)系的NA關(guān)系。
在關(guān)系抽取任務(wù)中,遠(yuǎn)距離監(jiān)督可以高效的標(biāo)注大量的數(shù)據(jù),但是同樣也引入了大量的噪聲,為了解決數(shù)據(jù)集中的噪聲問題,早期的研究使用人工構(gòu)造特征的傳統(tǒng)機(jī)器學(xué)習(xí)方法進(jìn)行解決,取得了一定的效果。隨著神經(jīng)網(wǎng)絡(luò)在各個領(lǐng)域的發(fā)展,關(guān)系抽取也開始使用神經(jīng)網(wǎng)絡(luò)方法?,F(xiàn)有的大多數(shù)方法都是使用神經(jīng)網(wǎng)絡(luò)模型,取得了非常好的效果。近期強(qiáng)化學(xué)習(xí)方法在關(guān)系抽取中的應(yīng)用,使得關(guān)系抽取得到了進(jìn)一步的發(fā)展。相信隨著技術(shù)的發(fā)展,今后一定會有更成熟更完善的方法提高去噪效果,使得關(guān)系抽取更加準(zhǔn)確。