文字匹配方法系列 BERT匹配模型

2021-10-06 18:43:56 字數 2521 閱讀 7506

在介紹深層次互動匹配方法之前,本文接著多語義匹配方法[1]介紹基於bert模型實現文字匹配的方法。將其單獨介紹主要因為bert實現文字匹配操作方便且效果優秀,比較適用於工業應用場景。關於bert模型,devlin, j., chang, m. w., lee, k., & toutanova, k. (2018)[2]在**中有較為詳細的介紹,官方**可以在以下github**中找到:github.com/google-resea[3]。

2.1 bert模型介紹

bert本質上是乙個兩段式的nlp模型。第乙個階段叫做:pre-training,通過大規模無監督預料訓練獲得的模型,可以獲取文字動態字元級語義embedding,簡單地可以視為加強版的字元級word2vec。實際上由於bert預訓練階段在masked lm之外的另乙個pre-training任務就是next sentence prediction,即成對句子構成的句子級問題,所以用bert做文字匹配是有天然優勢的。

第二個階段叫做:fine-tuning,利用預訓練好的語言模型,完成具體的nlp下游任務,nlp下游任務下游任務多種多樣,nlp在多種任務中當時都取得了sota的效果,其中之一就是文字匹配任務,只需要直接輸入分割好的句子對就可以直接獲取匹配結果。

當然除了直接使用bert的句對匹配之外,理論上還可以只用bert來對每個句子求embedding,之後再通過向siamese network這樣的經典模式去求相似度也可以。但從實操來說是不可取的,使用bert獲取embedding後再去接複雜的互動計算,整個模型會非常大,訓練時耗也會很長,不適於工業常見。

2.2 文字匹配任務實踐

實際bert模型中的輸入本身就是適應兩段文字的,在常見的分類任務中,是令text_b=none,只輸入了第一段文字,在文字匹配時正常輸入text_a,text_b即可。

(1) 資料處理

輸入資料格式:texta \t text_b \t label 。兩個句子之間通過[sep]分割,[cls]的向量作為分類的輸入,標籤是兩個句子是否相似,1表示正例,0表示負例。

(2)部分關鍵**展示

example結構設計文字對輸入:

文字對編碼處理

text_a,text_b合起來的輸入編碼長度是你設定的max_length;

如果len(text_a)+len(text_b)>max_length,那麼 在一對文字中,誰長就會截斷誰。

模型訓練

增加乙個processor name 如text_matching,在s**件裡面按照github上面樣式設定引數即可 :sh run_train.sh

(3)實踐效果

**由於bert預訓練階段任務之一就是next sentence prediction,即成對句子構成的句子級問題,所以使用bert進行文字匹配任務可以非常輕易地達到很好的效果,**一般工業級資料效果可以達到80%甚至超過,比一般非預訓練匹配模型所需訓練資料少,訓練模型效果好。

工業上推薦使用,如需解決上線平響問題,可以考慮減少bert中transformer層數,distill一下/混合精度/量化壓縮等手段壓縮至較小的模式上線。

參考文獻[1] 文字匹配方法系列––多語義匹配模型:zhuanlan.zhihu.com/p/85;

debuluoyi:文字匹配方法系列––多語義匹配模型 zhuanlan.zhihu.com

[2] devlin, j., chang, m. w., lee, k., & toutanova, k. (2018). bert:

pre-training of deep bidirectional transformers for language

understanding.arxiv preprint arxiv:1810.04805.

例如 —— 哈工大+張三+對話系統。號主,微商請自覺繞道。謝謝!推薦閱讀:

pytorch cookbook(常用**段整理合集)

通俗易懂!使用excel和tf實現transformer!

深度學習中的多工學習(multi-task-learning)——keras實現

影像匹配方法

影象匹配的方法很多,一般分為兩大類,一類是基於灰度匹配的方法,另一類是基於特徵匹配的方法。1 基於灰度匹配的方法。也稱作相關匹配演算法,用空間二維滑動模板進行影象匹配,不同演算法的區別主要體現在模板及相關準則的選擇方面。已有的基於灰度的匹配方法很多,如 leese於1971年提出的mad演算法 為使...

正則匹配方法

這裡是幾個主要非英文語系字元範圍 google上找到的 2e80 33ffh 中日韓符號區。收容康熙字典部首 中日韓輔助部首 注音符號 日本假名 韓文音符,中日韓的符號 標點 帶圈或帶括符文數字 月份,以及日本的假名組合 單位 年號 月份 日期 時間等。3400 4dffh 中日韓認同表意文字擴充a...

OpenCV模板匹配方法原理

模板匹配 templatematching 就是在一幅影象中尋找和模板影象 template 最相似的區域,該方法原理簡單計算速度快,能夠應用於目標識別,目標跟蹤等多個領域。引數解釋 image 輸入影象。必須為8位或者32位的浮點型。templ 用於搜尋的模板影象。必須小於輸入影象並且是一樣的資料...