CS224n系列:
【CS224n】Neural Networks, Backpropagation
【CS224n】Neural-Dependency-Parsing
【CS224n】Language Models, RNN, GRU and LSTM
【CS224n】Neural Machine Translation with Seq2Seq
【CS224n】ConvNets for NLP
1.1 Dependency Parsing
依存句法分析就是表示句子中詞與詞之間的關係,如下圖所示:
有向弧表示兩個詞有依存關係,箭頭表示父節點指向子節點,弧上的標籤表示具體的依存關係。
除了根節點(此處爲submitted),其他詞都有詞作爲它的父節點,根節點的父節點爲ROOT。
依存句法樹的數據表示如下圖:
1.2 Transition-Based Dependency Parsing
基於轉移的依存句法解析器
包括兩個部分:狀態和動作,狀態用來記錄中間變化過程,動作用來控制狀態的變化(轉移)。
定義以下三個狀態:
狀態之間的轉移包括以下三個類型:
轉移過程可以參照下圖進行理解:
堆從空狀態開始,通過動作轉移到下一個狀態,直到堆和緩衝區都沒有元素結束,一步步生成依存句法樹。
從網上找了一張圖可以清楚地瞭解整個轉移過程(圖片來源:詳解Transition-based Dependency parser基於轉移的依存句法解析器):
通過以上分析,我們可以看到,整個生成依存句法樹的任務變成了一個預測動作的過程,這個動作包括下一步的轉移以及轉移過程中涉及到的兩個詞之間的依存關係。
因此,我們可以很直接地想到用神經網絡來預測下一步動作:
參考:https://blog.csdn.net/Despacit0/article/details/92835286
1.3 作業
1.3.1 Machine Learning & Neural Networks
(a)給定以下依存句法樹,寫出狀態轉移過程。
Stack | Buffer | New dependency | Transition |
---|---|---|---|
[ROOT] | [I,parsed,this,sentence,correctly] | Initial Configuration | |
[ROOT,I] | [parsed,this,sentence,correctly] | SHIFT | |
[ROOT,I,parsed] | [this,sentence,correctly] | SHIFT | |
[ROOT,parsed] | [this,sentence,correctly] | parsedI | LEFT-ARC |
[ROOT,parsed,this] | [sentence,correctly] | SHIFT | |
[ROOT,parsed,this,sentence] | [correctly] | SHIFT | |
[ROOT,parsed,sentence] | [correctly] | sentencethis | LEFT-ARC |
[ROOT,parsed] | [correctly] | parsedsentence | RIGHT-ARC |
[ROOT,parsed,correctly] | SHIFT | ||
[ROOT,parsed] | parsed correctly | RIGHT-ARC | |
[ROOT] | ROOTparsed | RIGHT-ARC |
(b)一個長度爲n的句子,需要多少步進行解析?
答:2*n+1。理由:需要進行n次移位(SHIFT)+n次左規約/右規約(LEFT-ARC/RIGHT-ARC)+1次初始化。
1.3.2 Coding
代碼: https://github.com/sfeng-m/Neural-Dependency-Parsing
結果:訓練10個epoch,在小數據集上(small subset of the data),Loss=0.0928(要求<0.2); dev UAC(Unlabeled Attachment Score)=71.26(要求>65).
訓練10個epoch,在全量數據集上,Loss=0.0282(要求<0.08); dev UAC=89.15(要求>87).