UIE 論文閱讀

1. UIE 介紹

信息抽燃詈簟(IE)是一個(gè)從文本到結(jié)構(gòu)的轉(zhuǎn)換過程。常見的實(shí)體蔗牡、關(guān)系颖系、事件分別采取Span、Triplet辩越、Record形式的異構(gòu)結(jié)構(gòu)嘁扼。具體表現(xiàn)為生成式統(tǒng)一建模,提出了面向信息抽取的統(tǒng)一文本到結(jié)構(gòu)生成框架 UIE黔攒。

上面包含信息抽取的四個(gè)任務(wù):實(shí)體識別趁啸、關(guān)系抽取强缘、事件抽取、觀點(diǎn)抽取不傅。

信息抽取任務(wù)可以表述為“文本到結(jié)構(gòu)”的問題欺旧,不同的 IE 任務(wù)對應(yīng)不同的結(jié)構(gòu)。UIE旨在通過單一框架統(tǒng)一建模不同IE任務(wù)的文本到結(jié)構(gòu)的轉(zhuǎn)換蛤签,也就是:不同的結(jié)構(gòu)轉(zhuǎn)換共享模型中 相同的底層操作不同的轉(zhuǎn)換能力辞友。

主要有以下兩個(gè)挑戰(zhàn):

1)IE任務(wù)的多樣性,需要提取許多不同的目標(biāo)結(jié)構(gòu)震肮,如實(shí)體成榜、關(guān)系、事件等羹奉;
2)IE任務(wù)是通常是使用不同模式定義的特定需求(不同schema)笔横,需要自適應(yīng)地控制提取過程;

因此沦偎,針對上述挑戰(zhàn)疫向,需要:

1)設(shè)計(jì)結(jié)構(gòu)化抽取語言SEL,Structured Extraction Language)來統(tǒng)一編碼異構(gòu)提取結(jié)構(gòu)豪嚎,即編碼實(shí)體搔驼、關(guān)系、事件統(tǒng)一表示侈询。
2)構(gòu)建結(jié)構(gòu)化模式提示器SSI舌涨,Structural Schema Instructor),一個(gè)基于schema的prompt機(jī)制扔字,用于控制不同的生成需求囊嘉。

上圖展示了UIE的整體框架,整體架構(gòu)就是:SSI + Text -> SEL革为。一句話簡單概括就是:SSI就是輸入特定抽取任務(wù)的schema扭粱,SEL就是把不同任務(wù)的抽取結(jié)果統(tǒng)一用1種語言表示。

2. SEL:結(jié)構(gòu)化抽取語言

SEL:本質(zhì)上就是對輸出進(jìn)行統(tǒng)一化震檩。不同的 IE 任務(wù)可以分解為 2 個(gè)原子操作:

  • Spotting:找出Spot Name對應(yīng)的Info Span琢蛤,如某個(gè)實(shí)體或Trigger觸發(fā)詞;
  • Associating:找出Asso Name對應(yīng)的Info Span恳蹲,鏈接Info Span片段間的關(guān)系:如兩個(gè)實(shí)體pair的關(guān)系虐块、論元和觸發(fā)詞間的關(guān)系;

如上圖所示:
1)Spot Name:Spotting操作的Info Span的類別信息嘉蕾,如實(shí)體類型贺奠;
2)Asso Name: Associating操作的Info Span的類別信息,如關(guān)系類型错忱、關(guān)系類型儡率;
3)Info Span:Spotting或Associating操作相關(guān)的文本Span挂据;

  • 藍(lán)色部分代表關(guān)系任務(wù):person為實(shí)體類型Spot Name,work for為關(guān)系類型Asso Name儿普;
  • 紅色部分代表事件任務(wù):start-position為事件類型Spot Name崎逃,employee為論元類型Asso Name;
  • 黑色部分代表實(shí)體任務(wù):organization和time為實(shí)體類型Spot Name眉孩;

3. SSI:結(jié)構(gòu)化模式提示器

SSI 的本質(zhì)一個(gè)基于schema的prompt機(jī)制个绍,用于控制不同的生成需求:在Text前拼接上相應(yīng)的Schema Prompt,輸出相應(yīng)的SEL結(jié)構(gòu)語言浪汪。

不同任務(wù)的的形式是:

1)實(shí)體抽劝褪痢:[spot] 實(shí)體類別 [text]
2)關(guān)系抽取:[spot] 實(shí)體類別 [asso] 關(guān)系類別 [text]
3)事件抽人涝狻:[spot] 事件類別 [asso] 論元類別 [text]
4)觀點(diǎn)抽裙慊帧:[spot] 評價(jià)維度 [asso] 觀點(diǎn)類別 [text]

不同數(shù)據(jù)集的詳細(xì)形式見論文。

形式化表示如下:用 s 表示 SSI呀潭,用x表示需要輸入的原始句子钉迷,UIE 模型由 transformer 的 Encoder 和 Decoder 組成。

輸出 y 就是采用 SEL 語法描述的結(jié)構(gòu)化數(shù)據(jù)钠署,其中

UIE 模型采用 Encoder 與 Decoder 結(jié)構(gòu)進(jìn)行生成式任務(wù)糠聪。

4. 預(yù)訓(xùn)練與微調(diào)

作者采用的模型是T5-v1.1-base和T5-v1.1-large作為UIE-base和UIE-large,模型的參數(shù)初始化直接使用了T5-v1.1的參數(shù)踏幻,也就是說直接基于其進(jìn)行了二次預(yù)訓(xùn)練枷颊。

4.1 預(yù)訓(xùn)練數(shù)據(jù)

主要由Wikipedia戳杀、Wikidata和ConceptNet三部分組成该面,作者通過這三部分?jǐn)?shù)據(jù)構(gòu)造了如下三種形式的預(yù)訓(xùn)練數(shù)據(jù):
1)D_{pair}:數(shù)據(jù)表示為(s,x,y),其中 s 是加在輸入句子前面的prompt信卡,x是輸入的原始句子隔缀,y是需要生成的目標(biāo)句子。
2)D_{record}:只有基于 SEL 語法的結(jié)構(gòu)性 record傍菇,數(shù)據(jù)表示為(None, None,y)猾瘸。
3)D_{text}:只有無結(jié)構(gòu)的原始文本數(shù)據(jù),進(jìn)行 mask 語言模型訓(xùn)練丢习,數(shù)據(jù)表示為(None,x^{'},x^{''})牵触。

4.2 預(yù)訓(xùn)練任務(wù)

針對上述三種類型的數(shù)據(jù),分別設(shè)計(jì)了三種預(yù)訓(xùn)練任務(wù):
1)針對D_{pair}咐低,輸入數(shù)據(jù)為 SSI + 原始文本x揽思,使其生成結(jié)構(gòu)化的數(shù)據(jù) record,不同的是作者在 record 中不僅加入了原本存在的正樣本见擦,也加入了一些負(fù)樣本作為噪音钉汗,比如(Spot Name: [NULL])羹令。
2)針對D_{record},輸入數(shù)據(jù)為 record损痰,輸入前面的部分福侈,使其生成剩余部分,并且只訓(xùn)練 UIE 的 decoder 部分卢未,使其學(xué)會 SEL 語法肪凛。
3)針對D_{text},做無監(jiān)督的 mask 語言模型訓(xùn)練辽社,在原始句子中 MASK 掉15%的 tokens显拜,然后生成 MASK 的部分。

最終 Loss 為上述三個(gè) Loss 相加爹袁。作者并不是分開做這三個(gè)預(yù)訓(xùn)練任務(wù)的远荠,而是將其統(tǒng)一化,全部表示為三元組(s,x,y)失息,在每個(gè) batch 中隨機(jī)抽取每個(gè)任務(wù)的數(shù)據(jù)去訓(xùn)練譬淳。

4.3 微調(diào)

微調(diào)與預(yù)訓(xùn)練任務(wù)的D_{pair}類似,數(shù)據(jù)形式是(s,x,y)盹兢,微調(diào)部分依然加入了負(fù)樣本邻梆。如下圖所示:表格上部分為輸入,下部分為第一行為正樣本的輸出绎秒,第二行為加入了負(fù)樣本浦妄。隨機(jī)插入一些原標(biāo)簽中沒有的信息,即(Spot Name: [NULL])或(Asso Name: [NULL])见芹,圖中輸入句子中并沒有 facility 的實(shí)體剂娄,而標(biāo)簽中插入了(facility: [NULL])。

5. 實(shí)驗(yàn)

5.1 全監(jiān)督實(shí)驗(yàn)

最右邊的 SEL 列是指基于T5-v1.1-large進(jìn)行微調(diào)得到的結(jié)果玄呛,UIE是指基于UIE-large進(jìn)行微調(diào)的結(jié)果阅懦,可以看到幾乎在全部數(shù)據(jù)集上都取得了SOTA的結(jié)果,但是通過對比SEL和UIE發(fā)現(xiàn)預(yù)訓(xùn)練部分對結(jié)果的提升并不大徘铝,通過這個(gè)可以看出作者設(shè)計(jì)的SEL語法和SSI還是很強(qiáng)大的耳胎,另一方面也說明T5本身的生成能力就很強(qiáng)大。

5.2 少樣本實(shí)驗(yàn)

結(jié)論:
1)大規(guī)模異構(gòu)監(jiān)督預(yù)訓(xùn)練可以學(xué)習(xí)通用的信息抽取能力惕它,使模型具有更好小樣本學(xué)習(xí)能力怕午。
2)當(dāng)去掉SSI結(jié)構(gòu)化模式提示器后,發(fā)現(xiàn)指標(biāo)下降淹魄,因此:SSI 具有更好的定向遷移的能力郁惜。

5.3 消融實(shí)驗(yàn)

在小樣本情景下,通過消融實(shí)驗(yàn)驗(yàn)證了插入負(fù)樣本的有效性揭北,結(jié)果如下圖所示扳炬,這種插入負(fù)樣本的方式在小樣本情況下影響顯著吏颖。

6. paddle 和 pytorch 代碼解析

6.1 paddlenlp 解析

demo 代碼:

from pprint import pprint
from paddlenlp import Taskflow
schema = [{"歌曲名稱":["歌手", "所屬專輯"]}, "人物"]
ie = Taskflow('information_extraction', schema=schema)
res = ie("告白氣球是周杰倫在專輯周杰倫的床邊故事里面的歌曲")
pprint(res)

輸出結(jié)果如下:

[{'人物': [{'end': 8,
          'probability': 0.9920330175461345,
          'start': 5,
          'text': '周杰倫'},
         {'end': 14,
          'probability': 0.9563452086659794,
          'start': 11,
          'text': '周杰倫'}],
  '歌曲名稱': [{'end': 4,
            'probability': 0.9625632485885518,
            'relations': {'所屬專輯': [{'end': 19,
                                    'probability': 0.8491942125644769,
                                    'start': 11,
                                    'text': '周杰倫的床邊故事'}],
                          '歌手': [{'end': 8,
                                  'probability': 0.9986735730139671,
                                  'start': 5,
                                  'text': '周杰倫'}]},
            'start': 0,
            'text': '告白氣球'}]}]

經(jīng)過 UIETask 類,繼承自 Task 類恨樟,查看 Task 類的 call 函數(shù):

   def __call__(self, *args):
        inputs = self._preprocess(*args)
        outputs = self._run_model(inputs)
        results = self._postprocess(outputs)
        return results

查看 _run_model 方法在 UIETask 里面具體實(shí)現(xiàn)半醉。

    def _run_model(self, inputs):
        raw_inputs = inputs['text']
        results = self._multi_stage_predict(raw_inputs)
        inputs['result'] = results
        return inputs

查看 _multi_stage_predict 函數(shù):遍歷每個(gè) schema,然后通過上一步的結(jié)果去進(jìn)行預(yù)測劝术。

    while len(schema_list) > 0:
          node = schema_list.pop(0)
          ...
          ...
          if len(examples) == 0:
              result_list = []
          else:
              result_list = self._single_stage_predict(examples)

結(jié)果如下:

[{'text': '告白氣球是周杰倫在專輯周杰倫的床邊故事里面的歌曲', 'prompt': '歌曲名稱'}]
[{'text': '告白氣球是周杰倫在專輯周杰倫的床邊故事里面的歌曲', 'prompt': '人物'}]
[{'text': '告白氣球是周杰倫在專輯周杰倫的床邊故事里面的歌曲', 'prompt': '告白氣球的歌手'}]
[{'text': '告白氣球是周杰倫在專輯周杰倫的床邊故事里面的歌曲', 'prompt': '告白氣球的所屬專輯'}]

從這些段代碼可以看到缩多,不管是訓(xùn)練還是推理,模型都未采用生成式养晋。而是將prompt+text直接送入Ernie編碼衬吆,然后編碼送入指針網(wǎng)絡(luò),也就是一個(gè)全連接層預(yù)測實(shí)體的頭绳泉,另一個(gè)預(yù)測實(shí)體的尾逊抡。

原始論文的實(shí)現(xiàn)方式,是通過生成式零酪,一次性可以生成出SEL結(jié)構(gòu)冒嫡。而百度paddlenlp的做法,則是將SSI進(jìn)行拆分四苇,進(jìn)行多步預(yù)測孝凌,需要先找出[SPOT]對應(yīng)[Info Span],然后[Info Span]與[ASSO]拼接月腋,生成新的prompt蟀架,然后再送入模型,找出[ASSO]榆骚。

參考文獻(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穆碎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子职恳,更是在濱河造成了極大的恐慌,老刑警劉巖方面,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件放钦,死亡現(xiàn)場離奇詭異,居然都是意外死亡恭金,警方通過查閱死者的電腦和手機(jī)操禀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來横腿,“玉大人颓屑,你說我怎么就攤上這事斤寂。” “怎么了揪惦?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵遍搞,是天一觀的道長。 經(jīng)常有香客問我器腋,道長溪猿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任纫塌,我火速辦了婚禮诊县,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘措左。我一直安慰自己依痊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布怎披。 她就那樣靜靜地躺著抗悍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钳枕。 梳的紋絲不亂的頭發(fā)上缴渊,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音鱼炒,去河邊找鬼衔沼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昔瞧,可吹牛的內(nèi)容都是我干的指蚁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼自晰,長吁一口氣:“原來是場噩夢啊……” “哼凝化!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酬荞,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤搓劫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后混巧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枪向,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年咧党,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秘蛔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖深员,靈堂內(nèi)的尸體忽然破棺而出负蠕,到底是詐尸還是另有隱情,我是刑警寧澤倦畅,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布遮糖,位于F島的核電站,受9級特大地震影響滔迈,放射性物質(zhì)發(fā)生泄漏止吁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一燎悍、第九天 我趴在偏房一處隱蔽的房頂上張望敬惦。 院中可真熱鬧,春花似錦谈山、人聲如沸俄删。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畴椰。三九已至,卻和暖如春鸽粉,著一層夾襖步出監(jiān)牢的瞬間斜脂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工触机, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帚戳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓儡首,卻偏偏與公主長得像片任,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蔬胯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容