1. 程式人生 > >nlp 筆記:A Fast and Accurate Dependency Parser using Neural Networks

nlp 筆記:A Fast and Accurate Dependency Parser using Neural Networks

技術分享 線性 如果 pla 筆記 das ima 問題 調查

概要:本文使用神經網絡完成了一個快速準確的依存語法分析程序,也就是句子的結構。

  • introduction:

  以前的depenency parser效果很好,但是有幾個問題:

  1. 所用的特征很稀疏,而數據不夠訓練這些權重。
  2. 特征都是人工提取的模版,需要專業知識的情況下還經常不全面。
  3. 計算這些特征十分費時。

  作者想出了一個好方法來解決這些問題,其實我覺得這些都是第一個問題帶來的。

  • Transition-Based Dependency Parsing

  先解釋什麽是Dependency Parsing。依存語法是一種二元非對稱關系,一個詞A有一個箭頭指向另外一個詞B, 箭頭上通常有標簽(label

),這些標簽表示語法關系,比如主語,同位語等等。箭頭連接的兩個詞有head(高級)和dependent(低級)的區別。而這些箭頭稱為dependency。本文的箭頭是從headdependent。通常一個句子中加一個假的root,這樣每個單詞dependent於另一個節點。通常這些依存關系會形成一棵樹(連通,非循環,一個根結點)。對於dependency parsing有一個定義是projectivity,叫投影。如果這些箭頭沒有交叉,則稱這個樹是projective的。如下圖就是這樣。

技術分享圖片

此圖是論文中的例子,比如He就dependent於has,因為has說明了he要幹嘛,所以has是head。而he是has的名詞主語(nominal subjective),就是label。可以看出圖中的關系形成了一棵樹。

  接下來解釋什麽叫transition-based。依舊是論文的例子。圖:

技術分享圖片

  parser有以下幾項:

  1. 一個stack S,root第一個入棧,棧頂靠右,圖中棧頂是詞good。
  2. 一個buffer B,第一個元素是在最左邊,按照句子的順序開始。
  3. 一個放dependency邊的集合A
  4. transition的集合

  在本文中,有如下幾種transition:

  1. LEFT-ARC(l): 往A中增加一條s1到s2的邊,label是l
  2. RIGHT-ARC(l): 往A中增加一條s2到s1的邊,label是l
  3. SHIFT: 把b1移到stack中,前提是buffer的長度大於等於1

  對於論文中的例子,有下圖:

技術分享圖片

  這樣就可以得到句子的dependency 樹了,也就是句子的結構。

  • Neural Network Based Parser

  本文的目的是通過現有的信息,預測出下一步的transition。首先是所用的模型:

  如圖所示:

技術分享圖片

  輸入由三部分組成,詞,詞的詞性,詞的箭頭的label,但是全都是embedding的形式。一共選18個詞xw:(1)stack和buffer的前3個單詞:s1、s2、s3、b1、b2、b3;(2)棧頂兩個單詞的第一個和第二個最左邊/最右邊的子單詞:lc1(si), rc1(si), lc2(si), rc2(si), i = 1,2。(3)最左邊的最左邊/最右邊的最右邊——堆棧上最上面兩個單詞的大多數子元素:lc1(lc1(si))、rc1(rc1(si))、i = 1,2。xt:使用這18個詞的詞性標記,xl對應的單詞arc的label,不包括Sl堆棧/緩沖區上的那6個單詞,有12個,沒有的元素用null來代替。embedding的長度是50,直接行向量的形式連接起來,所以輸入長度是50*(18+18+12)。

  隱藏層的長度是200,由圖中公式算出,值得註意的是,公式不僅是進行了線性變換,加了一個三次方,論文中說比起tanh或者sigmoid效果很不錯,但是原因說不出,說是有待理論調查。

  最終輸出層是softmax,有2n+1個transition待選,選出其中可能性最高的。n是總的label的數量。leftarc * n+rightarc * n +shift,共2n+1個transition可選。

  最終實驗效果很好,速度很快。

  具體的訓練實驗細節和模型評估等請看論文A Fast and Accurate Dependency Parser using Neural Networks。

  

感嘆:word2vec對於nlp的影響真大。

nlp 筆記:A Fast and Accurate Dependency Parser using Neural Networks