【競賽】天池-新冠疫情相似句對判定大賽top6方案及源碼

  • 2020 年 4 月 19 日
  • AI

Hi,大家吼呀!這裡是糖葫蘆喵喵~!

AI light the world!這次給大家帶來的是我們團隊在天池-新冠疫情相似句對判定大賽中top6(並列)的程式碼開源。文末有獲取開源程式碼地址的方法。

比賽傳送門:

「公益AI之星」挑戰賽-新冠疫情相似句對判定大賽-天池大賽-阿里雲天池tianchi.aliyun.com圖標

這次是常規的NLP賽題-語義相似度匹配。在之前的也有很多同類型的比賽,大家有興趣的都可以了解了解。鏈接:

拍拍貸AI開發平台-第四屆魔鏡杯大賽ai.ppdai.com

CIKM AnalytiCup 2018-天池大賽-阿里雲天池tianchi.aliyun.com圖標

Part 1 任務描述

比賽主打疫情相關的呼吸領域的真實數據積累,數據粒度更加細化,判定難度相比多科室文本相似度匹配更高,同時問答數據也更具時效性。本著寧缺毋濫的原則,問題的場地限制在20字以內,形成相對規範的句對。要求選手通過自然語義演算法和醫學知識識別相似問答和無關的問題。

數據示例:

編號: 0 類別:肺炎 標籤:1

問句1:肺部發炎是什麼原因引起的?

問句2:肺部發炎是什麼引起的?

編號: 1 類別:肺炎 標籤:0

問句1:肺部發炎是什麼原因引起的?

問句2:肺部炎症有什麼癥狀?

評估指標:準確率

Part 2 語義匹配演算法簡要介紹

文本匹配是自然語言處理中一個重要的基礎問題,自然語言處理中的許多任務都可以轉為文本匹配任務。如網頁搜索可抽象為網頁同用戶搜索 Query 的一個相關性匹配問題,自動問答可抽象為候選答案與問題的滿足度匹配問題,文本去重可以抽象為文本與文本的相似度匹配問題。

這次的比賽是一個語義相似度計算的任務,不能只停留在字面匹配層面,更需要語義層面的匹配,不僅是相似度匹配,還包括更廣泛意義上的匹配。

隨著深度學習技術的逐漸興起,基於神經網路訓練出的 Word Embedding 來進行文本相似度計算的實踐越來越多。Word Embedding 的訓練方式更加簡潔,而且所得的詞語向量表示的語義可計算性進一步加強。

從最開始的DSSM, Match-LSRM, MatchSRNN到後面的ESIM,BIMPM,DIIN再到現在的bert。由於bert的顯示卡要求相對高一些,所以我們先簡單介紹一下簡單的語義匹配演算法,例如上面提到的很多基於Siamese 網路的經典演算法ESIM以及後續ESIM的變體,提取文本整體語義再進行匹配。如下就是ESIM(arxiv.org/pdf/1609.0603)的網路結構。

  • Input Encoding:輸入兩句話分別接 embeding 加一個雙向LSTM
  • Local Inference Modeling:這裡的目的是把第一層拿到的特徵做差異性計算和資訊交互。作者採用了soft_align_attention機制,進行交互。
  • Inference Composition:在這一層中,再通過BILSTM捕獲局部推理資訊特徵及其上下文資訊特徵,下面是分別最大池化與平均池化,然後concat輸入MLP,得到最終結果。

當然我們也可以在網路輸入層通過tfidf加權詞向量,加權邏輯如下圖所示:

n*d 的 embedding 矩陣 通過長度為 n 的 tfidf 向量來修正,修正後的 embedding 矩陣獲取了全局的資訊,讓網路更加註重關鍵的單詞,有助於對文本相似度的識別。即:

sentence1 = [w11, w12, …, w1n]

sentence1_new = [w11 × tfidf11, w12 × tfidf12, …]

這個加權詞向量根據我們實驗的結果在拍拍貸的語義相似度的比賽和2018CIKM的跨語言文本語義相似度比賽中都是有非常明顯的提升。對於機器有限的同學可以在此類任務中嘗試這些方法。

Part 3 數據處理&模型嘗試

目前由於bert的強大超乎我們的想像,所以這次比賽中我們也沒有過多的思考,直接bert一把梭,基本沒有什麼數據分析。只是根據賽題給的原始數據進行了簡單的數據構造和各種開源的預訓練模型的對比。

  • 數據增強:根據數據傳遞性數據增強

–原始數據:句子A和句子B相似, 句子A和句子C相似 , 句子A和句子D不相似

–增強後數據:句子A和句子B相似, 句子A和句子C相似, 句子B和句子C相似, 句子A和句子D不相似,句子B和句子D不相似, 句子C和句子D不相似

具體模型結果如圖:

預訓練模型嘗試&各個模型的線上分數

  • roberta-wwm-large : 95.4
  • roberta-wwm-large+fgm(5 ensemble) : 95.6
  • roberta_large_clue/roberta_large_pair+ fgm : 95.8
  • NEZHA/NEZHA-wwm(5 ensemble) + fgm : 95.9
  • UER-py+ fgm : 96.00
  • 融合(UER-py + NEZHA)(10 model) : 96.26

模型優化

Part 4 final模型

最終本次比賽採用UER-py + NEZHA各5折共10個模型進行模型融合

線上成績:準確率 96.26

總結:這次的開源基本只是一個base方案,還有很多細緻的可以優化的東西,大家可以把這次比賽的程式碼在後續的語義相似度計算的比賽中當作是baseline,在這個的基礎上進行優化。

god.yanxishe.com/53這是最近一個新的文本語義相似度計算的比賽。大家可以去試試這個base方案,希望可以取得好的成績。

關注微信公眾號AILIGHT並回復:AILIGHT-新冠疫情相似句對判定 獲取開源程式碼地址鏈接

還沒有關注AILIGHT的朋友,掃描下方二維碼識別關注吧。有什麼建議也可以後台留言哦!

weixin.qq.com/r/8zlocEH (二維碼自動識別)