1 簡介
在之前的篇章我們對中文文本糾錯做了一個系統(tǒng)的介紹,曾經(jīng)盛行的糾錯系統(tǒng)都是基于混淆集+n-gram語言模型的,其中混淆集構(gòu)建成本巨大,同時相對笨重,而n-gram語言模型也沒考到句子的語義信息,所以導(dǎo)致最終的F1得分都比較小,很難滿足真實場景的需要,泛化能力很比較差。同時以往的糾錯系統(tǒng)都是基于pipeline的,檢測任務(wù)跟糾錯任務(wù)是相互分開的,各個環(huán)節(jié)緊急相連,前面的環(huán)節(jié)如果出現(xiàn)了錯誤,后面的環(huán)節(jié)也很難進(jìn)行修正。任何一個環(huán)節(jié)出現(xiàn)了問題,都會影響整體的結(jié)果。
隨著深度學(xué)習(xí)的興起,人們逐漸用深度學(xué)習(xí)模型去替換以往的混淆集+n-gram語言模型的方式,根據(jù)句子的語義信息去進(jìn)行糾錯,同時,還將檢測任務(wù)跟糾正任務(wù)聯(lián)合到一起,做成一個end2end的系統(tǒng),避免pipeline方式帶來的問題。在這里我們介紹幾種基于深度學(xué)習(xí)的中文糾錯模型,讓大家對于中文文本糾錯有更加深入的理解。
2Confusionset-guided Pointer Network
Confusionset-guided Pointer Network是一個seq2seq模型,同時學(xué)習(xí)如何從原文本復(fù)制一個正確的字或者從混淆集中生成一個候選字。整個模型分為encoder跟decoder兩部分。其中encoder用的BiLSTM用于獲取原文本的高層次表征,例如圖中左下角部分,decoder部分用的帶注意力機(jī)制的循環(huán)神經(jīng)網(wǎng)絡(luò),在解碼的每個時刻,都能生成相應(yīng)的上下文表征。生成的上下文表征有兩個用途,第一個是利用這部分表征作為輸入,通過矩陣乘法跟softmax來計算當(dāng)前位置生成全詞表中各個字的概率(右邊的概率圖)。第二個用途是利用這部分上下文表征加上位置信息來計算當(dāng)前時刻復(fù)制原文本某個位置的字的概率或者需要生成原文本中不存在的字的概率(左邊的概率圖,這里其實是一個分類模型,假設(shè)原文本的長度是n,那么全部分類有n+1種,其中1至n的標(biāo)簽的概率代表當(dāng)前時刻要復(fù)制原文本第i個位置的字的概率,第n+1的類別代表當(dāng)前時刻要生成原文本不存在的字的概率。如果是1至n中某個類別的概率最大,那么當(dāng)前位置的解碼結(jié)果就是復(fù)制對應(yīng)概率最大的原文本的某個字,如果是第n+1個類別概率最大,那么就會用到前面提及的第一個用途,計算當(dāng)前位置詞表中各個字的概率,取其中概率最大的字作為當(dāng)前時刻解碼的結(jié)果)。這里要注意的是,生成新字為了保證結(jié)果更加合理,會事先構(gòu)建好一個混淆集,對于每個字,都有若干個可能錯別字(形近字或者同音字等),模型會對生成的候選會限制在這個字的混淆集中,也不是在全詞表中選擇,所以才稱為confusionset-guided。訓(xùn)練時會聯(lián)合encoder跟decoder一同訓(xùn)練,以預(yù)測各個類別的交叉熵?fù)p失作為模型優(yōu)化目標(biāo)。
Confusionset-guided Pointer Network看起來跟之前提及的CopyNet思路很接近文本生成系列之文本編輯,同時考慮到copy原文跟生成新字兩種可能性,相對于之前的seq2seq模型的改進(jìn)主要是引入混淆集來控制可能的候選字符。這種設(shè)置也比較合理,中文的錯別字多是在形狀或者發(fā)音上有一定相似之處,通過混淆集可以進(jìn)一步約束糾錯的結(jié)果,防止糾錯的不可控。但是由于生成的結(jié)果一定來源于混淆集,所以混淆集的質(zhì)量也影響了最終糾錯的效果。一個合理的混淆集的構(gòu)建都需要付出比較大的代價。
圖1:Confusionset-guided Pointer Network框架
3 FASPell
這是愛奇藝發(fā)布在EMNLP2019的基于詞的中文糾錯的方法,F(xiàn)ASPell有兩個特別的點,一個是用BERT為基礎(chǔ)的DAE取代了傳統(tǒng)的混淆集,另一點是使用置信度-相似度的解碼器來過濾候選集,從而提高糾錯效果。
FASPell首先利用Bert來生成句子每個字符的可能候選結(jié)果,但是Bert的預(yù)訓(xùn)練任務(wù)MLM中選中的token有10%是被隨機(jī)替代的,這跟文本糾錯的場景不符,所以需要對Bert進(jìn)行一定的微調(diào)。具體過程就是對MLM任務(wù)做一定調(diào)整,調(diào)整策略如下
a)如果文本沒有錯誤,那么沿用之前Bert的策略。
b)如果文本有錯誤,那么隨機(jī)選擇的要mask的位置的字,如果處于錯誤的位置,那么設(shè)置對應(yīng)的標(biāo)簽為糾錯后的字,也就是相對應(yīng)的正確的字。如果不是處于錯誤的位置,那么設(shè)置對應(yīng)的標(biāo)簽為原來文本中的字。
在獲得文本可能的候選結(jié)果后,F(xiàn)ASPell利用置信度-相似度的解碼器來過濾這些候選結(jié)果。這里為什么需要對Bert生成的候選字進(jìn)行過濾呢?因為漢語中常見的錯誤大部分在字形或者發(fā)音有一定相似之處,但是Bert生成的候選字并沒有考慮到中文糾錯的背景,所以Bert提供的候選結(jié)果很多都是糾錯任務(wù)不相關(guān)的。這里每個位置的候選詞的置信度由Bert計算得到,相似度這里包括字形相似度跟音素相似度,其中因素相似度考慮到在多種語言中的發(fā)音。對于每個位置的候選詞,只有當(dāng)置信度,字形相似度跟音素相似度滿足某個條件時,才會用這個候選字符替代到原文對應(yīng)字符。至于這個過濾條件,一般是某種加權(quán)組合,通常需要置信度跟相似度的加權(quán)和超過一定閾值才會進(jìn)行糾錯,加權(quán)相關(guān)的參數(shù)可以通過訓(xùn)練集學(xué)習(xí)得到,在推理時就可以直接使用。
FASPell沒有單獨的檢測模塊,利用BERT來生成每個位置的候選字,避免了以往構(gòu)建混淆集的工作,同時利用后續(xù)的置信度-相似度的解碼器,對候選結(jié)果進(jìn)行過濾,從而進(jìn)一步提高糾錯效果。
圖2: FASPell框架
4Soft-Masked BERT
Soft-masked Bert是字節(jié)發(fā)表在ACL 2020的中文糾錯方法,針對目前主流的深度學(xué)習(xí)糾錯方法都是利用Bert生成各個位置的可能候選,但是Bert本身缺乏判斷每個位置是否需要糾錯的能力,也就是缺乏檢測能力。為此,提出了一個包含檢測網(wǎng)絡(luò)跟糾正網(wǎng)絡(luò)的中文糾錯方法。整個流程是經(jīng)過檢測網(wǎng)絡(luò),然后再經(jīng)過糾錯網(wǎng)絡(luò)。其中檢測網(wǎng)絡(luò)是的雙向GRU+全連接層做一個二分類任務(wù),計算原文本每個位置是否有錯誤的概率。每個位置有錯別字的概率為p,沒有錯別字的概率是1-p,如圖中左邊部分。糾正網(wǎng)絡(luò)采用的是預(yù)訓(xùn)練模型Bert,但是在嵌入層的地方有所不同,每個位置的嵌入是由原文本中對應(yīng)位置的字的詞嵌入跟[MASK]的詞嵌入的加權(quán)和得到的,這里的[MASK]的權(quán)重等于檢測網(wǎng)絡(luò)預(yù)測的當(dāng)前位置是錯別字的概率。具體如圖4所示,所以如果檢測網(wǎng)絡(luò)判斷當(dāng)前位置是錯別字的概率較高,那么在糾正網(wǎng)絡(luò)中該位置的詞嵌入中[MASK]的權(quán)重就更高,反之,如果檢測網(wǎng)絡(luò)判斷當(dāng)前位置是錯別字的概率很低,那么在糾正網(wǎng)絡(luò)中該位置的詞嵌入中[MASK]的權(quán)重就更低。利用Bert獲得每個位置的表征后,將Bert最后一層的輸出加上原文本中對應(yīng)位置的詞嵌入作為每個時刻最終的表征,通過全連接層+Softmax去預(yù)測每個位置的字,最終選擇預(yù)測概率最大的字作為當(dāng)前結(jié)果的輸出。訓(xùn)練過程中聯(lián)合訓(xùn)練檢測網(wǎng)絡(luò)跟糾正網(wǎng)絡(luò)的,模型的目標(biāo)包括兩部分,一個是檢測網(wǎng)絡(luò)的對數(shù)似然函數(shù),另一個是糾正網(wǎng)絡(luò)的對數(shù)似然函數(shù),通過加權(quán)求和聯(lián)合這兩部分,使得加權(quán)和的負(fù)數(shù)盡可能小,從而同時優(yōu)化這兩個網(wǎng)絡(luò)的參數(shù)。
圖3: Soft-Masked BERT框架
圖4: Softed-masked embedding
Soft-Masked BERT相比直接采用預(yù)訓(xùn)練模型BERT,利用檢測網(wǎng)絡(luò)從而得到更合理的soft-masked embedding,緩解了Bert缺乏充足檢測能力的問題,雖然改動不大,但是效果提升明顯。
5 MLM-phonetics
個人感覺MLM-phonetics是在soft-masked BERT的基礎(chǔ)上做的優(yōu)化,思路也比較接近,同樣是包括檢測網(wǎng)絡(luò)跟糾正網(wǎng)絡(luò),主要有幾點不同,
圖5: MLM-phonetics框架
a)糾正網(wǎng)絡(luò)的詞嵌入組成不同,Soft-Masked BERT的詞嵌入由原文本中各個位置本身的詞嵌入和[MASK]的詞嵌入組成,而MLM-phonetics則是將相應(yīng)[MASK]的詞嵌入替換為相應(yīng)位置對應(yīng)的拼音序列的嵌入。
b)目標(biāo)函數(shù)不同,MLM-phonetics在糾正網(wǎng)絡(luò)的目標(biāo)函數(shù)中加入了檢測網(wǎng)絡(luò)的預(yù)測結(jié)果作為一個權(quán)重項。
c)檢測網(wǎng)絡(luò)不同,MLM-phonetics的檢測網(wǎng)絡(luò)采用了預(yù)訓(xùn)練模型Bert。
d) BERT預(yù)訓(xùn)練任務(wù)不同,為了更加適配中文糾錯任務(wù)的場景,MLM-phonetics的Bert的MLM任務(wù)中預(yù)測的字都是根據(jù)漢字常見的錯誤選取的,要不在字形上有相似之處,要不在發(fā)音上有相似之處。
圖6: MLM-phonetics預(yù)訓(xùn)練任務(wù)
6 總結(jié)
為了對比上述幾種中文糾錯方法之間的差異,可以直接比較這幾種方法在幾個常見中文糾錯數(shù)據(jù)集上的性能表現(xiàn),在F1值上都遠(yuǎn)超基于混淆集+n-gram語言模型的方式。
圖7:不同糾錯模型的效果對比
除此之外,關(guān)于中文糾錯任務(wù),還有一些需要注意的點。
a)由于糾錯任務(wù)可以分為檢測跟糾正兩個過程,所以相應(yīng)的錯誤也可以分為這兩種類型。目前基于BERT的中文糾錯方法的檢測錯誤的比例要高于糾正錯誤的比例,這也得益于Bert訓(xùn)練過程的MLM任務(wù)。
b)中文糾錯方法基本都是以字為基本單位,很大程度是因為以詞為單位的話會引入分詞模塊的錯誤,但是可以用分詞的結(jié)構(gòu)來作為字的特征增強(qiáng)。
c)目前中文糾錯任務(wù)有兩種類型的錯誤還沒有很好的解決。第一種是模型需要強(qiáng)大推理能力才能解決,例如“他主動牽了姑娘的手,心里很高心,嘴上卻故作生氣。”這里雖然容易檢測出“高心”是錯別字,但是至于要把它糾正為“寒心”還是“高興”需要模型有強(qiáng)大的推理能力才可以。第二種錯誤是由于缺乏常識導(dǎo)致的(缺乏對這個世界的認(rèn)識),例如“蕪湖:女子落入青戈江,眾人齊救援。”需要知道相關(guān)的地理知識才能把“青戈江”糾正為“青弋江”。
審核編輯 :李倩
-
檢測
+關(guān)注
關(guān)注
5文章
4399瀏覽量
91263 -
文本
+關(guān)注
關(guān)注
0文章
118瀏覽量
17047 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5442瀏覽量
120800
原文標(biāo)題:中文文本糾錯系列之深度學(xué)習(xí)篇
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論