back to index

[DLHLP 2020] Deep Learning for Dependency Parsing


link |
00:00.000
Dependency的Parsing
link |
00:05.720
我們為什麼把Parsing特別拿出來講呢?
link |
00:09.220
這頁投影片,我相信大家已經看過很多次了
link |
00:12.220
我們說NLP的任務,就可以歸類成幾大類
link |
00:16.220
但有一些任務看起來比較複雜
link |
00:19.600
我們沒有辦法把它放到這八大類的NLP任務上
link |
00:24.300
所以我們特別拿出來講,其中一個就是Parsing
link |
00:29.500
那之前呢,我們已經講過Constituency Parsing
link |
00:34.500
那Constituency Parsing在意的是說
link |
00:37.000
某兩個相鄰的詞彙,它們能不能夠拼在一起變成一個Constituent
link |
00:44.500
這些Constituent還可以再拼成更大的Constituent
link |
00:49.000
然後組成一個樹狀的結構
link |
00:51.500
那我們已經講過Constituency Parsing是怎麼運作的
link |
00:56.000
那Dependency Parsing它關注的點跟Constituency Parsing不太一樣
link |
01:01.500
Constituency Parsing在意的是兩個相鄰的Token能不能夠組成一個Constituent
link |
01:07.500
那Dependency Parsing在意的是兩個詞彙之間的關係
link |
01:13.500
而這兩個詞彙不一定要相鄰
link |
01:17.000
所以Dependency Parsing相較於Constituency Parsing
link |
01:20.500
它又有更大的Flexibility
link |
01:22.500
Constituency Parsing只在意相鄰詞彙之間的關係
link |
01:25.500
但Dependency Parsing它在意的是一個句子裡面
link |
01:29.000
詞彙兩兩之間的關係
link |
01:32.000
它們不需要是相鄰的
link |
01:34.500
不是相鄰的詞彙,它們可能也會有非常緊密的關係
link |
01:38.000
所以Dependency Parsing它考慮的是詞彙和詞彙之間的關係
link |
01:42.500
而不局限於兩個詞彙是否是相鄰
link |
01:46.000
舉例來說,在今天這個例子裡面
link |
01:49.500
今天在這個例子裡面有說
link |
01:51.500
We book her the flight to Taipei
link |
01:54.500
那book是book什麼東西呢?
link |
01:57.500
訂了一個什麼東西呢?
link |
01:59.000
是訂了一個飛機票
link |
02:01.000
那雖然book跟flight它們沒有直接相連
link |
02:05.000
但是flight是book所訂的東西
link |
02:09.000
所以flight跟book它們有非常緊密的關聯性
link |
02:13.500
那這個就是Dependency Parsing想要找出來的東西
link |
02:19.000
當我們說兩個詞彙間有關聯的時候
link |
02:24.000
這種關聯有各式各樣的關聯
link |
02:29.000
那我們會用一個箭頭來表示這種關係
link |
02:33.000
在這個箭頭的起始我們叫做head
link |
02:37.000
起始的詞彙叫做head
link |
02:39.000
箭頭指向的那一個詞彙我們叫dependent
link |
02:44.000
那詞彙和詞彙之間有什麼樣的關係呢?
link |
02:48.000
有非常多種關係
link |
02:50.000
那這邊我們就不細講
link |
02:52.000
我這邊就直接剪了一個教科書裡面的圖
link |
02:56.000
給大家看說
link |
02:57.000
詞彙和詞彙之間有很多各式各樣的關係
link |
03:01.000
那這個我們是想要憑藉著Machine Learning的力量
link |
03:05.000
幫我們找出來的
link |
03:07.000
那Dependency Parsing要做的事
link |
03:10.000
就是找出詞彙和詞彙之間的關係
link |
03:13.000
而講得更具體而言
link |
03:15.000
Dependency Parsing要做的事
link |
03:17.000
就是把一個句子變成一個graph
link |
03:21.000
變成一個directed graph
link |
03:24.000
directed graph的意思就是說
link |
03:26.000
node和node之間是由箭頭連起來
link |
03:28.000
而這些箭頭是有方向性的
link |
03:30.000
這個叫directed graph
link |
03:32.000
那這個graph裡面
link |
03:34.000
每一個節點每一個node
link |
03:36.000
就是一個詞彙
link |
03:38.000
詞彙和詞彙節點和節點之間的edge
link |
03:42.000
就代表了這兩個詞彙之間的關係
link |
03:46.000
那舉一個具體的例子
link |
03:48.000
假設一個句子是說
link |
03:49.000
I want to study a PhD
link |
03:51.000
我想念個博班
link |
03:53.000
你會對你指導教授說的話
link |
03:55.000
你想要念個博班
link |
03:57.000
想要簽下去
link |
03:59.000
那這句話的Dependency Parsing的結果
link |
04:01.000
長什麼樣子呢
link |
04:03.000
Dependency Parsing就是要把一個句子
link |
04:05.000
變成一個圖
link |
04:07.000
這個圖上每一個節點就是一個詞彙
link |
04:11.000
然後接下來節點和節點間
link |
04:14.000
詞彙和詞彙之間
link |
04:16.000
有關係的詞彙會被連在一起
link |
04:19.000
比如說
link |
04:20.000
Want的主詞是什麼呢
link |
04:22.000
誰想呢
link |
04:23.000
我想
link |
04:24.000
我想要做什麼呢
link |
04:26.000
想要念一個東西
link |
04:28.000
想要念什麼呢
link |
04:29.000
想要念博班
link |
04:32.000
那這些詞彙和詞彙間有關係的
link |
04:35.000
就被箭頭把它連起來
link |
04:37.000
而箭頭上面其實會有一個標記
link |
04:41.000
每一個箭頭是有不同的型態的
link |
04:44.000
這邊我們用一個英文的
link |
04:47.000
用一串英文來代表這個型態
link |
04:50.000
每一個箭頭都是有不同的型態
link |
04:54.000
代表這兩個用箭頭連在一起的詞彙
link |
04:57.000
它們之間有什麼樣的關係
link |
05:01.000
那找出這個Graph
link |
05:03.000
就是Dependency Parsing的任務
link |
05:07.000
那你會發現說在這個圖上
link |
05:10.000
一般每一個詞彙
link |
05:12.000
它都只有一個Parent
link |
05:15.000
比如說Study就是被Want指到
link |
05:18.000
然後PhD就是被Study指到
link |
05:21.000
然後會有某一個詞彙
link |
05:23.000
它沒有被任何其他人指到
link |
05:26.000
所以這個時候一般而言呢
link |
05:28.000
在做Dependency Parsing的時候
link |
05:30.000
你就會加上一個額外的Node
link |
05:33.000
這個Root會去指向那個
link |
05:36.000
沒有任何人指到的詞彙
link |
05:39.000
這個詞彙指的是
link |
05:41.000
這整個句子裡面最關鍵的那個詞彙
link |
05:43.000
它指向所有人
link |
05:45.000
沒有人被它指到
link |
05:46.000
那這一個沒有被指到的詞彙
link |
05:48.000
就用Root來指它
link |
05:51.000
所以這整個Graph
link |
05:53.000
其實它不是一個General的Graph
link |
05:56.000
它是一個樹狀的結構
link |
05:58.000
在這個樹狀的結構裡面
link |
06:00.000
每一個Node也就是每一個詞彙
link |
06:02.000
只會有一個箭頭指進來
link |
06:06.000
唯一的例外是Root
link |
06:08.000
沒有箭頭指進來
link |
06:09.000
它只有指給別人
link |
06:11.000
但是一個詞彙
link |
06:12.000
它可以指給很多不同的詞彙
link |
06:14.000
比如說Want
link |
06:15.000
它可以指向I
link |
06:17.000
也可以指向Study
link |
06:18.000
那因為它是一個樹狀的結構
link |
06:20.000
所以在這個樹狀結構裡面
link |
06:23.000
的每一個Node
link |
06:26.000
每一個詞彙
link |
06:27.000
它都有唯一的一條路徑
link |
06:30.000
可以回溯到它的Root
link |
06:33.000
因為它是一個樹狀的結構
link |
06:34.000
所以它不會有兩條不同路徑
link |
06:36.000
回溯到Root
link |
06:37.000
每一個詞彙
link |
06:38.000
都只有一個唯一的路徑
link |
06:40.000
可以回溯到Root
link |
06:43.000
這個就是Dependency Parsing
link |
06:46.000
就是我們要用Machine Learning
link |
06:48.000
找出來的東西
link |
06:50.000
那怎麼找出一個Dependency的Parsing Tree呢
link |
06:54.000
其實這個方法可能比你想像的還要更簡單
link |
06:58.000
還記不記得我們在講
link |
06:59.000
Constituency Parsing的時候
link |
07:01.000
我們說怎麼知道一串文字
link |
07:04.000
一個Spam 是不是Constituent呢
link |
07:07.000
你就Train一個Classifier
link |
07:09.000
這個Classifier吃一串文字
link |
07:11.000
接下來它會說
link |
07:12.000
它是Constituent 還是不是Constituent
link |
07:16.000
那它是哪一種Constituent呢
link |
07:18.000
把它當作一個Multiclass Classification的Problem來看待
link |
07:23.000
讓Classifier決定說這串文字
link |
07:26.000
它是哪一個Constituent
link |
07:30.000
它如果是Constituent的話
link |
07:32.000
它是哪一個Constituent
link |
07:34.000
其實Dependency Parsing也是一樣的
link |
07:37.000
Dependency Parsing在意的是
link |
07:39.000
兩個詞彙間他們有沒有關係
link |
07:42.000
如果有的話是什麼樣的關係
link |
07:45.000
所以真正要做的事情就是訓練一個Classifier
link |
07:48.000
這Classifier吃兩個詞彙作為Input
link |
07:52.000
然後它來判斷說
link |
07:54.000
到底左邊這個詞彙
link |
07:56.000
該不該有一個箭頭指向右邊這個詞彙
link |
08:00.000
Classifier會吃兩個輸出
link |
08:01.000
Classifier會吃兩個輸入
link |
08:04.000
我們叫它左輸入跟右輸入
link |
08:08.000
那Classifier要決定說
link |
08:10.000
左側的這個輸入能不能
link |
08:12.000
應不應該被指到右側這個輸入
link |
08:16.000
那應不應該呢
link |
08:17.000
這是一個Binary的Classification的問題
link |
08:20.000
這只是一個簡單的二元分類的問題
link |
08:24.000
左邊這個詞彙要指到右邊這個詞彙
link |
08:27.000
或左邊這個詞彙不要指到右邊這個詞彙
link |
08:30.000
這是一個二元分類的問題
link |
08:33.000
如果我們確定說
link |
08:34.000
左邊這個詞彙要指到右邊這個詞彙
link |
08:37.000
那這兩個詞彙間的關係到底是什麼呢
link |
08:39.000
把它當作一個Multiclass Classification的問題
link |
08:43.000
然後就Train下去
link |
08:45.000
就結束了
link |
08:49.000
假設你真的Train出來了
link |
08:52.000
一個這樣子的Classifier以後
link |
08:54.000
你怎麼會透過這個Classifier
link |
08:56.000
來得到一個Dependency的Parsing Tree呢
link |
09:00.000
你要做的事情就是這個樣子
link |
09:02.000
你有N個詞彙
link |
09:05.000
那你其實除了這N個詞彙以外
link |
09:07.000
你還多加一個多餘的詞彙叫做Root
link |
09:11.000
接下來呢
link |
09:12.000
把這些N個詞彙加上Root
link |
09:15.000
兩兩丟到Classifier裡面
link |
09:17.000
問Classifier說
link |
09:19.000
左邊這個輸入應不應該接到右邊這個輸入
link |
09:22.000
舉例來說
link |
09:23.000
現在Classifier的輸入是Root跟Want
link |
09:26.000
那你在訓練的時候
link |
09:28.000
你有Ground Truth
link |
09:29.000
你有標準答案
link |
09:30.000
你有Label好的標準答案
link |
09:32.000
所以你知道說Root要指到Want
link |
09:37.000
所以Classifier就會說Yes
link |
09:39.000
Root要指到Want
link |
09:41.000
或者是你把另外兩個詞彙Q跟A
link |
09:44.000
分別當作Classifier的左邊的輸入跟右邊的輸入
link |
09:48.000
Q有指到A嗎
link |
09:50.000
沒有
link |
09:51.000
所以Classifier就要說No
link |
09:53.000
那你只要訓練出這樣的Classifier
link |
09:55.000
然後把這個Classifier跑N加1平方次
link |
09:59.000
因為這邊有N個Word加Root嘛
link |
10:01.000
所以總共有N加1個Token
link |
10:04.000
然後這些Token兩兩間都要用Classifier來跑一下
link |
10:09.000
它們應不應該被接在一起
link |
10:11.000
那你就跑N加1平方次就好了
link |
10:13.000
那事實上N加1平方次是高估啦
link |
10:15.000
不應該是N加1平方次啦
link |
10:17.000
因為自己跟自己不用算嘛
link |
10:19.000
所以其實是N加1乘N
link |
10:22.000
而且其實還應該要再更少一點
link |
10:25.000
為什麼還應該要再更少一點呢
link |
10:27.000
因為Root它只能夠指向別人
link |
10:30.000
它不能夠被別人指向
link |
10:32.000
所以你不需要去檢查說
link |
10:34.000
愛會不會指向Root
link |
10:36.000
Want會不會指向Root
link |
10:37.000
因為這本來就是不合理不可能的
link |
10:39.000
一開始你就不會去
link |
10:41.000
不需要去檢查這件事
link |
10:42.000
你只需要檢查說Root能不能指愛
link |
10:45.000
Root能不能指Want
link |
10:46.000
所以這邊N加1平方次是遠遠的
link |
10:49.000
其實是高估啦
link |
10:51.000
其實還有很多可能你是不需要考慮的
link |
10:53.000
那總之呢
link |
10:55.000
你只需要把這些Token兩兩丟到Classifier
link |
10:58.000
讓Classifier告訴你說
link |
11:00.000
要不要被接在一起
link |
11:01.000
就結束了
link |
11:03.000
Dependency Parsing
link |
11:05.000
就做完了
link |
11:07.000
就這樣子
link |
11:09.000
在文獻上真的是這麼做的嗎
link |
11:12.000
真的是這麼做
link |
11:14.000
所以這邊就是引用了一個
link |
11:16.000
iClear的論文跟ACL18的論文
link |
11:19.000
告訴你說
link |
11:21.000
真的就是這麼做
link |
11:23.000
當然這邊我們可以來稍微看一下
link |
11:25.000
18年的ACL這篇Paper的做法
link |
11:27.000
它先用Bidirectional的LSTM
link |
11:30.000
把每一個Token的Embedding抽出來
link |
11:33.000
因為那個時候BERT呢
link |
11:35.000
還沒有BERT
link |
11:36.000
所以就不會用BERT
link |
11:38.000
用這個Bidirectional的LSTM
link |
11:40.000
今天你如果自己要做的話
link |
11:42.000
你當然會選擇用BERT
link |
11:44.000
然後把這個Embedding
link |
11:46.000
我們現在就是要把這個Embedding
link |
11:48.000
兩兩丟到Classifier裡面去
link |
11:51.000
然後Classifier幫我們決定說
link |
11:53.000
這兩個Embedding要不要被連在一起
link |
11:56.000
如果它們被連在一起的話
link |
11:58.000
那它們的Relation應該是什麼
link |
12:01.000
那實際上在這篇Paper裡面
link |
12:03.000
它的做法就是說
link |
12:04.000
我們把這個Embedding乘上一個Transform
link |
12:07.000
得到另外一個Embedding
link |
12:08.000
我們把這個Embedding再乘上另外一個Transform
link |
12:11.000
得到另外一個Embedding
link |
12:12.000
然後呢
link |
12:13.000
我們把這兩個Embedding
link |
12:16.000
做類似Attention這樣子的機制
link |
12:21.000
那實際上它做的事情是把
link |
12:23.000
右邊這個Embedding乘上一個Transform
link |
12:26.000
再乘上左邊這個Embedding
link |
12:28.000
然後會得到一個數值
link |
12:29.000
那個數值就代表說
link |
12:31.000
這兩個Token應不應該被連在一起
link |
12:35.000
它們應該被連在一起的Confident
link |
12:37.000
這個數值就代表了一個
link |
12:39.000
Binary Classifier的Output
link |
12:41.000
然後就結束了
link |
12:42.000
像Label的部分其實也是
link |
12:45.000
就以此類推而已
link |
12:49.000
好 但講到這邊
link |
12:50.000
我們可能會發現一個問題
link |
12:52.000
那你會發現說呢
link |
12:53.000
在這個
link |
12:56.000
在講這個Dependency Parsing
link |
12:59.000
跟Constituency Parsing的時候
link |
13:00.000
有很多類似的地方
link |
13:02.000
其實在講這個Constituency Parsing的時候
link |
13:05.000
我們也講過類似的問題
link |
13:07.000
就是你如果單純把整個問題
link |
13:09.000
看作是一個分類的問題
link |
13:11.000
你可能會製造出矛盾的結果
link |
13:14.000
你可能會製造出
link |
13:15.000
不是Tree的東西
link |
13:18.000
不符合規則的東西
link |
13:20.000
舉例來說
link |
13:21.000
你有可能說
link |
13:22.000
有一個Binary Classifier告訴你說
link |
13:24.000
W1要接到W
link |
13:27.000
所以你就在W1跟W2之間
link |
13:29.000
加一個Age
link |
13:30.000
然後這個Binary Classifier又說
link |
13:32.000
現在我們把W3當作左邊的輸入
link |
13:36.000
W2當作右邊的輸入
link |
13:37.000
它又說Yes
link |
13:38.000
代表說W3應該要接到W2
link |
13:42.000
但這樣就矛盾了
link |
13:43.000
因為在Dependency Parsing Tree裡面
link |
13:45.000
每一個Node只能夠有一個Incoming的Age
link |
13:49.000
它只能夠有一個輸入的箭頭
link |
13:51.000
它不可以有兩個輸入的箭頭
link |
13:53.000
這樣你就製造出一個
link |
13:54.000
不合法的Dependency Parsing Tree
link |
13:58.000
那這個是我們不想要的
link |
14:00.000
但是如果單純把Dependency Parsing
link |
14:03.000
看作是一個Binary Classification Problem的話
link |
14:06.000
你會遇到這樣子的問題
link |
14:09.000
所以怎麼辦呢
link |
14:10.000
你可以用類似Maximum Spanning Tree的Algorithm
link |
14:15.000
來解釋這個問題
link |
14:16.000
其實我們在講Constituency Parsing的時候
link |
14:19.000
也說遇到這樣子的
link |
14:21.000
有可能產生不符合文法
link |
14:23.000
不符合規則的文法數的狀況
link |
14:26.000
我們就用另外一個方法
link |
14:28.000
我們說如果是Dependency Parsing的話
link |
14:31.000
你就是用這個CKY的Parser
link |
14:34.000
CKY的Chart Based Parsing來解決這個問題
link |
14:37.000
那如果在Dependency Parsing裡面
link |
14:39.000
你會用Maximum的Spanning Tree
link |
14:41.000
那它的概念是這個樣子
link |
14:43.000
根據我們的Classifier
link |
14:45.000
我們會知道所有的Node
link |
14:48.000
兩兩之間
link |
14:49.000
它們應該被連在一起的分數
link |
14:53.000
Classifier會Output一個分數給我們
link |
14:55.000
Classifier可能會說
link |
14:56.000
Root連到W2的信心分數給它0.2分
link |
15:01.000
Root連到W1的信心分數給它0.9分
link |
15:04.000
W1連到W2的信心分數給它0.7分
link |
15:07.000
W2連到W1的信心分數給它0.3分
link |
15:11.000
接下來你重啟所有合乎規則的
link |
15:15.000
Dependency Parsing Tree
link |
15:17.000
比如說Root
link |
15:18.000
它只能夠指到W1跟W2的其中一個
link |
15:21.000
指誰呢
link |
15:22.000
它指W2
link |
15:23.000
如果它指W2的話
link |
15:25.000
W2就得去指W1
link |
15:28.000
那另外一個可能的Parsing Tree呢
link |
15:31.000
是Root去指W1
link |
15:33.000
然後W1再去指W2
link |
15:35.000
那再看說在這兩個Case
link |
15:37.000
哪一個Case
link |
15:38.000
它上面的這個Edge
link |
15:40.000
上面的這個Edge
link |
15:42.000
總合起來的分數比較高
link |
15:44.000
比如說下面這個Case
link |
15:46.000
總合起來的分數比較高
link |
15:48.000
那下面這個Case
link |
15:49.000
就是Dependency Parsing的結果
link |
15:52.000
那因為今天這個例子非常簡單
link |
15:54.000
只有兩個詞彙
link |
15:57.000
所以我們可以用重啟的方法
link |
15:59.000
找出所有符合規則的Parsing Tree
link |
16:01.000
看誰的分數最高
link |
16:04.000
那如果有非常多的Node呢
link |
16:06.000
那你就會用類似Maximum Spanning Tree的演算法
link |
16:10.000
來找出符合規則
link |
16:14.000
且分數最高的那個數
link |
16:17.000
就這樣
link |
16:19.000
那其實在Dependency Parsing裡面
link |
16:22.000
也可以做Transition Based Approach
link |
16:25.000
我們在講Constituency Parsing的時候
link |
16:27.000
也有講過這個Transition Based Approach
link |
16:31.000
那時候我們有講說
link |
16:33.000
有一個Stake 有一個Buffer
link |
16:35.000
然後有三個Action是你可以採取的
link |
16:38.000
那在Dependency Parsing裡面也是一樣
link |
16:40.000
你也有一個Stake
link |
16:42.000
你也有一個Buffer
link |
16:44.000
你一樣也有三個Action可以採取
link |
16:48.000
那你只要有這個Stake
link |
16:50.000
一開始是空的
link |
16:51.000
然後你有一個Buffer
link |
16:52.000
Buffer一開始是把整個句子直接填進去
link |
16:56.000
然後你只要採取一連串的Action
link |
16:58.000
你只要不斷的決定說
link |
17:00.000
有三個Action要採取哪一個
link |
17:02.000
採取一連串的Action
link |
17:03.000
最後就會得到一個Parsing Tree
link |
17:05.000
那因為這個部分跟Constituency Parsing差不多
link |
17:08.000
那這門課我們其實真正想要Focus
link |
17:12.000
Focus的是Deep Learning的部分
link |
17:14.000
所以我們就不會再重複跟你講說
link |
17:16.000
在Dependency Parsing裡面
link |
17:18.000
是怎麼做Transition Based Approach
link |
17:20.000
要知道說跟Constituency Parsing很像
link |
17:23.000
我們就是要看這個Stake的內容
link |
17:26.000
看這個Buffer的內容
link |
17:27.000
決定要採取哪一個Action
link |
17:30.000
就結束了
link |
17:33.000
所以在文獻上就有很多這樣子的做法
link |
17:37.000
那你看這個圖也大概可以知道它是怎麼做的
link |
17:39.000
用一個RNN
link |
17:41.000
用一個LSTM
link |
17:42.000
把Stake讀過去
link |
17:44.000
然後用一個LSTM把Buffer讀過去
link |
17:47.000
用一個LSTM把過去採行過的Action讀過去
link |
17:51.000
然後決定說
link |
17:52.000
現在要採取三個Action裡面的哪一個
link |
17:57.000
那下面這個圖呢
link |
17:58.000
意思也是差不多
link |
18:00.000
就有一個Stake 有一個Buffer
link |
18:01.000
然後有一個Network
link |
18:02.000
把Stake跟Buffer的資訊讀進去
link |
18:04.000
然後接下來決定要採取哪一個Action
link |
18:07.000
那你發現說這些Paper呢
link |
18:09.000
都是比較早期的Paper
link |
18:11.000
舉例來說像這樣子的想法
link |
18:13.000
其實在14年的時候就已經有了
link |
18:17.000
那這種Transition Based
link |
18:19.000
用Deep Learning做Transition Based的方法
link |
18:21.000
其中最知名的就是SyntaxNet
link |
18:26.000
那SyntaxNet呢
link |
18:27.000
是Google在ACL16發表的Paper
link |
18:30.000
為什麼SyntaxNet特別知名呢
link |
18:34.000
我覺得其實有一個最關鍵的原因就是
link |
18:37.000
它有一個好的Blog Post
link |
18:41.000
它又是Google做的
link |
18:42.000
又有一個好的Post
link |
18:43.000
那個Post裡面有一個好的動畫
link |
18:46.000
這個動畫呢
link |
18:47.000
長這個樣子
link |
18:48.000
我們來觀賞一下這個動畫
link |
18:51.000
你看有一個Stake 有一個Buffer
link |
18:54.000
然後不斷地採取不同的Action
link |
18:57.000
不斷地採取不同的Action
link |
18:59.000
每次要決定說要採取這三個Action裡面的哪一個
link |
19:04.000
然後你就產生了一個Parsing Tree了
link |
19:06.000
再看一次
link |
19:07.000
我們要建一個Dependency的Parsing Tree
link |
19:10.000
有Stake 有Buffer
link |
19:12.000
然後每次要決定說要採取這三個Action裡面的哪一個
link |
19:16.000
然後呢
link |
19:17.000
你最後就可以產生一個Parsing Tree了
link |
19:20.000
怎麼決定要採取哪一個Action呢
link |
19:22.000
就是用RNN LSTM
link |
19:25.000
把Stake跟Buffer讀過去
link |
19:26.000
然後決定採取哪一個Action
link |
19:28.000
然後就結束了
link |
19:30.000
那當然從今天的角度看來
link |
19:32.000
這個不就是用Deep Learning做Transition Based的Parsing嗎
link |
19:36.000
不過當年,要看看這個Blog Post的時間
link |
19:40.000
是16年啊
link |
19:42.000
16年的春天
link |
19:44.000
那是一個混亂的時代
link |
19:46.000
那個時候剛有AlphaGo
link |
19:48.000
所有人只要聽到一點點跟AI有關的東西
link |
19:52.000
都會大驚小怪
link |
19:54.000
當時很多人看到這個Post
link |
19:56.000
馬上嚇得魂不附體
link |
19:58.000
哇,這個是Google的
link |
20:00.000
是Syntax內
link |
20:02.000
它一定可以解決所有的問題
link |
20:04.000
這個,這邊有Action
link |
20:06.000
它一定是用Reinforcement Learning Learn的
link |
20:08.000
它就跟AlphaGo一樣
link |
20:10.000
所有NLP的問題都解決了
link |
20:12.000
才不是,這個就是一個Parsing
link |
20:14.000
為什麼要這麼大驚小怪呢
link |
20:16.000
它就是一個Parsing
link |
20:18.000
不過在2016年那個混亂的年代
link |
20:20.000
那個時候有各式各樣的裝神弄鬼
link |
20:24.000
那Syntax內
link |
20:26.000
今天甚至不是一個最好的Parser
link |
20:28.000
後面還有更多
link |
20:30.000
更好的Transition Based Parsing的方法
link |
20:33.000
但反正這個是
link |
20:35.000
它出現在2016年的上半年
link |
20:39.000
接在AlphaGo之後
link |
20:41.000
所以造成了一個巨大的轟動
link |
20:43.000
就是這麼回事
link |
20:45.000
link |
20:47.000
這個是Syntax內
link |
20:49.000
那還有很多其他的啦
link |
20:51.000
比如說有Stack Pointer啊
link |
20:53.000
等等
link |
20:55.000
那我們就不再細講
link |
20:57.000
有關Dependency Parsing的部分
link |
20:59.000
總之今天就是很快的帶過Dependency Parsing
link |
21:01.000
告訴大家說
link |
21:03.000
怎麼用Deep Learning的技術
link |
21:05.000
來做Dependency Parsing這件事情
link |
21:07.000
link |
21:09.000
下次Reference