back to index
[DLHLP 2020] Deep Learning for Dependency Parsing

link |
Dependency的Parsing
link |
我們為什麼把Parsing特別拿出來講呢?
link |
這頁投影片,我相信大家已經看過很多次了
link |
我們說NLP的任務,就可以歸類成幾大類
link |
我們沒有辦法把它放到這八大類的NLP任務上
link |
所以我們特別拿出來講,其中一個就是Parsing
link |
那之前呢,我們已經講過Constituency Parsing
link |
那Constituency Parsing在意的是說
link |
某兩個相鄰的詞彙,它們能不能夠拼在一起變成一個Constituent
link |
這些Constituent還可以再拼成更大的Constituent
link |
那我們已經講過Constituency Parsing是怎麼運作的
link |
那Dependency Parsing它關注的點跟Constituency Parsing不太一樣
link |
Constituency Parsing在意的是兩個相鄰的Token能不能夠組成一個Constituent
link |
那Dependency Parsing在意的是兩個詞彙之間的關係
link |
所以Dependency Parsing相較於Constituency Parsing
link |
Constituency Parsing只在意相鄰詞彙之間的關係
link |
但Dependency Parsing它在意的是一個句子裡面
link |
不是相鄰的詞彙,它們可能也會有非常緊密的關係
link |
所以Dependency Parsing它考慮的是詞彙和詞彙之間的關係
link |
We book her the flight to Taipei
link |
那雖然book跟flight它們沒有直接相連
link |
但是flight是book所訂的東西
link |
所以flight跟book它們有非常緊密的關聯性
link |
那這個就是Dependency Parsing想要找出來的東西
link |
箭頭指向的那一個詞彙我們叫dependent
link |
那這個我們是想要憑藉著Machine Learning的力量
link |
那Dependency Parsing要做的事
link |
Dependency Parsing要做的事
link |
變成一個directed graph
link |
directed graph的意思就是說
link |
node和node之間是由箭頭連起來
link |
I want to study a PhD
link |
那這句話的Dependency Parsing的結果
link |
Dependency Parsing就是要把一個句子
link |
就是Dependency Parsing的任務
link |
在做Dependency Parsing的時候
link |
其實它不是一個General的Graph
link |
這個就是Dependency Parsing
link |
就是我們要用Machine Learning
link |
那怎麼找出一個Dependency的Parsing Tree呢
link |
其實這個方法可能比你想像的還要更簡單
link |
Constituency Parsing的時候
link |
一個Spam 是不是Constituent呢
link |
你就Train一個Classifier
link |
它是Constituent 還是不是Constituent
link |
那它是哪一種Constituent呢
link |
把它當作一個Multiclass Classification的Problem來看待
link |
讓Classifier決定說這串文字
link |
其實Dependency Parsing也是一樣的
link |
Dependency Parsing在意的是
link |
所以真正要做的事情就是訓練一個Classifier
link |
這Classifier吃兩個詞彙作為Input
link |
這是一個Binary的Classification的問題
link |
把它當作一個Multiclass Classification的問題
link |
一個這樣子的Classifier以後
link |
你怎麼會透過這個Classifier
link |
來得到一個Dependency的Parsing Tree呢
link |
左邊這個輸入應不應該接到右邊這個輸入
link |
現在Classifier的輸入是Root跟Want
link |
所以Classifier就會說Yes
link |
分別當作Classifier的左邊的輸入跟右邊的輸入
link |
那你只要訓練出這樣的Classifier
link |
然後把這個Classifier跑N加1平方次
link |
然後這些Token兩兩間都要用Classifier來跑一下
link |
你只需要把這些Token兩兩丟到Classifier
link |
Dependency Parsing
link |
iClear的論文跟ACL18的論文
link |
它先用Bidirectional的LSTM
link |
把每一個Token的Embedding抽出來
link |
用這個Bidirectional的LSTM
link |
我們現在就是要把這個Embedding
link |
然後Classifier幫我們決定說
link |
這兩個Embedding要不要被連在一起
link |
我們把這個Embedding乘上一個Transform
link |
我們把這個Embedding再乘上另外一個Transform
link |
做類似Attention這樣子的機制
link |
右邊這個Embedding乘上一個Transform
link |
它們應該被連在一起的Confident
link |
Binary Classifier的Output
link |
在講這個Dependency Parsing
link |
跟Constituency Parsing的時候
link |
其實在講這個Constituency Parsing的時候
link |
有一個Binary Classifier告訴你說
link |
然後這個Binary Classifier又說
link |
因為在Dependency Parsing Tree裡面
link |
每一個Node只能夠有一個Incoming的Age
link |
不合法的Dependency Parsing Tree
link |
但是如果單純把Dependency Parsing
link |
看作是一個Binary Classification Problem的話
link |
你可以用類似Maximum Spanning Tree的Algorithm
link |
其實我們在講Constituency Parsing的時候
link |
我們說如果是Dependency Parsing的話
link |
CKY的Chart Based Parsing來解決這個問題
link |
那如果在Dependency Parsing裡面
link |
你會用Maximum的Spanning Tree
link |
Classifier會Output一個分數給我們
link |
Root連到W2的信心分數給它0.2分
link |
Root連到W1的信心分數給它0.9分
link |
Dependency Parsing Tree
link |
那另外一個可能的Parsing Tree呢
link |
就是Dependency Parsing的結果
link |
找出所有符合規則的Parsing Tree
link |
那你就會用類似Maximum Spanning Tree的演算法
link |
那其實在Dependency Parsing裡面
link |
也可以做Transition Based Approach
link |
我們在講Constituency Parsing的時候
link |
也有講過這個Transition Based Approach
link |
有一個Stake 有一個Buffer
link |
然後有三個Action是你可以採取的
link |
那在Dependency Parsing裡面也是一樣
link |
Buffer一開始是把整個句子直接填進去
link |
最後就會得到一個Parsing Tree
link |
那因為這個部分跟Constituency Parsing差不多
link |
Focus的是Deep Learning的部分
link |
在Dependency Parsing裡面
link |
是怎麼做Transition Based Approach
link |
要知道說跟Constituency Parsing很像
link |
那你看這個圖也大概可以知道它是怎麼做的
link |
然後用一個LSTM把Buffer讀過去
link |
用一個LSTM把過去採行過的Action讀過去
link |
現在要採取三個Action裡面的哪一個
link |
就有一個Stake 有一個Buffer
link |
把Stake跟Buffer的資訊讀進去
link |
然後接下來決定要採取哪一個Action
link |
那這種Transition Based
link |
用Deep Learning做Transition Based的方法
link |
是Google在ACL16發表的Paper
link |
你看有一個Stake 有一個Buffer
link |
每次要決定說要採取這三個Action裡面的哪一個
link |
然後你就產生了一個Parsing Tree了
link |
我們要建一個Dependency的Parsing Tree
link |
然後每次要決定說要採取這三個Action裡面的哪一個
link |
你最後就可以產生一個Parsing Tree了
link |
這個不就是用Deep Learning做Transition Based的Parsing嗎
link |
不過當年,要看看這個Blog Post的時間
link |
所有人只要聽到一點點跟AI有關的東西
link |
它一定是用Reinforcement Learning Learn的
link |
更好的Transition Based Parsing的方法
link |
比如說有Stack Pointer啊
link |
有關Dependency Parsing的部分
link |
總之今天就是很快的帶過Dependency Parsing
link |
怎麼用Deep Learning的技術
link |
來做Dependency Parsing這件事情