Soft-Masked BERT:文本糾錯與BERT的最新結(jié)合


??知乎原文

文本糾錯,是自然語言處理領(lǐng)域檢測一段文字是否存在錯別字、以及將錯別字糾正過來的技術(shù),一般用于文本預(yù)處理階段,同時能顯著緩解智能客服等場景下語音識別(ASR)不準(zhǔn)確的問題。

本文將通過以下幾個章節(jié)簡要介紹文本糾錯相關(guān)知識。

  1. 文本糾錯示例與難點(diǎn)
  2. 文本糾錯常用技術(shù)
  3. 如何將 BERT 應(yīng)用于文本糾錯
  4. 文本糾錯最優(yōu)模型:Soft-Masked BERT(2020-ACL)
  5. 立馬上手的糾錯工具推薦

一.文本糾錯示例與難點(diǎn)

生活中常見的文本錯誤可以分為(1)字形相似引起的錯誤(2)拼音相似引起的錯誤 兩大類;如:“咳數(shù)”->“咳嗽”;“哈蜜”->“哈密”。錯別字往往來自于如下的“相似字典”。

相似發(fā)音中文字典.png
相似字形中文字典.png

其他錯誤還包括方言、口語化、重復(fù)輸入導(dǎo)致的錯誤,在ASR中較為常見。

現(xiàn)有的NLP技術(shù)已經(jīng)能解決多數(shù)文本拼寫錯誤。剩余挑戰(zhàn)、糾錯難點(diǎn)主要在于,部分文本拼寫錯誤需要常識背景(world-knowledge)才能識別。例如:

Wrong: "我想去埃及金子塔旅游。"
Right: "我想去埃及金字塔旅游。"

將其中的“金子塔”糾正為“金字塔”需要一定的背景知識。

同時,部分錯誤需要模型像人一樣具備一定的推理和分析能力才能識破。例如:

Wrong: "他的求勝欲很強(qiáng),為了越獄在挖洞。"
Right: "他的求生欲很強(qiáng),為了越獄在挖洞。"

“求勝欲”和“求生欲”在自然語言中都是正確的,但是結(jié)合上下文語境來分析,顯然后者更為合適。

最后,文本糾錯技術(shù)對于誤判率有嚴(yán)格的要求,一般要求低于0.5%。如果糾錯方法的誤判率很高(將正確的詞“糾正”成錯誤的),會對系統(tǒng)和用戶體驗有很差的負(fù)面效果。

二.文本糾錯常用技術(shù)

錯別字糾正已經(jīng)有很多年的研究歷史。常用的方法可以歸納為錯別字詞典、編輯距離、語言模型等。

構(gòu)建錯別字詞典人工成本較高,適用于錯別字有限的部分垂直領(lǐng)域;編輯距離采用類似字符串模糊匹配的方法,通過對照正確樣本可以糾正部分常見錯別字和語病,但是通用性不足。

所以,現(xiàn)階段學(xué)術(shù)界和工業(yè)界研究的重點(diǎn)一般都是基于語言模型的糾錯技術(shù)。2018年之前,語言模型的方法可以分為傳統(tǒng)的n-gram LM和DNN LM,可以以字或詞為糾錯粒度。其中“字粒度”的語義信息相對較弱,因此誤判率會高于“詞粒度”的糾錯;“詞粒度”則較依賴于分詞模型的準(zhǔn)確率。

為了降低誤判率,往往在模型的輸出層加入CRF層校對,通過學(xué)習(xí)轉(zhuǎn)移概率和全局最優(yōu)路徑避免不合理的錯別字輸出。

2018年之后,預(yù)訓(xùn)練語言模型開始流行,研究人員很快把BERT類的模型遷移到了文本糾錯中,并取得了新的最優(yōu)效果。

三、將BERT應(yīng)用于文本糾錯

BERT

BERT與以往深度學(xué)習(xí)模型的主要區(qū)別在于:預(yù)訓(xùn)練階段使用了“掩碼語言模型”MLM和“判斷s1是否為s2下一句”NSP兩個任務(wù),特征抽取使用12層雙向Transformer,更大的訓(xùn)練語料和機(jī)器「More Money,More Power」。其中,MLM任務(wù)使得模型并不知道輸入位置的詞匯是否為正確的詞匯(10%概率),這就迫使模型更多地依賴于上下文信息去預(yù)測詞匯,賦予了模型一定的糾錯能力。

一種簡單的使用方式為,依次將文本s中的每一個字c做mask掩碼,依賴c的上下文來預(yù)測c位置最合適的字(假設(shè)詞表大小為20000,相當(dāng)于在句子中的每一個位置做了一個“20000分類”)。設(shè)置一個容錯閾值k=5,如果原先的字c出現(xiàn)在預(yù)測結(jié)果的top5中,就認(rèn)為該位置不是錯別字,否則是錯別字。

BERT糾錯baseline-圖片來自網(wǎng)絡(luò)

當(dāng)然這種方法過于粗暴,很可能造成高誤判率。作為優(yōu)化,我們可以使用模型預(yù)訓(xùn)練的方式對BERT進(jìn)行微調(diào),顯著改進(jìn)糾錯效果。糾錯的領(lǐng)域最好和微調(diào)領(lǐng)域相同(如果需要在新聞類文章中糾錯,可以使用“人民日報語料”對模型微調(diào))。

四、文本糾錯最優(yōu)模型:Soft-Masked BERT

為了彌補(bǔ)baseline方法的不足,最大限度發(fā)揮BERT功效,復(fù)旦大學(xué)的研究人員在2020 ACL上發(fā)表了最新論文——“Spelling Error Correction with Soft-Masked BERT”。

Soft-Masked BERT 模型圖

論文提出的模型主要創(chuàng)新點(diǎn)在于兩點(diǎn):

(1)將文本糾錯劃分為檢測網(wǎng)絡(luò)(Detection)和糾正網(wǎng)絡(luò)(Correction)兩部分,糾正網(wǎng)絡(luò)的輸入來自于檢測網(wǎng)絡(luò)輸出。

(2)以檢測網(wǎng)絡(luò)的輸出作為權(quán)重,將 masking 特征添加到各個輸入字符,即“Soft-Masked”。

論文簡要分析

具體來看,模型Input是字粒度的word-embedding,可以使用BERT-Embedding層的輸出或者word2vec。檢測網(wǎng)絡(luò)由Bi-GRU組成,充分學(xué)習(xí)輸入的上下文信息,輸出是每個位置 i 可能為錯別字的概率 p(i),值越大表示該位置出錯的可能性越大。

檢測網(wǎng)絡(luò) 與 Soft Masking

Soft Masking 部分,將每個位置的特征以 p(i) 的概率乘上 masking 字符的特征,以(1-p(i))的概率乘上原始的輸入特征,最后兩部分相加作為每一個字符的特征,輸入到糾正網(wǎng)絡(luò)中。原文描述:

Soft Masking 模塊處理

糾正網(wǎng)絡(luò)

糾正網(wǎng)絡(luò)部分,是一個基于BERT的序列多分類標(biāo)記模型。檢測網(wǎng)絡(luò)輸出的特征作為BERT 12層Transformer模塊的輸入,最后一層的輸出+Input部分的Embedding特征(殘差連接)作為每個字符最終的特征表示。

糾正網(wǎng)絡(luò)

最后,將每個字特征過一層 Softmax 分類器,從候選詞表中輸出概率最大的字符認(rèn)為是每個位置的正確字符。

糾正網(wǎng)絡(luò)的特征表示

整個網(wǎng)絡(luò)的訓(xùn)練端到端進(jìn)行,損失函數(shù)由檢測網(wǎng)絡(luò)和糾正網(wǎng)絡(luò)加權(quán)構(gòu)成。

Loss Function

實驗結(jié)果

作者在“SIGHAN”和“NEWs Title”兩份數(shù)據(jù)集上做了對比實驗。其中“SIGHAN”是2013年開源的中文文本糾錯數(shù)據(jù)集,規(guī)模在1000條左右。“NEWs Title”是從今日頭條新聞標(biāo)題中自動構(gòu)建的糾錯數(shù)據(jù)集(根據(jù)文章開頭展示的相似字形、相似拼音字典),有500萬條語料。

Result

Soft-Masked BERT 在兩份數(shù)據(jù)集上幾乎都取得了最好結(jié)果。同時我們發(fā)現(xiàn),Finetune對于原始BERT的表現(xiàn)具有巨大的促進(jìn)作用。

論文代碼作者暫未開源,但是論文的模型和思路應(yīng)該是非常清晰易懂的,實現(xiàn)起來不會太難。這兒先立個flag,有時間自己來實現(xiàn)一下。

五、立馬上手的糾錯工具推薦

筆者簡單調(diào)研發(fā)現(xiàn),文本糾錯網(wǎng)上已經(jīng)有不少的開源工具包供大家使用了。其中最知名的應(yīng)該是pycorrector,支持kenlm、rnn_crf、seq2seq、BERT等各種模型。結(jié)合具體領(lǐng)域的微調(diào)和少量規(guī)則修正,應(yīng)該可以滿足大部分場景中的文本糾錯需求了。

Demo

Demo中筆者使用了經(jīng)人民日報語料微調(diào)過的BERT模型,通過pycorrect加載來做基于MLM的文本糾錯。識別結(jié)果還算可以,甚至“金字塔”這種需要常識的錯別字都糾正出來了。

當(dāng)然pycorrect還支持各種語言模型和DNN模型,供大家自行把玩了: )

此外,筆者還找到一個基于京東客服機(jī)器人語料做的中文糾錯模型。主要解決同音字自動糾錯問題,比如:

對京東新人度大打折扣 -- > 對京東信任度大打折扣
我想買哥蘋果手機(jī) 糾正句:我想買個蘋果手機(jī)

不過倉庫上一次更新在5年前,年代久遠(yuǎn)估計效果有限。


以上是筆者近期調(diào)研文本糾錯后的一些思考,剛好上周在實驗室組會中做了分享,就順便寫了這篇文章。如果大家發(fā)現(xiàn)有好的糾錯方法或論文,歡迎留言分享一起交流哈??

?? 歡迎來我的個人倉庫勾搭

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容