Chapter7-7_Deep Learning for Coreference Resolution
文章目錄
- 1 什么是coreference resolution
- 2 框架
- 2.1 Mention Detection
- 2.2 Mention Pair Detection
- 2.3 End-to-End
- 2.4 Span Representation
- 2.5 Pratical Implementation
- 2.6 Result
- 3 應(yīng)用
本文為李弘毅老師【Deep Learning for Coreference Resolution】的課程筆記,課程視頻youtube地址,點(diǎn)這里👈(需翻墻)。
下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權(quán),必定刪除。
文章索引:
上篇 - 7-6 Text Style Transfer
下篇 - 7-8 Deep Learning for Constituency Parsing
總目錄
1 什么是coreference resolution
coreference resolution翻譯過來就是指代消解,它的目的是搞清楚一句話中的代詞指的是什么。比如下圖中有兩句話,第一句是"The trophy would not fit in the brown suitcase because it was too big.",這里的it顯然值得是"trophy";第二句是"The trophy would not fit in the brown suitcase because it was too small.",這里的it顯然指的是"suitcase"。我們?nèi)撕苋菀讌^(qū)分出來,但是要機(jī)器去找"it"指代的是什么就比較困難了。
剛說的是比較通俗的說法,更準(zhǔn)確地說coreference resolution是這樣的。在一個(gè)句子中會(huì)有很多的mention,mention就是句子中的一些名詞,比如"鍾佳播瞪著樂咖舉起他的拳頭說"這句話中,“鍾佳播”,“樂咖”,“他”,"他的拳頭"都算是mention。這些mention會(huì)指向一個(gè)實(shí)際存在的事物,如果兩個(gè)或兩個(gè)以上的mention指向了同一個(gè)事物,那么這就叫做corefer。第一個(gè)出現(xiàn)的corefer叫做antecedent,之后出現(xiàn)的叫做anaphor。如果某個(gè)事物只有一個(gè)mention指向它,那么就叫做singleton。
總結(jié)一下,指代消解需要模型做兩件事情,第一件事情就是把所有的mention都找出來,singletons往往會(huì)被忽略掉;第二件事情就是對所有的mention進(jìn)行分組,把指代同一個(gè)事物的mention分到一個(gè)組里。
2 框架
2.1 Mention Detection
Mention Detection要做的就是把所有的mention都給找出來,它就是一個(gè)Binary Classifier。這個(gè)Binary Classifier吃一個(gè)span,然后告訴我們這個(gè)是不是一個(gè)mention。span就是說整個(gè)句子中的一段。如果句子的長度為N,那么這個(gè)步驟會(huì)被重復(fù)N(N-1)/2次,也就是概率論中的CN2C_N^2CN2?,從N個(gè)tokens當(dāng)中,任選兩個(gè)作為起始token和結(jié)尾token。
為什么要這么做?比如“他的拳頭”這個(gè)sequence當(dāng)中,“他”是一個(gè)mention,“他的拳頭”整句話也是一個(gè)mention,為的就是把這兩者都找出來。
這里起始我還是有點(diǎn)小疑惑,一是sequence是不是按照標(biāo)點(diǎn)符號(hào)切過的,因?yàn)橛行?biāo)點(diǎn)明顯不可能在mention中出現(xiàn),除了老外的名字中的那個(gè)"·";二是這個(gè)binary classifier只吃一個(gè)span嗎?那比如一個(gè)人的名字叫做"張小明",那么“張小明”會(huì)被當(dāng)成mention,"小明"也會(huì)被當(dāng)成mention嗎?不過這種其實(shí)也能通過后處理解決掉。
2.2 Mention Pair Detection
Mention Pair Detection也是一個(gè)Binary classifier。不過它吃兩個(gè)mention,然后吐出這兩個(gè)mention是不是指向同一個(gè)東西,也就是上面所說的cluster的過程。當(dāng)然這里的mention肯定不知是mention對應(yīng)的tokens這么簡單,應(yīng)該是兩個(gè)特征。
加入我們根據(jù)上一步得到了K個(gè)mentions,那么這里會(huì)執(zhí)行K(K-1)/2次。
2.3 End-to-End
像上述這樣分成兩步的過程并不是end-to-end的,我們其實(shí)可以把這兩步合成一步。就是train一個(gè)Binary Classifier,它吃兩個(gè)span,然后在這兩個(gè)span都是mentions且指向同一個(gè)entity的時(shí)候,輸出yes。
如果是這樣的一個(gè)模型的話,要運(yùn)行幾次呢?假設(shè)我們有N個(gè)tokens,那么會(huì)有N(N-1)/2個(gè)span,記K=N(N-1)/2的話,就會(huì)有跑K(K-1)/2次,也就是復(fù)雜度為N4N^4N4。
相信說到這里,大家也都是有點(diǎn)疑惑的。那么,這個(gè)Binary classifier究竟長什么呢?它就下長下圖這樣子。先會(huì)把整個(gè)句子經(jīng)過一個(gè)Pre-trained Model,可以是ELMo或者Bert之類的。然后每個(gè)token會(huì)有一個(gè)對應(yīng)的輸出,這里的每個(gè)輸出都是包含了全局的信息的。然后我們就選擇兩個(gè)span,分別去抽取特征,這兩個(gè)特征又會(huì)分別經(jīng)過一個(gè)輸出Mention分?jǐn)?shù)的網(wǎng)絡(luò),這兩個(gè)特征又會(huì)一起進(jìn)入一個(gè)輸出Mention Pair分?jǐn)?shù)的網(wǎng)絡(luò),然后這三個(gè)分?jǐn)?shù)整合之后,得到最終的分?jǐn)?shù)。看了這個(gè)圖,其實(shí)大多數(shù)的疑惑都消失了。
2.4 Span Representation
Span Feature Extraction的做法是如何的呢?一種常見的做法是先把頭尾兩個(gè)特征拿出來(下圖中x1x_1x1?和x4x_4x4?),然后對整個(gè)span算attention之后,取weighted sum。最后把這三個(gè)特征concat起來就是最終的輸出了。需要有weighted sum的步驟,是因?yàn)檫@樣可以讓模型focus在span中講述entity本質(zhì)的東西上,比如“湖旁小屋”,這里的本質(zhì)其實(shí)是“小屋”。
2.5 Pratical Implementation
剛才我們說了,假設(shè)我們有N個(gè)tokens,那么會(huì)有N(N-1)/2個(gè)span,記K=N(N-1)/2的話,就會(huì)有跑K(K-1)/2次,也就是復(fù)雜度為N4N^4N4。在實(shí)際操作的時(shí)候,有兩招可以減少運(yùn)算量。一招是,在inference的時(shí)候,先把mentin detection的部分單獨(dú)拿出來過一遍,可以大大減小K;另一招是限制一個(gè)span的最大長度,這個(gè)很容易理解。
2.6 Result
那么,這么做的效果如何呢?下面有一些模型輸出結(jié)果的句子,其中小括號(hào)括起來的部分,是模型認(rèn)為是coreference的部分,用顏色highlight的部分,則是attention權(quán)重比較大的部分。下面的有正確的例子,也有錯(cuò)誤的例子,總體來說,還是挺棒的~
3 應(yīng)用
做coreference resolution主要是為了一下下游的任務(wù)。比如chatbot。在chatbot當(dāng)中,往往需要機(jī)器去看歷史內(nèi)容,指導(dǎo)此刻人說的話,指的是剛才說過的什么東西。在做chatbot的時(shí)候,也有用seq2seq的方法去做的,比如有如下對話:
人:“梅西多高?”
機(jī)器:“官方說法他是5英尺7英寸。”
人:“他和C羅誰是最好的球員?”
這個(gè)時(shí)候,最后一句的他,我們希望可以替換成"梅西",這樣機(jī)器回答起來會(huì)容易很多。這時(shí),有人的做法就是,輸入上面這三個(gè)句子,讓機(jī)器輸出“梅西和C羅誰是最好的球員?”。
總結(jié)
以上是生活随笔為你收集整理的Chapter7-7_Deep Learning for Coreference Resolution的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 2044. 统计按位或
- 下一篇: LeetCode 1650. 二叉树的最