BERT-MRC论文笔记
1、NER任務(wù)概述
ner(named entity recognization),命名實(shí)體識(shí)別旨在提取句子中預(yù)先定義的不同類型的實(shí)體,如person,location,organization等等。從概念上來講,ner任務(wù)有點(diǎn)類似于目標(biāo)檢測任務(wù),ner首先需要detect實(shí)體空間(entity span),然后分類實(shí)體類型(classification)。
ner方法分類:
ner方法上從解決的ner問題出發(fā),大致分為2種類型[ps:看的文章不多,總結(jié)或許有誤]:
-
Flat ner
-
Nested ner
Flat ner: 解決常見的標(biāo)準(zhǔn)的ner任務(wù),實(shí)體之間不存在嵌套關(guān)系,每個(gè)句子token只會(huì)屬于一種實(shí)體類型。對(duì)于這種類型的ner任務(wù),通常采用序列標(biāo)注模型,典型的如: BiLSTM+CRF、bert+biLSTM+CRF,在輸出層,每個(gè)token進(jìn)行softmax分類,因此每個(gè)token只會(huì)輸出一個(gè)標(biāo)簽,無法解決實(shí)體嵌套的問題。
Nested ner: 解決實(shí)體嵌套的ner任務(wù)。實(shí)體嵌套大體上可以分成2類:1)不同實(shí)體類型間嵌套; 2) 同種實(shí)體類型間嵌套。不同實(shí)體類型間嵌套,如例子"chinese"屬于contury類型,"chinese embassy in France"屬于facility類型,chinese這個(gè)token即存在不同類型實(shí)體間的嵌套;類似的,同類型間實(shí)體的嵌套,"chinese"屬于person類型, "chinese girls"屬于person類型,chinese這個(gè)token即存在同種類型之間的嵌套
2、BERT-MRC綜述
2.1 motivation
BERT-MRC為了解決嵌套的ner任務(wù),提出了一個(gè)基于MRC(機(jī)器閱讀理解)的QA框架來統(tǒng)一的解決flat ner以及nested ner任務(wù),并取得了SOTA的性能。
個(gè)人感覺這個(gè)文章很有開創(chuàng)性,后續(xù)一些信息抽取的文章"CASREL"等jointly方法都有這篇文章的影子,遂記錄一下。
2.2 method
??2.2.1 解決不同類型間的實(shí)體嵌套
????????前面提到,序列標(biāo)注模型不能解決嵌套問題。而這篇文章提出了基于問答的框架來解決嵌套實(shí)體識(shí)別的問題,對(duì)于每種類型的實(shí)體,都會(huì)構(gòu)造一個(gè)相關(guān)的query,也可以把它當(dāng)作一個(gè)"prompt"。例如,假如要抽取person類型的實(shí)體,我們可以構(gòu)造一個(gè)query: "which people did mention in this sentence?",于是ner任務(wù)就變成了基于給定的句子來回答query這個(gè)問題,答案就是對(duì)應(yīng)的實(shí)體文本,是連續(xù)的文本空間(注意是連續(xù)的)。
-
訓(xùn)練:
????????首先訓(xùn)練集會(huì)事先構(gòu)造成(Query, Context, Answer)三元組的形式,query是和實(shí)體類型相關(guān)的,編碼了實(shí)體類型信息,query到實(shí)體類型是一一對(duì)應(yīng)的。context是原始句子,answer即該類型下的實(shí)體。entity通過text span表示,即在一個(gè)句子通過實(shí)體的開始位置索引(start)和結(jié)束位置索引(end)來表示一個(gè)實(shí)體。
????????模型上使用Bert模型, query和context concat后輸入bert中獲取每個(gè)token的向量表示,輸入形式: CLS "query" SEP context ,每個(gè)token后面接2個(gè)二分類任務(wù),一個(gè)用來分類是否是start索引,一個(gè)是用來分類是否是end索引。這里本質(zhì)上是N個(gè)2分類任務(wù), N是序列長度,而不是2個(gè)N分類任務(wù)。前者使用sigmoid loss,后者使用softmax loss,前者可以在一個(gè)句子中輸出多個(gè)start索引,而后者只能輸出一個(gè)start索引[即一個(gè)實(shí)體]。一個(gè)句子中,同種類型的實(shí)體可能不止一個(gè),因此本文采用n個(gè)2分類任務(wù)。
-
解碼:
????????這里還存在一個(gè)特殊的解碼問題,基于MRC的QA框架只能解決不同類型間的實(shí)體嵌套問題,對(duì)于不同類型的實(shí)體,構(gòu)造一個(gè)特殊的query,獨(dú)立地去獲取該類型下的實(shí)體。而對(duì)于同種類型的嵌套問題,一個(gè)句子中有多個(gè)start index和對(duì)應(yīng)的多個(gè)end index,如何解碼?如果不存在同類型實(shí)體嵌套問題,我們可以直接使用基于啟發(fā)式的就近匹配原則,start index尋找最近的end index進(jìn)行匹配即可。對(duì)于同類型嵌套,如句子"chinese girls", 有2個(gè)實(shí)體, "chinese" ,和"chinese girls",start index 只有1個(gè)1,而end index有2個(gè)1,基于上述啟發(fā)式匹配就會(huì)漏識(shí)別。因此為了cover這個(gè)問題,本文提出了match網(wǎng)絡(luò),將start向量和end向量concat后,進(jìn)行一個(gè)二分類任務(wù),判斷start和end是否是match的
-
推理:
? ????????每種類型構(gòu)造的query拼接原始句子,輸入到網(wǎng)絡(luò)中,獲取每種類型下得到的entity span。
??2.2.2 一些問題點(diǎn)討論
?????????首先簡單說一下效果,在flat ner以及nested ner上任務(wù)上都取得了SOTA
????2.2.2.1 如何構(gòu)造query
????????這一點(diǎn)在論文中有反復(fù)的提到,構(gòu)造的query很重要,且對(duì)最終的性能影響很大。其實(shí)也不難理解,套用QA的框架也能知道,Question是核心要素之一,沒有好的問題怎么能得到你想要的答案呢?原文做了一些詳細(xì)的實(shí)驗(yàn)對(duì)比,感興趣的可以仔細(xì)閱讀原文對(duì)應(yīng)的章節(jié)。
????????其實(shí)在沒有看到這篇文章的時(shí)候,心中有一個(gè)想法,那就是不去構(gòu)造query,而是使用實(shí)體的類型,比如說"OGR","PER"等作為一個(gè)special token放在句子的開頭,這個(gè)特殊的token編碼了具體的實(shí)體類型信息,引導(dǎo)模型輸出對(duì)應(yīng)類型的entity。這樣也能完成統(tǒng)一建模,但是這種想法其實(shí)也剛好在構(gòu)造query這一節(jié)被作者實(shí)驗(yàn)過了。但是按照我的理解還是有一點(diǎn)點(diǎn)不同,其中keyword方式就是使用類型的關(guān)鍵詞,比如"person","organization"等,本質(zhì)上其實(shí)還是想query具有一定的語義信息[去套用qa的框架],但是想person, organization這種類型在句子中可能很常見,導(dǎo)致embedding不能唯一去編碼任務(wù)信息,可能會(huì)影響性能。
-
TODO: 后續(xù)有ner相關(guān)的任務(wù),可以嘗試一下這個(gè)想法,感興趣的讀者也可以試試吧~
????2.2.2.2 MRC框架的好處
????????MRC框架的好處在論文中也被反復(fù)提及,主要有以下好處: 1) 能夠解決嵌套的實(shí)體識(shí)別問題;2)通過構(gòu)造query的方式,其實(shí)編碼了需要提取的實(shí)體的類型信息,這是以往序列標(biāo)注模型做不到的;3)具有很好的zero-shot能力(很nice~),由于query通過自然語言的方式編碼實(shí)體類型信息,即使訓(xùn)練集中沒有出現(xiàn)的實(shí)體類型,通過理解query的語義,能夠得到正確的答案(entity)。個(gè)人覺得prompt方式是解決zero-shot的一種很好的方式,prompt(也即query的構(gòu)造)就很重要。
????????回到前面那個(gè)點(diǎn),如果使用實(shí)體的類型作為special token這種范式,那模型就完全不具有zero-shot能力了
總結(jié)
以上是生活随笔為你收集整理的BERT-MRC论文笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巴身小(leng)一族作为夜郎后裔的历史
- 下一篇: 树莓派项目实践 [1] —— 编程控制继