日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

关系抽取之远程监督算法

發(fā)布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 关系抽取之远程监督算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、 關(guān)系抽取綜述

二、 遠(yuǎn)程監(jiān)督關(guān)系抽取算法的濫觴

三、 多實(shí)例學(xué)習(xí)和分段最大池化

四、 句子級別的注意力機(jī)制

一、關(guān)系抽取綜述

  信息抽取是自然語言處理中非常重要的一塊內(nèi)容,包括實(shí)體抽取(命名實(shí)體識別,Named Entity Recognition)、關(guān)系抽取(Relation Extraction)和事件抽取(Event Extraction)。

  這次介紹的關(guān)系抽取屬于自然語言理解(NLU)的范疇,也是構(gòu)建和擴(kuò)展知識圖譜的一種方法。

  關(guān)系抽取理解起來也比較簡單,比如下面圖片中的第一句話:

  He was in Tennessee.

  首先做命名實(shí)體識別,識別出He(PER)和Tennessee(GPE)兩個實(shí)體,然后找出兩個實(shí)體之間的關(guān)系為:Physical-Located,最后可以把抽取出來的關(guān)系表示為三元組的形式:(HePER, Physical-Located, TennesseeGPE),或者Physical-Located(HePER, TennesseeGPE)。

  可見關(guān)系抽取包含命名實(shí)體識別在內(nèi),在技術(shù)實(shí)現(xiàn)上更復(fù)雜。

  關(guān)系抽取從流程上,可以分為流水線式抽取(Pipline)和聯(lián)合抽取(Joint Extraction)兩種,流水線式抽取就是把關(guān)系抽取的任務(wù)分為兩個步驟:首先做實(shí)體識別,再抽取出兩個實(shí)體的關(guān)系;而聯(lián)合抽取的方式就是一步到位,同時做好了實(shí)體和關(guān)系的抽取。流水線式抽取會導(dǎo)致誤差在各流程中傳遞和累加,而聯(lián)合抽取的方式則實(shí)現(xiàn)難度更大。

  關(guān)系抽取從實(shí)現(xiàn)的算法來看,主要分為四種:

  1、手寫規(guī)則(Hand-Written Patterns);

  2、監(jiān)督學(xué)習(xí)算法(Supervised Machine Learning);

  3、半監(jiān)督學(xué)習(xí)算法(Semi-Supervised Learning,比如Bootstrapping和Distant Supervision);

  4、無監(jiān)督算法。

  本文的主人公是遠(yuǎn)程監(jiān)督算法(Distant Supervision),這是一種半監(jiān)督學(xué)習(xí)算法。其他的方法大致了解一下,有助于理解,為什么相對而言,遠(yuǎn)程監(jiān)督做關(guān)系抽取是一種比較可行的方法。

  (一)手寫規(guī)則模板的方法

  1、例子:

  有種關(guān)系叫做上下位關(guān)系,比如hyponym(France; European countries)。從下面兩個句子中都可以抽取出這種關(guān)系:

  European countries, especiallyFrance, England, and Spain...

  European countries,such asFrance, England, and Spain...

  兩個實(shí)體之間的especially和such as可以看做這種關(guān)系的特征。觀察更多表達(dá)這種關(guān)系的句子,我們就可以構(gòu)造如下的規(guī)則模板,來抽取構(gòu)成上下位關(guān)系的實(shí)體,從而發(fā)現(xiàn)新的三元組。

  2、優(yōu)點(diǎn)和缺點(diǎn):

  優(yōu)點(diǎn)是抽取的三元組查準(zhǔn)率(Precision)高,尤其適合做特定領(lǐng)域的關(guān)系抽取;缺點(diǎn)是查全率(Recall)很低,也就是說查得準(zhǔn),但是查不全,而且針對每一種關(guān)系都需要手寫大量的規(guī)則,比較慘。

  (二)監(jiān)督學(xué)習(xí)的方法

  監(jiān)督學(xué)習(xí)的方法也就是給訓(xùn)練語料中的實(shí)體和關(guān)系打上標(biāo)簽,構(gòu)造訓(xùn)練集和測試集,再用傳統(tǒng)機(jī)器學(xué)習(xí)的算法(LR,SVM和隨機(jī)森林等)或神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類器。

  1、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方法

  對于傳統(tǒng)的機(jī)器學(xué)習(xí)方法,最重要的步驟是構(gòu)造特征。可以使用的特征有:

  (1)詞特征:實(shí)體1與實(shí)體2之間的詞、前后的詞,詞向量可以用Bag-of-Words結(jié)合Bigrams等。

  (2)實(shí)體標(biāo)簽特征:實(shí)體的標(biāo)簽。

  (3)依存句法特征:分析句子的依存句法結(jié)構(gòu),構(gòu)造特征。這個不懂怎么弄。

  人工構(gòu)造特征非常麻煩,而且某些特征比如依存句法分析,依賴于NLP工具庫,比如HanLP,工具帶來的誤差不可避免會影響特征的準(zhǔn)確性。

  用端到端的深度學(xué)習(xí)方法就沒這么費(fèi)勁了。比如使用CNN或BI-LSTM作為句子編碼器,把一個句子的詞嵌入(Word Embedding)作為輸入,用CNN或LSTM做特征的抽取器,最后經(jīng)過softmax層得到N種關(guān)系的概率。這樣省略了特征構(gòu)造這一步,自然不會在特征構(gòu)造這里引入誤差。

  2、監(jiān)督學(xué)習(xí)的優(yōu)缺點(diǎn)

  監(jiān)督學(xué)習(xí)的優(yōu)點(diǎn)是,如果標(biāo)注好的訓(xùn)練語料足夠大,那么分類器的效果是比較好的,可問題是標(biāo)注的成本太大了。

  (三)半監(jiān)督

  鑒于監(jiān)督學(xué)習(xí)的成本太大,所以用半監(jiān)督學(xué)習(xí)做關(guān)系抽取是一個很值得研究的方向。

  半監(jiān)督學(xué)習(xí)的算法主要有兩種:Bootstrapping和Distant Supervision。Bootstrapping不需要標(biāo)注好實(shí)體和關(guān)系的句子作為訓(xùn)練集,不用訓(xùn)練分類器;而Distant Supervision可以看做是Bootstrapping和Supervise Learning的結(jié)合,需要訓(xùn)練分類器。

  這里介紹Bootstrapping的思想,Distant Supervision作為主人公,在后面的部分詳細(xì)介紹。

  1、例子

  Bootstrapping算法的輸入是擁有某種關(guān)系的少量實(shí)體對,作為種子,輸出是更多擁有這種關(guān)系的實(shí)體對。敲黑板!不是找到更多的關(guān)系,而是發(fā)現(xiàn)擁有某種關(guān)系的更多新實(shí)體對。

  怎么做的呢?舉個栗子,“創(chuàng)始人”是一種關(guān)系,如果我們已經(jīng)有了一個小型知識圖譜,里面有3個表達(dá)這種關(guān)系的實(shí)體對:(嚴(yán)定貴,你我貸),(馬云,阿里巴巴),(雷軍,小米)。

  第一步:在一個大型的語料集中去找包含某一實(shí)體對(3個中的任意1個)的句子,全部挑出來。比如:嚴(yán)定貴于2011年創(chuàng)立了你我貸;嚴(yán)定貴是你我貸的創(chuàng)始人;在嚴(yán)定貴董事長的帶領(lǐng)下,嘉銀金科赴美上市成功。

  第二步:歸納實(shí)體對的前后或中間的詞語,構(gòu)造特征模板。比如:A 創(chuàng)立了 B;A 是 B 的創(chuàng)始人;A 的帶領(lǐng)下,B。

  第三步:用特征模板去語料集中尋找更多的實(shí)體對,然后給所有找到的實(shí)體對打分排序,高于閾值的實(shí)體對就加入到知識圖譜中,擴(kuò)展現(xiàn)有的實(shí)體對。

  第四步:回到第一步,進(jìn)行迭代,得到更多模板,發(fā)現(xiàn)更多擁有該關(guān)系的實(shí)體對。

  細(xì)心的小伙伴會發(fā)現(xiàn),不是所有包含“嚴(yán)定貴”和“你我貸”的句子都表達(dá)了“創(chuàng)始人”這種關(guān)系啊,比如:“在嚴(yán)定貴董事長的帶領(lǐng)下,嘉銀金科赴美上市成功”——這句話就不是表達(dá)“創(chuàng)始人”這個關(guān)系的。某個實(shí)體對之間可能有很多種關(guān)系,哪能一口咬定就是知識圖譜中已有的這種關(guān)系呢?這不是會得到錯誤的模板,然后在不斷的迭代中放大錯誤嗎?

  沒錯,這個問題叫做語義漂移(Semantic Draft),一般有兩種解決辦法:

  一是人工校驗(yàn),在每一輪迭代中觀察挑出來的句子,把不包含這種關(guān)系的句子剔除掉。

  二是Bootstrapping算法本身有給新發(fā)現(xiàn)的模板和實(shí)體對打分,然后設(shè)定閾值,篩選出高質(zhì)量的模板和實(shí)體對。具體的公式可以看《Speech and Language Processing》(第3版)第17章。

  2、Bootstrapping的優(yōu)缺點(diǎn)

  Bootstrapping的缺點(diǎn)一是上面提到的語義漂移問題,二是查準(zhǔn)率會不斷降低而且查全率太低,因?yàn)檫@是一種迭代算法,每次迭代準(zhǔn)確率都不可避免會降低,80%---->60%---->40%---->20%...。所以最后發(fā)現(xiàn)的新實(shí)體對,還需要人工校驗(yàn)。

  (四)無監(jiān)督

  半監(jiān)督的辦法效果已經(jīng)勉強(qiáng),無監(jiān)督的效果就更差強(qiáng)人意了,這里就不介紹了。

二、遠(yuǎn)程監(jiān)督關(guān)系抽取算法的濫觴

  第一篇要介紹的論文是《Distant supervision for relation extraction without labeled data》,斯坦福大學(xué)出品,把遠(yuǎn)程監(jiān)督的方法用于關(guān)系抽取。研究關(guān)系抽取的遠(yuǎn)程監(jiān)督算法,不得不提這篇論文。

  (一)遠(yuǎn)程監(jiān)督的思想

  這篇論文首先回顧了關(guān)系抽取的監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和Bootstrapping算法的優(yōu)缺點(diǎn),進(jìn)而結(jié)合監(jiān)督學(xué)習(xí)和Bootstrapping的優(yōu)點(diǎn),提出了用遠(yuǎn)程監(jiān)督做關(guān)系抽取的算法。

  遠(yuǎn)程監(jiān)督算法有一個非常重要的假設(shè):對于一個已有的知識圖譜(論文用的Freebase)中的一個三元組(由一對實(shí)體和一個關(guān)系構(gòu)成),假設(shè)外部文檔庫(論文用的Wikipedia)中任何包含這對實(shí)體的句子,在一定程度上都反映了這種關(guān)系。基于這個假設(shè),遠(yuǎn)程監(jiān)督算法可以基于一個標(biāo)注好的小型知識圖譜,給外部文檔庫中的句子標(biāo)注關(guān)系標(biāo)簽,相當(dāng)于做了樣本的自動標(biāo)注,因此是一種半監(jiān)督的算法

  具體來說,在訓(xùn)練階段,用命名實(shí)體識別工具,把訓(xùn)練語料庫中句子的實(shí)體識別出來。如果多個句子包含了兩個特定實(shí)體,而且這兩個實(shí)體是Freebase中的實(shí)體對(對應(yīng)有一種關(guān)系),那么基于遠(yuǎn)程監(jiān)督的假設(shè),認(rèn)為這些句子都表達(dá)了這種關(guān)系。于是從這幾個句子中提取文本特征,拼接成一個向量,作為這種關(guān)系的一個樣本的特征向量,用于訓(xùn)練分類器。

  論文中把Freebase的數(shù)據(jù)進(jìn)行了處理,篩選出了94萬個實(shí)體、102種關(guān)系和180萬實(shí)體對。下面是實(shí)體對數(shù)量最多的23種關(guān)系。

  關(guān)系種類相當(dāng)于分類的類別,那么有102類;每種關(guān)系對應(yīng)的所有實(shí)體對就是樣本;從Wikipedia中所有包含某實(shí)體對的句子中抽取特征,拼接成這個樣本的特征向量。最后訓(xùn)練LR多分類器,用One-vs-Rest,而不是softmax,也就是訓(xùn)練102個LR二分類器——把某種關(guān)系視為正類,把其他所有的關(guān)系視為負(fù)類。

  因?yàn)檫h(yuǎn)程監(jiān)督算法可以使用大量無標(biāo)簽的數(shù)據(jù),F(xiàn)reebase中的每一對實(shí)體在文檔庫中可能出現(xiàn)在多個句子中。從多個句子中抽出特征進(jìn)行拼接,作為某個樣本(實(shí)體對)的特征向量,有兩個好處:

  一是單獨(dú)的某個句子可能僅僅包含了這個實(shí)體對,并沒有表達(dá)Freebase中的關(guān)系,那么綜合多個句子的信息,就可以消除噪音數(shù)據(jù)的影響。

  二是可以從海量無標(biāo)簽的數(shù)據(jù)中獲取更豐富的信息,提高分類器的準(zhǔn)確率。

  但是問題也來了,這個假設(shè)一聽就不靠譜!哪能說一個實(shí)體對在Freebase中,然后只要句子中出現(xiàn)了這個實(shí)體對,就假定關(guān)系為Freebase中的這種關(guān)系呢?一個實(shí)體對之間的關(guān)系可能有很多啊,比如馬云和阿里巴巴的關(guān)系,就有“董事長”、“工作”等關(guān)系,哪能斷定就是“創(chuàng)始人”的關(guān)系呢?

  這確實(shí)是個大問題,在本篇論文中也沒有提出解決辦法。

  (二)分類器的特征

  論文中使用了三種特征:詞法特征(Lexical features)、句法特征(Syntactic features)和實(shí)體標(biāo)簽特征(Named entity tag features)。

  1、詞法特征

  詞法特征描述的是實(shí)體對中間或兩端的特定詞匯相關(guān)的信息。比如有:

兩個實(shí)體中間的詞語和詞性
實(shí)體1左邊的k個詞語和詞性,k取{0,1,2}
實(shí)體2右邊的k個詞語和詞性,k取{0,1,2}

  然后把這些特征表示成向量再拼接起來。比如用詞袋模型,把詞語和詞性都表示為向量。

  2、句法特征

  論文中的句法特征就是對句子進(jìn)行依存句法分析(分析詞匯間的依存關(guān)系,如并列、從屬、遞進(jìn)等),得到一條依存句法路徑,再把依存句法路徑中的各成分作為向量,拼接起來。

  如下為一個句子的依存句法路徑,我不太懂,不多說。

  3、命名實(shí)體標(biāo)簽特征

  論文中做命名實(shí)體識別用的是斯坦福的NER工具包。把兩個實(shí)體的標(biāo)簽也作為特征,拼接起來。

  總結(jié)一下,論文中使用的特征不是單個特征,而是多種特征拼接起來的。有多個句子包含某實(shí)體對,可以從每個句子中抽取出詞法特征、句法特征和實(shí)體特征,拼接起來,得到一個句子的特征向量,最后把多個句子的特征向量再拼接起來,得到某實(shí)體對(一個樣本)的特征向量。

  不過作者為了比較詞法特征和句法特征的有效性,把特征向量分為了3種情況:只使用詞法特征,只使用句法特征,詞法特征與句法特征拼接。

  (三)實(shí)驗(yàn)細(xì)節(jié)

  1、數(shù)據(jù)集說明

  知識圖譜或者說標(biāo)注數(shù)據(jù)為Freebase,非結(jié)構(gòu)化文本庫則是Wikipedia中的文章。

  論文中把Freebase的三元組進(jìn)行了篩選,篩選出了94萬個實(shí)體、102種關(guān)系和相應(yīng)的180萬實(shí)體對。用留出法進(jìn)行自動模型評估時,一半的實(shí)體對用于訓(xùn)練,一半的實(shí)體對用于模型評估。

  同樣對Wikipedia中的文章進(jìn)行篩選,得到了180萬篇文章,平均每篇文章包含約14.3個句子。從中選擇80萬條句子作為訓(xùn)練集,40萬條作為測試集。

  2、構(gòu)造負(fù)樣本

  由于對于每種關(guān)系,都要訓(xùn)練一個LR二分類器,所以需要構(gòu)造負(fù)樣本。這里的負(fù)樣本不是其他101種關(guān)系的訓(xùn)練樣本,而是這樣的句子:從訓(xùn)練集中的句子中抽取實(shí)體對,如果實(shí)體對不在Freebase中,那么就隨機(jī)挑選這樣的句子就作為負(fù)樣本。

  3、訓(xùn)練過程

  LR分類器以實(shí)體對的特征向量為輸入,輸出關(guān)系名和概率值。每種關(guān)系訓(xùn)練一個二分類器,一共訓(xùn)練102個分類器。

  訓(xùn)練好分類器后,對測試集中的所有實(shí)體對的關(guān)系進(jìn)行預(yù)測,并得到概率值。然后對所有實(shí)體對按概率值進(jìn)行降序排列,從中挑選出概率最高的N個實(shí)體對(概率值大于0.5),作為發(fā)現(xiàn)的新實(shí)體對。

  4、測試方法和結(jié)論

  測試的指標(biāo)采用查準(zhǔn)率,方法采用了留出法(自動評估)和人工評估兩種方法。留出法的做法是,把Freebase中的180萬實(shí)體對的一半作為測試集(另一半用于訓(xùn)練)。新發(fā)現(xiàn)的N個實(shí)體對中,如果有n個實(shí)體對在Freebase的測試集中,那么查準(zhǔn)率為n/N。人工評估則采用多數(shù)投票的方法。

  模型評估的結(jié)果表明,遠(yuǎn)程監(jiān)督是一種較好的關(guān)系抽取算法。在文本特征的比較上,詞法特征和句法特征拼接而成的特征向量,優(yōu)于單獨(dú)使用其中一種特征的情況。此外,句法特征在遠(yuǎn)程監(jiān)督中比詞法特征更有效,尤其對于依存句法結(jié)構(gòu)比較短而實(shí)體對之間的詞語非常多的句子。

  (四)評價(jià)

  這篇論文把遠(yuǎn)程監(jiān)督的思想引入了關(guān)系抽取中,充分利用未標(biāo)注的非結(jié)構(gòu)化文本,從詞法、句法和實(shí)體三方面構(gòu)造特征,最后用留出法和人工校驗(yàn)兩種方法進(jìn)行模型評估,是一種非常完整規(guī)范的關(guān)系抽取范式。

  不足之處有兩點(diǎn):

  第一個是前面所提到的問題,那就是遠(yuǎn)程監(jiān)督所基于的假設(shè)是一個非常強(qiáng)的假設(shè)。哪能說一個實(shí)體對在Freebase中存在一種關(guān)系,那么只要外部語料庫中的句子中出現(xiàn)了這個實(shí)體對,就假定關(guān)系為Freebase中的關(guān)系呢?還可能是其他關(guān)系啊?

  Bootstrapping中也有這個問題,稱為語義漂移問題,但Bootstrapping本身通過給新發(fā)現(xiàn)的規(guī)則模板和實(shí)體對打分,在一定程度上緩解了這個問題,而這篇論文并沒有提到這個問題,更沒有涉及到解決辦法。我猜這是因?yàn)镕reebase中的實(shí)體對和關(guān)系主要就是從Wikipedia中抽取出來的,而且關(guān)系屬于比較典型的關(guān)系。

  這點(diǎn)就成了后續(xù)遠(yuǎn)程監(jiān)督關(guān)系抽取算法的一個改進(jìn)方向,后面的研究人員提出了利用多實(shí)例學(xué)習(xí)和句子級別的注意力機(jī)制來解決這個問題。

  第二個是論文中用到了三種特征,貌似一頓操作猛如虎,但實(shí)際上構(gòu)造這些特征非常繁瑣,而且詞性標(biāo)注和依存句法分析依賴于NLP工具庫,因此工具庫在標(biāo)注和解析中所產(chǎn)生的誤差,自然會影響到文本特征的準(zhǔn)確性。

  這點(diǎn)也是后續(xù)研究的一個改進(jìn)方向,后面的研究人員用神經(jīng)網(wǎng)絡(luò)作為特征提取器,代替人工提取的特征,并用詞嵌入作為文本特征。

三、多實(shí)例學(xué)習(xí)和分段最大池化

  第二篇論文是《Distant Supervision for Relation Extraction via PiecewiseConvolutional Neural Networks》,是用神經(jīng)網(wǎng)絡(luò)結(jié)合遠(yuǎn)程監(jiān)督做關(guān)系抽取的扛鼎之作。

  (一)論文的貢獻(xiàn)

  1、用PCNNs的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動學(xué)習(xí)文本特征,代替復(fù)雜的人工構(gòu)造特征和特征處理流程。

  PCNNs全名為Piecewise Convolutional Neural Networks,包含兩層含義:Piecewise max pooling layer和Convolutional Neural Networds,對應(yīng)到最大池化層和卷積層。用卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的特征提取功能,能自動抽取豐富的特征,并且減少人工設(shè)計(jì)特征和NLP工具庫抽取特征帶來的誤差。省時省力又能減少誤差,何樂不為。

  2、設(shè)計(jì)了分段最大池化層(三段,Piecewise max pooling layer)代替一般的最大池化層,提取更豐富的文本結(jié)構(gòu)特征。

  一般的最大池化層直接從多個特征中選出一個最重要的特征,實(shí)際上是對卷積層的輸出進(jìn)行降維,但問題是維度降低過快,無法獲取實(shí)體對在句子中所擁有的結(jié)構(gòu)信息。

  如下圖,把一個句子按兩個實(shí)體切分為前、中、后三部分的詞語,然后將一般的最大池化層相應(yīng)地劃分為三段最大池化層,從而獲取句子的結(jié)構(gòu)信息。

  3、用多實(shí)例學(xué)習(xí)(Multi-InstancesLearning)解決遠(yuǎn)程監(jiān)督做自動標(biāo)注的錯誤標(biāo)注問題。

  遠(yuǎn)程監(jiān)督本質(zhì)上是一種自動標(biāo)注樣本的方法,但是它的假設(shè)太強(qiáng)了,會導(dǎo)致錯誤標(biāo)注樣本的問題。

  論文認(rèn)為遠(yuǎn)程監(jiān)督做關(guān)系抽取類似于多實(shí)例問題(Multi-InstancesProblem)。知識圖譜中一個實(shí)體對(論文中的Bag)的關(guān)系是已知的,而外部語料庫中包含該實(shí)體對的多個句子(Instances of Bag),表達(dá)的關(guān)系是未知的(自動標(biāo)注的結(jié)果未知真假),那么多實(shí)例學(xué)習(xí)的假設(shè)是:這些句子中至少有一個句子表達(dá)了已知的關(guān)系。于是從多個句子中只挑出最重要的一個句子,作為這個實(shí)體對的樣本加入到訓(xùn)練中。

  本篇論文設(shè)計(jì)了一個目標(biāo)函數(shù),在學(xué)習(xí)過程中,把句子關(guān)系標(biāo)簽的不確定性考慮進(jìn)去,從而緩解錯誤標(biāo)注的問題。

  總結(jié)一下,本文的亮點(diǎn)在于把多實(shí)例學(xué)習(xí)、卷積神經(jīng)網(wǎng)絡(luò)和分段最大池化結(jié)合起來,用于緩解句子的錯誤標(biāo)注問題和人工設(shè)計(jì)特征的誤差問題,提升關(guān)系抽取的效果。

  (二)研究方法

  本文把PCNNs的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和多實(shí)例學(xué)習(xí)結(jié)合,完成關(guān)系抽取的任務(wù)。

  1、PCNNs網(wǎng)絡(luò)的處理流程

  PCNNs網(wǎng)絡(luò)結(jié)構(gòu)處理一個句子的流程分為四步:特征表示、卷積、分段最大池化和softmax分類。具體如下圖所示。

(1)文本特征表示

  (1)文本特征表示

  使用詞嵌入(Word Embeddings)和位置特征嵌入(Position Embeddings),然后把句子中每個詞的這兩種特征拼接起來。

  詞嵌入使用的是預(yù)訓(xùn)練的Word2Vec詞向量,用Skip-Gram模型來訓(xùn)練。

  位置特征是某個詞與兩個實(shí)體的相對距離,位置特征嵌入就是把兩個相對距離轉(zhuǎn)化為向量,再拼接起來。

  比如下面這個句子中,單詞son和實(shí)體Kojo Annan的相對距離為3,和實(shí)體Kofi Annan的相對距離為-2。

  假設(shè)詞嵌入的維度是dw,位置特征嵌入的維度是dp,那么每個詞的特征向量的維度就是:d=dw+2*dp。假設(shè)句子長度為s,那么神經(jīng)網(wǎng)絡(luò)的輸入就是s×d維的矩陣。

  (2)卷積

  假設(shè)卷積核的寬為w(滑動窗口),長為d(詞的特征向量維度),那么卷積核的大小為W=w * d。步長為1。

  輸入層為q = s×d維的矩陣,卷積操作就是每滑動一次,就用卷積核W與q的w-gram做點(diǎn)積,得到一個數(shù)值。

  卷積完成后會得到(s+w-1)個數(shù)值,也就是長度為(s+w-1)的向量c。文本的卷積和圖像的卷積不同,只能沿著句子的長度方向滑動,所以得到的是一個向量而不是矩陣。

  為了得到更豐富的特征,使用了n個卷積核W={W1, W2, ... Wn},第i個卷積核滑動一次得到的數(shù)值為:

  最終,卷積操作完成后會輸出一個矩陣C:

  (3)分段最大池化

  把每個卷積核得到的向量ci按兩個實(shí)體劃分為三部分{ci1, ci2, ..., ci3},分段最大池化也就是分別取每個部分的最大值:

  那么對于每個卷積核得到的向量ci,我們都能得到一個3維的向量pi。為了便于下一步輸入到softmax層,把n個卷積核經(jīng)過池化后的向量pi拼接成一個向量p1:n,長度為3n。

  最后用tanh激活函數(shù)進(jìn)行非線性處理,得到最終的輸出:

  (4)softmax多分類

  把池化層得到的g輸入到softmax層,計(jì)算屬于每種關(guān)系的概率值。論文中使用了Dropout正則化,把池化層的輸出g以r的概率隨機(jī)丟棄,得到的softmax層的輸出為:

  輸出的向量是關(guān)系的概率分布,長度為關(guān)系的種類(n1)。概率值最大的關(guān)系就是句子中的實(shí)體對被預(yù)測的關(guān)系。

  2、多實(shí)例學(xué)習(xí)的過程

  我們知道一般神經(jīng)網(wǎng)絡(luò)模型的套路是,batch-size個句子經(jīng)過神經(jīng)網(wǎng)絡(luò)的sotfmax層后,得到batch-size個概率分布,然后與關(guān)系標(biāo)簽的one-hot向量相比較,計(jì)算交叉熵?fù)p失,最后進(jìn)行反向傳播。因此上述PCNNs網(wǎng)絡(luò)結(jié)構(gòu)的處理流程僅是一次正向傳播的過程。

  PCNNs結(jié)合多實(shí)例學(xué)習(xí)的做法則有些差別,目標(biāo)函數(shù)仍然是交叉熵?fù)p失函數(shù),但是基于實(shí)體對級別(論文中的bags)去計(jì)算損失,而不是基于句子級別(論文中的instances)。這是什么意思呢?

  對照上面的圖,計(jì)算交叉熵?fù)p失分為兩步:

  第一步,對于每個實(shí)體對,會有很多包含該實(shí)體對的句子(qi個),每個句子經(jīng)過softmax層都可以得到一個概率分布,進(jìn)而得到預(yù)測的關(guān)系標(biāo)簽和概率值。為了消除錯誤標(biāo)注樣本的影響,從這些句子中僅挑出一個概率值最大的句子和它的預(yù)測結(jié)果,作為這個實(shí)體對的預(yù)測結(jié)果,用于計(jì)算交叉熵?fù)p失。比如上面的例子中,挑出了第二個句子。公式為:

  第二步,如果一個batch-size有T個實(shí)體對,那么用第一步挑選出來的T個句子,計(jì)算交叉熵?fù)p失:

  最后用梯度下降法求出梯度,并進(jìn)行誤差反向傳播。

  如下是算法的偽代碼,θ是PCNNs的參數(shù),Eq.(9)是第一步中的公式。

  (四)實(shí)驗(yàn)細(xì)節(jié)

  1、數(shù)據(jù)集和評估方法

  知識圖譜為Freebase,外部文檔庫為NYT。把NYT文檔庫中2005-2006年的句子作為訓(xùn)練集,2007年的句子作為測試集。

  評估方法沿用第一篇論文中的方法,留出法和人工校驗(yàn)相結(jié)合。

  2、詞嵌入和調(diào)參

  預(yù)訓(xùn)練的詞向量方面,本文用Skip-Gram模型和NYT文檔庫訓(xùn)練了50維的詞向量。

  位置特征嵌入使用隨機(jī)初始化的向量,維度為5。

  調(diào)參方面,PCNNs網(wǎng)絡(luò)結(jié)構(gòu)中有兩個參數(shù)比較重要:卷積核的滑動窗口大小和卷積核的個數(shù)。本文使用網(wǎng)格搜索,最終確定滑動窗口為3,卷積核個數(shù)為230。

  模型的其他參數(shù)如下:

  3、模型評估結(jié)果

  (1)對留出法和人工校驗(yàn)法的說明

  使用留出法和人工校驗(yàn)法來評估模型的效果。這里對這兩種評估方法進(jìn)行補(bǔ)充說明:

  留出法的做法是把Freebase中一半的實(shí)體對用于訓(xùn)練,一半的實(shí)體對用于測試。多分類模型訓(xùn)練好之后,對外部文檔庫NYT中的測試集進(jìn)行預(yù)測,得到測試集中實(shí)體對的關(guān)系標(biāo)簽。如果新發(fā)現(xiàn)的實(shí)體對有N個,其中有n個出現(xiàn)在Freebase的測試集中,那么準(zhǔn)確率為n/N,而不在Freebase測試集中的實(shí)體對就視為不存在關(guān)系。可是由于Freebase中的實(shí)體對太少了,新發(fā)現(xiàn)的、不在Freebase里的實(shí)體對并非真的不存在關(guān)系,這就會出現(xiàn)假負(fù)例(False Negatives)的問題,低估了準(zhǔn)確率。

  所以人工校驗(yàn)的方法是對留出法的一個補(bǔ)充,對于那些新發(fā)現(xiàn)的、不在Freebase測試集中的實(shí)體對(一個實(shí)體不在或者兩個實(shí)體都不在)進(jìn)行檢查,計(jì)算查準(zhǔn)率。所以留出法和人工校驗(yàn)要評估的兩個新實(shí)體對集合是沒有交集的。具體做法是從這些新實(shí)體對中選擇概率值最高的前N個,然后人工檢查其中關(guān)系標(biāo)簽正確的實(shí)體對,如果有n個,那么查準(zhǔn)率為n/N。

  (2)卷積神經(jīng)網(wǎng)絡(luò)與人工構(gòu)造特征的對比

  首先把PCNNs結(jié)合多實(shí)例學(xué)習(xí)的遠(yuǎn)程監(jiān)督模型(記為PCNNs+MIL),與人工構(gòu)造特征的遠(yuǎn)程監(jiān)督算法(記為Mintz)和多實(shí)例學(xué)習(xí)的算法(記為MultiR和MIML)進(jìn)行比較。

  從下面的實(shí)驗(yàn)結(jié)果中可以看到,無論是查準(zhǔn)率還是查全率,PCNNs+MIL模型都顯著優(yōu)于其他模型,這說明用卷積神經(jīng)網(wǎng)絡(luò)作為自動特征抽取器,可以有效降低人工構(gòu)造特征和NLP工具提取特征帶來的誤差。

  (3)分段最大池化和多實(shí)例學(xué)習(xí)的有效性

  將分段最大池化和普通的最大池化的效果進(jìn)行對比(PCNNs VS CNNs),將結(jié)合多實(shí)例學(xué)習(xí)的卷積網(wǎng)絡(luò)與單純的卷積網(wǎng)絡(luò)進(jìn)行對比(PCNNs+MIL VS PCNNs)。

  可以看到,分段最大池化比普通的最大池化效果更好,表明分段最大池化可以抽取更豐富的結(jié)構(gòu)特征。把多實(shí)例學(xué)習(xí)加入到卷積網(wǎng)絡(luò)中,效果也有一定的提升,表明多實(shí)例學(xué)習(xí)可以緩解樣本標(biāo)注錯誤的問題。

  (四)評價(jià)

  這篇論文中,分段最大池化的奇思妙想來自于傳統(tǒng)人工構(gòu)造特征的思想,而多實(shí)例學(xué)習(xí)的引入緩解了第一篇論文中的樣本錯誤標(biāo)注問題。這篇論文出來以后是當(dāng)時的SOTA。

  不足之處在于,多實(shí)例學(xué)習(xí)僅從包含某個實(shí)體對的多個句子中,挑出一個最可能的句子來訓(xùn)練,這必然會損失大量的信息。所以有學(xué)者提出用句子級別的注意力機(jī)制來解決這個問題。

四、句子級別的注意力機(jī)制

  第三篇論文是《Neural Relation Extraction with Selective Attention over Instances》,這篇論文首次把注意力機(jī)制引入到了關(guān)系抽取的遠(yuǎn)程監(jiān)督算法中,刷新了當(dāng)時的SOTA。論文作者中有知乎網(wǎng)紅劉知遠(yuǎn)老師。

  (一)論文的貢獻(xiàn)

  這篇論文要解決的問題,就是多實(shí)例學(xué)習(xí)會遺漏大量信息的問題。所以這篇論文用句子級別的注意力機(jī)制代替多實(shí)例學(xué)習(xí),對于包含某實(shí)體對的所有句子,給每一個句子計(jì)算一個注意力得分,動態(tài)地降低標(biāo)注錯誤的樣本的得分,再進(jìn)行加權(quán)求和,從而充分利用所有句子的信息。

  多實(shí)例學(xué)習(xí)相當(dāng)于硬注意力機(jī)制(Hard Attention),而我們耳熟能詳?shù)囊约罢撐闹杏玫降淖⒁饬C(jī)制是選擇性注意力機(jī)制(Selective Attention)或者說軟注意力機(jī)制(Soft Attention),所以多實(shí)例學(xué)習(xí)其實(shí)是選擇性注意力機(jī)制的特殊情況(只有一個句子的權(quán)重為1,其他全為0)。

  (二)模型介紹

  模型主要分為兩個部分:句子編碼器和注意力層。

  1、句子編碼器

  句子編碼器就是上一篇論文中的PCNN或CNN網(wǎng)絡(luò)結(jié)構(gòu),由卷積神經(jīng)網(wǎng)絡(luò)的輸入層、卷積層、池化層、非線性映射層(或者說激活函數(shù))構(gòu)成。

  文本特征同樣用詞嵌入和位置特征嵌入,池化層用普通的最大池化或者分段最大池化。

  因此,本文的句子編碼器部分輸出的是一個句子經(jīng)過最大池化并且非線性激活后的特征向量,用于輸入到注意力層。這部分和上一篇論文基本相同,無須贅述。

  2、注意力層

  句子編碼器的作用是抽取一個句子的特征,得到一個特征向量。如果外部文檔庫中包含某實(shí)體對的句子有n條,那么經(jīng)過句子編碼器的處理后,可以得到n個特征向量:x1, x2, ..., xn。在句子編碼器和softmax層之間加一個選擇性注意力層,那么處理的步驟如下:

  第一步:計(jì)算句子的特征向量xi和關(guān)系標(biāo)簽r的匹配度ei,并計(jì)算注意力得分αi。公式中的r是關(guān)系標(biāo)簽的向量表示。

  第二步:計(jì)算該實(shí)體對的特征向量s。該實(shí)體對的特征向量是所有句子的特征向量xi的加權(quán)之和,權(quán)重為每個句子的注意力得分αi

  第三步:經(jīng)過softmax層得到該實(shí)體對關(guān)于所有關(guān)系的概率分布,概率值最大的關(guān)系為預(yù)測的關(guān)系標(biāo)簽。

  3、誤差反向傳播

  如果一個batch-size有s個實(shí)體對,那么用s個實(shí)體對的概率分布,計(jì)算交叉熵?fù)p失:

  最后用梯度下降法求出梯度,并進(jìn)行誤差反向傳播。

  (三)實(shí)驗(yàn)細(xì)節(jié)

  1、數(shù)據(jù)集和評估方法

  數(shù)據(jù)集和上一篇論文一樣,知識圖譜是Freebase,外部的文檔庫是NYT(New York Times corpus)。劃分?jǐn)?shù)據(jù)集的做法也一致。

  評估方法采用留出法,不再贅述。

  2、詞嵌入和參數(shù)設(shè)置

  用NYT數(shù)據(jù)集訓(xùn)練Word2Vec,用網(wǎng)格搜索(Grid Search)確定參數(shù)。

  3、選擇性注意力機(jī)制的效果

  句子編碼器分別采用CNN和PCNN的網(wǎng)絡(luò)結(jié)構(gòu),PCNN+ONE表示PCNN結(jié)合多實(shí)例學(xué)習(xí)的模型,PCNN+ATT表示論文中的選擇性注意力模型,PCNN+AVE表示對各句子求算術(shù)平均的模型(每個句子的注意力得分相同)。

  實(shí)驗(yàn)結(jié)果表明,無論是CNN還是PCNN,加入注意力機(jī)制的模型在查準(zhǔn)率和查全率上,都顯著優(yōu)于其他模型。

  論文還有其他更細(xì)致的實(shí)驗(yàn),欲知詳情,請自行翻看論文。

  (四)評價(jià)

  這篇論文把注意力機(jī)制和CNN句子編碼器結(jié)合,用來解決多實(shí)例學(xué)習(xí)存在的遺漏信息問題,更好地緩解了遠(yuǎn)程監(jiān)督算法中的樣本錯誤標(biāo)注問題。

  注意力機(jī)制在NLP任務(wù)中的效果是有目共睹的,PCNN+ATT的模型看起來非常漂亮,那么有什么改進(jìn)方向呢?

  開頭我們說了,關(guān)系抽取可以分為流水線式抽取(Pipline)和聯(lián)合抽取(Joint Extraction)兩種,流水線式抽取就是把關(guān)系抽取的任務(wù)分為兩個步驟:首先做實(shí)體識別,再抽取出兩個實(shí)體的關(guān)系;而聯(lián)合抽取的方式就是一步到位,同時抽取出實(shí)體和關(guān)系。

  因此上面介紹的三篇論文中的模型都屬于流水線式抽取的方法,實(shí)體識別和關(guān)系抽取的模型是分開的,那么實(shí)體識別中的誤差會影響到關(guān)系抽取的效果。而聯(lián)合抽取用一個模型直接做到了實(shí)體識別和關(guān)系抽取,是一個值得研究的方向。

參考資料:

1、《Speech and Language Processing》(Third Edition draft)第17章

2、《cs224u: Relation extraction with distant supervision》

3、《Distant supervision for relation extraction without labeled data》

4、《Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks》

5、《Neural Relation Extraction with Selective Attention over Instances》

6、《Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme》

總結(jié)

以上是生活随笔為你收集整理的关系抽取之远程监督算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。