Dependency Parser研究進展及主流方法

提到dependency parser,咱們就會想到天然語言處理,而句法分析是天然語言處理領域的一個關鍵問題,dependency parser做爲句法分析中的一個文法體系,近年來,成爲研究熱點,而且逐漸普遍應用於其餘天然語言處理任務中。飛馬網於3月21日晚,邀請到上海交大計算機科學與信息碩士,前後在UBS和螞蟻金服工做過的胡翔老師,在直播中爲咱們分享關於dependency parser的研究進展以及它的一些主流方法等相關內容。算法

微信圖片_20180322085524.jpg

如下是本次分享內容:微信

一.天然語言理解的主要解決問題框架

咱們首先要了解一下天然語言理解領域想要解決的幾個問題。天然語言處理的領域很是廣,信息檢索、智能問答、情感分析、自動翻譯等等,均可以說是這個領域很是難且有待解決的問題,今天咱們主要討論的是語義表達及知識表達。性能

微信圖片_20180322085716.jpg 

咱們先從一個簡單的例子着手,來了解一下語義表達。下面這張圖片的兩句話,放到如今的語義自動匹配模型裏,幾乎相同,但爲何到人類理解這裏,這兩句話就是徹底不一樣的意思呢?學習

從語義角度來講,一句話的含義是有層次和主要元素的,主要元素用學術性的話語說就是語義框架,也就是咱們所說的「主謂賓」。雖然不是全部的句子都會有主謂賓覆蓋,但咱們這裏,先拿一個主謂賓的句子舉個例子。翻譯

主謂賓的句式能夠理解爲,這個句子裏面有三個不一樣類型的槽,每一個槽只能填一個字或詞。一旦咱們把兩句話結構化以後,它們的區別就十分明顯了。設計

微信圖片_20180322085720.jpg 

因此問題就來了,有沒有一種結構化的表達方式,能夠有效地解決語義表達這個問題?咱們細想一下,這個問題其實有幾大難點。首先,若是說存在這樣一種結構,那麼這個結構必定要具備普適性,其次,更難的問題是,如何讓計算機實現把一個序列化的句子轉化成這種結構。3d

二.天然語言理解的幾種主流理論blog

接下來的部分,咱們就來談談目前解決這兩個問題的方法以及思考。天然語言理解主要有如下三種主流理論。token

 

微信圖片_20180322085724.jpg 

 

1.Phrase structure(句法結構):

這套理論是由喬姆斯基提出的,在句法結構中,一個非終結符只能生成小於等於兩個非終結符,或者生成一個終結符。

微信圖片_20180322085727.jpg 

非終結符就是這張圖裏面,像「S、NP、VP」等這些沒有實詞的標籤,在咱們構成樹狀節點的結構中,它下面還會有子節點,有子節點的節點,咱們都稱之爲非終結符。

終結符就是這張圖裏面,像「she、bought、car」等這些具體的實詞,是樹狀結構中的葉子節點。

咱們從句子層面看,一句話能夠根據語義的層次性,即它們之間的緊密型,被表達成一個二叉樹,如上圖所示。

 

那這個句法結構有什麼缺陷呢?咱們看下圖,首先它是一個強序列要求的結構。其次,它不是各類語言通用的框架,依賴於特定語言規則,普適性不好。最後,它反映的語義信息比較有限。

微信圖片_20180322085730.jpg 

2.Dependency structure(一層句法):

它經過用詞與詞之間的有效邊來表示語法關係,所以在形式上會更簡單、直觀。

微信圖片_20180322085732.jpg 

在上圖這個例子裏面,咱們能夠看到一條邊SBJ,也就是指句子的主語,OBJ就是指句子的賓語,NMOD就是指名詞的修飾詞,它經過邊的類型來定義詞與詞之間的關係。而邊的類型比較多,目前有三十幾種。

 

3.Frame semantics(框架語義):

它相比於以前的兩個理論,更偏重於語義及知識表達,這套理論認爲一個完整的表達是要結合背景知識的。好比「吃」這個詞,不能獨立於知識來討論這個詞應該怎麼用,而要把它放在完整的語義結構中。「轉」這個詞也是如此。

微信圖片_20180322085735.jpg 

 

三.Dependency parser的意義

Dependency parser是咱們今天的主講內容,因此咱們就dependency parser來討論它的主要意義是什麼。其實要討論dependency parser的意義,這多是個比較難的話題,由於它是天然語言處理領域裏面一項比較基礎的研究,但它真正在實際應用中的效果,主要有如下幾方面:

微信圖片_20180322085738.jpg 

咱們能夠看到,Tree-LSTM較Bi-LSTM並無很明顯的優點,因此「結構化是否是有必要」,仍然是一個爭議點,在胡翔老師看來,他認爲這個話題對dependency parser的研究至關因而對語言本質的一些揭露,它的研究成果對理解天然語言頗有幫助,雖然它不必定在實際應用中起到效果。

四.Dependency parser的結構

在傳統的dependency parser結構中,有如下幾個限制:

微信圖片_20180322085742.jpg 

在這些條件下,天然而言最後構成的結果是一棵樹。存在爭議的一點是,咱們構成一個dependency parser結構的時候,有交叉仍是無交叉,實際上,支持交叉,句子表達的語義性更強,但相繼引來的pass難度也會更高。

 

依存句法結構的規範瞭解完以後,咱們來介紹它的幾種主流pass方法。所謂的parser就是教會計算機把一句話自動地翻譯成所規範的結構,所以咱們就要有一些方法,幫助計算機可以結合上下文或某些操做,來縮小它的搜索範圍和空間,有效地去構成一棵樹。

 

1.Transition-based parser:

這是最經典的方法,transition-based簡單來講是它定義的一系列操做,咱們只要用這一系列的操做一路作下去,最後就能把它變成一棵樹,這是直觀一點的理解。

微信圖片_20180322085745.jpg 

這種pass方法主要基於狀態轉移,咱們來看下面這張圖中的例子,來直觀地瞭解一下具體過程:

shift的功能是把當前臨時站I站頂裏面的token或一個結構,往左邊的S站裏壓一個。

而後咱們看到圖三裏的Left-Arc(向左造成一條弧)操做,它的具體意義是從I和S裏面各取一個元素彈出來,畫一條左弧把它們連起來,丟到最右邊的A裏面,A的意義是一個操做歷史。

在「she」和「bought」之間造成一條左弧,左弧的意義是,弧向哪邊指,被指向的那個token是做爲子節點,指別人的token是做爲一個父節點,在這裏,「bought」就做爲一個父節點從新被壓到站裏面,以後的操做就是不斷循環往復,一直作到I站爲空,這時候過程終止。

A站表示這個過程中的操做記錄,咱們經過A站看到造成的弧是哪些,就能造成一棵樹。

微信圖片_20180322085747.jpg 

這個算法的意義主要是,「我永遠只操做我這句話最前面的兩個token」,能夠這麼理解,transition-based parser是經過基於局部詞的組合,來進行局部的合併,一直到把整個東西「吃」完。它在運行性能上有優點,包含更多的語義性。

 

2.Graph-based parser:

相比於上面局部的方法,graph-based parser就是一種全局的方法。

微信圖片_20180322085750.jpg 

它的核心思想是,無論每一個詞之間的距離,把詞與詞的關係密切性變成一個值,而後生成一個對角樹,生成這個樹的路徑就是dependency parser的路徑。它的優點是可以實現局部最優解,所以它不會由於以前的偏差,致使全局最後的pass結果錯誤。

五.基於deep learning的parser model介紹

最後咱們介紹基於transition-based理論的一些deep learning模型。

 

1.Transition-based methods:

它的主要思路是先把一個句子變成句法樹,再變成dependency parser,這個方法有點捨近求遠,但它的效果不錯。它一樣會定義一些操做,即在一個序列上不斷作這些操做,直到結束,就能造成一棵樹。主要有如下三種操做:

微信圖片_20180322085753.jpg 

這個模型就是在序列中,插左括號或右括號的非典型性序列打標問題,deep learning在裏面起的做用是,每個左括號和右括號封閉的token,把它們表達成一個更高級的含義。

微信圖片_20180322085755.jpg 

2.Graph-based model:

這個模型是把以前構建數的問題變成距離計算的問題。它本質作的事情是創建一個矩陣,行和列都是這個句子裏的token,每兩個行列中的一個點表示a修飾b的機率或b修飾a的機率的一個得分,最後要造成樹,咱們就是在這個距離向量中找一棵最小生成樹,生成出來的就是dependency parser。

微信圖片_20180322085758.jpg 

微信圖片_20180322085800.jpg 

 

因此在deep learning的模型裏面,比較重要的就是怎麼去計算這個距離向量,一樣的,也是由於有word embedding的發現,讓咱們可以把一個句子變成連續向量。

 

 

那麼在實際應用中,dependency parser有多少意義呢?咱們不可否認dependency parser的意義,但它有幾點很大的限制:

微信圖片_20180322085804.jpg 

那麼爲何中文準確率會那麼低呢?主要有如下兩點:

微信圖片_20180322085806.jpg

 

爲了解決這個問題,咱們設計了一種簡化標註的思路:

微信圖片_20180322085809.jpg 

怎麼簡化呢?就是讓標註人員去標這裏面的語義結構,識別裏面的語義塊,但它仍然有缺陷,咱們只能強化學習。

 

以上全部部分就是此次線上直播的主要分享內容,相信你必定對dependency parser有了更深刻的認識,想了解更多更詳細內容的小夥伴們,能夠關注服務號:FMI飛馬網,點擊菜單欄飛馬直播,便可進行學習。

 

服務號.jpg

相關文章
相關標籤/搜索