依存句法解析:基於神經網絡的高性能依存句法解析器(A Fast and Accurate Dependency Parser using Neural Networks)

代碼實現:基於tensorflow 2.2實現,代碼見github

參考文獻:
1. A Fast and Accurate Dependency Parser using Neural Networks
2. 依存句法分析—A Fast and Accurate Dependency Parser using Neural Networks

Transition-based Dependency Parsing

從初始狀態開始,每步貪婪預測下一步的動作(多分類取分數/概率最高的類別),如轉移、生成左弧或右弧,直到所有單詞的預測完畢(stack僅含根節點,buffer爲空)。

基於貪婪的預測結構化數據,會導致錯誤傳播,一步錯導致步步錯,但是貪婪預測的方式仍能夠獲得較好的效果。

貪婪解析器最基本的要求是,能夠在給定信息下正確預測下一步動作,一般可用於正確做出預測的先驗信息包含:

  • 單詞及其詞性;
  • 單詞頭結點及其詞性;
  • 單詞所處棧區、緩衝區的位置,或者是否已經從棧區彈出;

傳統方法使用特徵模板的缺點:

  • 稀疏性:特徵可能具有高維稀疏性,從上表2中可知,單詞特徵、單詞對、單詞位置、棧區相鄰單詞的詞性、左右孩子依存關係等,對模型效果提升具有影響;
  • 不完全性:利用預先設定的“專家模板”,不可避免地會無法覆蓋所有的情況;
  • 計算開銷昂貴:需對不同特徵的連接、聚合,如對不同位置的單詞、詞性及依存句法的連接和組合,而且還需在數以百萬計的特徵集中查找這些特徵,這些特徵的連接、聚合、查找可能在訓練期間佔用90+%以上;

因此,本文提出一種使用密集特徵作爲神經網絡輸入的方法,構建貪婪依存句法解析器。


Neural Network Based Parser

模型輸入

拼接三種embedding:18個單詞特徵、18個詞性特徵和12依存關係特徵,共計48個特徵。

單詞特徵
i. 棧區和緩衝區前3個單詞,共計6個特徵

s1, s2, s3, b1, b2, b3

ii. 棧區前兩個單詞的左、右孩子中距離最近的兩個孩子,共計8個特徵

lc1(s1), rc1(s1), lc2(s1), rc2(s1), lc1(s2), rc1(s2), lc2(s2), rc2(s2)

iii. 棧區前兩個單詞距離最近左孩子的最近左孩子,最近右孩子的最近右孩子,共計4個特徵

lc1(lc1(s1)), rc1(rc1(s1)), lc1(lc1(s2)), rc1(rc1(s2))

詞性特徵
單詞特徵各單詞對應的詞性,共計18個特徵。


依存句法特徵(已經預測的依存句法)
除單詞特徵中第一種特徵之外的單詞對應的依存句法,共計12個特徵。


隱藏激活函數

使用 cube激活函數,代替relu、tanh等激活函數
h=(W1wxw+W1txt+W1lxl+b1)3 \boldsymbol h=(W_1^w\boldsymbol x^w+W_1^t\boldsymbol x^t+W_1^l\boldsymbol x^l+b_1)^3

式中,xw\boldsymbol x^w是單詞embedding輸出向量,如embedding_size=50,則xw\boldsymbol x^w的維度是50*18=900。

激活函數的等價形式(拼接三種輸入embedding):
h=([W1w,W1t,W1l][xw;xt;xl]+b1)3=(W1x+b1)3 \boldsymbol h=([W_1^w,W_1^t,W_1^l] \cdot [\boldsymbol x^w;\boldsymbol x^t;\boldsymbol x^l] + b_1)^3=(W_1\boldsymbol x + b_1)^3


使用cube函數可以 建模三種不能特徵的不同組合

本文中三種特徵xi,xj,xkx_i,x_j,x_k來自於三種embedding3的不同維度,這種激活函數可能捕獲三種特徵的不同組合形式。


輸出層

softmax輸出多類別概率。


模型訓練

  • 使用預訓練詞向量初始化word embedding;

  • 損失函數:
    L(θ)=ilogpti+λ2θ2,λ=1e8 L(\theta)=-\sum_i\log p_{t_i}+\frac{\lambda}{2}||\theta||^2,\quad \lambda=1e-8

  • 優化器:Adagrad,初始學習率0.01;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章