什么是依存句法樹
依存句法樹就是表示一個句子中詞與詞之間的依存關系,如下圖
其中兩個詞之前的弧表示這兩個詞有依存關系,弧上的標簽為二者的關系,弧的始發點為父親節點,箭頭指向為孩子節點。比如The 和 fox 是冠詞+名詞(det)的名詞短語。
除了一個詞,即根節點(這里為jumped)外,其他詞都有詞作為父親節點,而該根節點(jumped)的父親節點為root。
但是注意,依存句法樹是不允許弧之間有交叉或者回路!
依存句法樹數據表示
依存句法樹的文本表示格式為conll格式,如表
根據該表的父親節點索引和對應的弧上關系就能還原該依存句法樹。其中-1表示根節點。
依存句法樹的用途
我們通常將依存句法的特征融入到其他任務模型里,比如機器翻譯、意見挖掘、語篇分析等,一般能得到更好的性能。
那怎么得到依存句法特征呢?通常有兩種方法:
將依存句法樹喂給遞歸神經網絡,得到的隱層表示可以作為該依存句法的特征表示。
將依存句法樹交給特征模板,從而得到該依存句法的特征表示。
什么是Transition-based基于轉移的框架?
這個框架由狀態和動作兩部分構成,其中狀態用來記錄不完整的預測結果,動作則用來控制狀態之間的轉移。
用在生成依存句法樹上,則具體表示為從空狀態開始,通過動作轉移到下一個狀態,一步一步生成依存句法樹,最后的狀態保存了一個完整的依存樹。依存分析就是用來預測詞與詞之間的關系,現在轉為預測動作序列。在基于轉移的框架中,我們定義了4種動作(棧頂的元素越小表示離棧頂越近):
移進(shift):隊列首元素出棧,壓入棧成為
。
左規約(arc_left_l):棧頂2個元素規約,
下沉成為
的左孩子節點,l為弧上關系。
右規約(arc_right_l):棧頂2個元素規約,
下沉成為
的右孩子節點,l為弧上關系。
根出棧(pop_root):根節點出棧,分析完畢。
ps:下沉的意思
0下沉,視覺效果能看出是1的孩子
所以,我們基于轉移的依存句法分析器就由預測樹結構問題轉為預測動作序列問題。使得問題簡單了不少。
Transition-based基于轉移的具體例子
還是以上面的依存樹為例:
一整套依存分析的動作序列(金標,訓練數據)就變為:
詳細解釋下:
初始狀態
棧為空,隊列為整個文本的數字序列。這個時候只能進行移進shift操作:
因為左邊棧對一個元素0,還是只能進行移進shift操作:
這個時候棧中有2個元素,我們此時看依存樹
0、1之間并沒有弧,不能進行規約,所以還是只能shift:
此時看棧頂兩元素,發現依存樹中1、2之間有依存關系
而且1為2的孩子,所以此時的動作為左規約arc_left,1下沉,為2的孩子(此時實際操作為1被踢出棧,棧里剩為0、2,踢出是因為最后能根據動作序列還原整個依存樹,當然也為了接下來的操作方便),此時標簽為amod:
此時棧里為0、2,再次查看依存樹
發現0、2之間有依存關系,其中0為2的孩子,所以此時操作為左規約,此時標簽為det
...
中間略過一些步驟,因為都是同理,這次說下第9步:
此時棧中為3、4,查看依存樹
按照正常操作,此時應該arc_right右規約,但是如果真的4就下沉,就沒了。而一會5要入棧,再查看依存樹發現4是自己的爸爸,天吶,5的爸爸沒了,找不到了,消失了,其他詞都有爸爸,就5沒有,還有比這個更慘的嗎?這就沒發再進行操作了!所以,還有一個潛規則如果操作為棧頂元素要進行arc_right時,不執行該操作,而選擇shift。
而你可能會問arc_left會有這樣的問題嗎?不會啦,比如3、4進行arc_left操作,3下沉,如果右邊的隊列中有父親節點是3,那么就表示該依存樹有交叉或者回路!這種是不可能發生的,因為依存樹不允許有交叉或者回路!(不信的話,你自己畫畫試試)
最后說下,pop_root根彈出操作,只能發生在最后
右下角的數據為詞與詞之間的關系,這個就是根據動作序列生成的依存關系(父親,孩子,關系),根據該關系,就能還原成原來的依存樹。
神經網絡模型
我們用神經網絡來進行特征抽取,該網絡共分為2部分:
編碼端:用來負責計算詞的隱層向量表示
解碼端:用來解碼計算當前狀態的所有動作得分
編碼端
我們用Bi-LSTM來編碼一個句子
,計算對應的隱層表示
。公式表示為:
其中,為詞向量,
為詞性向量,
為向量拼接。
具體解釋:
就是咱們平時用的詞的embedding
就是詞性,比如是NN,VV,VP等。將它當成詞的操作一樣,用它自己的embedding(和詞的embedding不是一個!)表示。
就是向量拼接,咋拼接都行,cat呀,add呀都行的。自己嘗試哪個效果好用哪個,沒有死規定。而我們這里用的是cat。
解碼端
解碼端就需要對每一個狀態打出所有動作的得分。根據經驗,認為棧頂三元素和隊列首元素為動作預測關鍵特征,于是將棧頂三元素(下標越小離棧頂越近)和隊列首元素
進行拼接。然后用線性變換計算每一個動作的分數:
模型預測
對每一個動作的分數進行Softmax概率化,然后輸入到交叉熵中,作為目標函數。然后再用Adam來進行更新模型參數,最小化目標函數:
其中為金標動作序列的概率,
為模型參數。
-
神經網絡
+關注
關注
42文章
4779瀏覽量
101172 -
框架
+關注
關注
0文章
403瀏覽量
17543 -
機器翻譯
+關注
關注
0文章
139瀏覽量
14947
原文標題:詳解Transition-based Dependency parser基于轉移的依存句法解析器
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Slew time和Transition time是否一樣?
![Slew time和<b class='flag-5'>Transition</b> time是否一樣?](https://file1.elecfans.com/web2/M00/A2/E6/wKgZomUCaduAAH_1AABjDM7n8Ko912.png)
關于EBD和NBD
HOOFR-SLAM的系統框架及其特征提取
Gowin RAM Based Shift Register IP參考設計
ECC Based Threshold Decryption
Frequency Inverter Based Drawi
Transition Mode PFC Controller
以PC Based Controller設計Modbus通信
Architecture of a DSP Based Du
Model Based Design with VisSim EMBEDDED
![Model <b class='flag-5'>Based</b> Design with VisSim EMBEDDED](https://file.elecfans.com/web2/M00/49/CC/pYYBAGKhvGGAH4EtAAA65Ya2kSw142.png)
RFID標簽所有權轉移協議
如何來手動修復max transition和max capacitance
![如何來手動修復max <b class='flag-5'>transition</b>和max capacitance](https://file.elecfans.com/web1/M00/6B/26/o4YBAFvcE5uACN_vAAAI4a-bT4M461.jpg)
Gowin RAM Based Shift Register參考設計
![Gowin RAM <b class='flag-5'>Based</b> Shift Register參考設計](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論