1. 程式人生 > 其它 >筆記:Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction

筆記:Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction

Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction

作者:Yu et al., CONLING 2020.

目錄

  • 簡介
  • 方法
  • 實驗
  • 總結

1 簡介

本文仍然是做實體關係聯合抽取,不同的是在少樣本的條件下。基本方法類似一些FewRel中的方法,利用prototype網路,原來是求關係類別的原型向量,現在是既要求關係也要實體的prototype,進行訓練學習。

本文算是第一篇在少樣本條件下嘗試實體關係聯合抽取的工作,也是用的pipeline方法做聯合抽取。之前的少樣本學習基本上都是做關係分類任務即假設每個語句中只有一對實體,判斷其對應的關係型別。

2 方法

如下圖2為MPE模型大致的流程結構。

本文雖然是實體關係聯合抽取,按理應該是multiple entity pairs的,但本身聯合抽取中多實體多關係關係重疊等就很難,在加上少樣本條件就更難了,所以為了簡單起見,本文就假設每個句子只有一對實體,就是關係分類的條件一致。

結合圖2,整個框架主要分為三個部分:

  • Instance Encoder 利用預訓練模型如BERT,對句子編碼
  • Hybrid Prototype Learning 學習實體原型和關係原型
  • Prototype-Aware Regularization 為了增強原型的學習

2.1 Instance Encoder

常規操作,利用BERT對句子編碼,同時為了滿足BERT對輸入的要求,在序列前後插入[CLS]、[SEP]。根據BERT的工作,[CLS]可以代表整個句子的資訊。同時文中還提到一點,就是經過BERT後的輸出的長度可能和原語句長度不同(正常應該相同的),由於要做分詞,例如tokenizer工具分詞,可能將詞分成多個子詞。

2.2 Hybrid Prototypical Learning

Entity Prototype Learning. 在few-shot訓練階段,首先要利用train-support set中的instances構建prototype,這裡就是構建entity prototype,那麼想要構建entity原型,就要先確定實體span,本文根據標註集S = {B-Head, I-Head, B-Tail, I-Tail, O, X} ,利用CRF-based 序列標註模型進行實體識別,其中標註類似BIOES,只不過這裡三元組嘛有head和tail實體兩個,B-Head,I-Head代表head實體,B-Tail,I-Tail代表tail實體,O代表其他標籤不屬於head和tail實體,X說是X is any remaining fragments of tokens split by the tokenizer,我感覺就是之前分詞後的子詞但實體構成不需要這個子詞?

對於實體原型的計算,如公式5、6所示,類似(Gao et al., 2019\(^{[2]}\)),不多贅述了感興趣可以看看這篇。

其中,\(head_i\)為K-way的第i類關係的K-shot(\(S_k\))中的instance,\(tail_i\)同理,\(Q\)為query set中的一個instance編碼後的表示vector。

Relation Prototype Learning. 關係原型文中處理的很簡單,就是利用句子表示即前文提到的[CLS]按照公式5、6同樣的處理得到初步的關係表示\(sent_{proto}\)和知識限制的\(kg_{proto}\)拼接而成,如公式8所示:

對於\(kg_{proto}\)來說,則是根據TranE思想:\(h+r \approx t\)(就是類似之前看過一個例子,說是一個embedding向量加上另一個embedding向量在向量空間中會得到另一個embedding,是word2vec還是知識圖譜三元組的例子來著?忘了,就是什麼皇后+什麼關係=國王,什麼的這個例子忘了),利用\(head_{proto},tail_{proto}\)相減得到\(kg_{proto}\)

2.3 Prototype-Aware Regularization

希望support set中每個類別的句子表示和其對應的原型能夠更近,不同類別的句子表示的原型更遠,如公式9挺清晰的。

那麼,總的目標函式/優化目標為:

3 實驗

基於FewRel(Han et al., 2018)資料集,重新構造使其符合少樣本關係三元組抽取任務。資料集中沒有關係重疊的情況。

與各監督方法BERT微調和few-shot方法的對比實驗,如表2。

可以看到雖然關係抽取的結果還行,但關係的抽取結果好沒用啊,你是實體關係聯合抽取,最終的評估是看三元組的正確率的即不僅關係要正確,與此關係對應的三元組內的兩個head和tail實體的span及型別(嚴格點的話型別也有要求)都要正確才行,而且關係效果好,也和實體抽取的效果沒太大關聯吧,pipeline方法聯合抽取,訓練時估計用的gold entity span作為輸入的單獨關係抽取好也可理解,但要用預測的實體即實體抽取的結果作為下一步關係抽取的輸入,那就不一定了。

4 總結&疑問

  • 首先最關鍵的一點實體效果不行,我們知道聯合抽取任務,實體的資訊包括span和型別很重要,這一點對於pipeline方法尤為重要。至於為什麼?那肯定就是實體抽取不夠好,具體來說就是實體原型沒表示的很好,如公式5中,他的實體原型是以關係類別為基準,一個關係類別對應一種head和tail實體原型,以head實體為例,這個原型是把K-shot中的每個句子中的head實體加權attention結合到一塊得到一個統一的\(head_{proto}\),最重要的實體型別沒有考慮,也不管每類關係N-way的K-shot中的每個句子的head實體的型別是什麼,\(tail_{proto}\)同理。
  • 關係原型雖然簡單,但我覺得也挺合理的把,有沒有更好的方法。
  • 公式6中(以head為例)計算得分時,為什麼用的時\(head_{proto}\)?沒理解,按照文中的邏輯以及(Gao et al., 2019\(^{[2]}\))的想法,我感覺應該是\(head_i,tail_j\) 啊?
  • 感覺好像可以改進的地方挺多的,但好像也很難本身少樣本和實體關係抽取就感覺不容易,在這個方向做至少感覺得效果要好很多吧,這篇效果不好但畢竟時第一次在少樣本條件下實體關係聯合抽取的第一次嘗試,“你沒資格啊!你沒資格。”
  • 參考[3]理解的更深一些可以看看,回顧的話paper上自己的筆記註釋也看看。

參考

【1】Haiyang Yu1,2∗, Ningyu Zhang1,2∗†, Shumin Deng1,2, Hongbin Ye1,2.Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction.COLING 2020.

【2】Tianyu Gao,∗ Xu Han,∗ Zhiyuan Liu,† Maosong Sun.Hybrid Attention-Based Prototypical Networks for Noisy Few-Shot Relation Classification.AAAI 2019.

【3】論文筆記 – Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction.https://ivenwang.com/2020/12/04/mpe/.