段建勇 李杰東 王昊
1.北方工業大學信息學院;2.CNONIX 國家標準應用與推廣實驗室
中文文本檢錯是一項重要任務,在眾多應用場景中都需要對各種場景轉化而來的文本進行檢錯以便后續模型的運用。采用人工方式進行文本檢錯費時費力、效率低。研究者提出了自動檢錯的方法,但目前的研究多集中在以語義為基礎進行檢錯,缺少對外部知識的引用。本文針對現有檢錯方法的不足,結合中文文本語句的特點,將輸入的中文字符結合其拆字知識,同時將中文的分詞結果結合其更小粒度的義原外部知識,將拆字知識和義原知識表示融合為外部知識矩陣,并改進模型結構,利用外部知識來引導模型檢錯的過程,在Tencent AI Lab 以及SIGHAN 數據集上的實驗表明,外部知識能有效的提高模型的檢錯能力。
中文文本檢錯任務在很多應用場景中均有體現,例如在輸入法的輸入、ASR 語音轉文字或者OCR 圖片識別時,都會產生音形或者字形的文本錯誤。中文文本檢錯是針對一句中文文本,使用現有模型對文本中的錯別字進行標記,以便后續的模型使用,因此文本檢錯任務的準確率對于后續的自然語言處理任務至關重要,檢錯模型的檢錯能力很大程度會影響后續的模型結果。
早期的文本檢錯模型主要是基于規則匹配的方法,使用語句中最大的信息熵分類來對文本中的錯別字進行識別;亦或使用字符級別的詞向量,對于文本中的每個字符進行逐一的概率計算;由于單個字符對于整體的語句語義信息不夠豐富,后續的方法多使用N-Gram 打分方式以及結合詞典進行檢錯。
隨著神經網絡和深度學習的興起,檢錯任務可以用深度學習模型進行解決。輸入是帶有錯別字的文本,輸出則直接為修改后的文本;亦或使用分類模型先將錯別字進行標記,之后再輸入糾錯模型。
文本檢錯任務在自然語言處理中占有重要地位,中文的文本在作為輸入時沒有確切的基本單位來將文本進行劃分,可以是單個字,也可以是組合的詞;且對與單個字來說,文本錯誤多種多樣,包括音形錯誤、字形錯誤等;從概率上來說,中文文本錯誤沒有連續大篇幅的錯誤,多出現為單個字或用詞不當錯誤,故而加強模型對中文文本語義信息的抽取,對中文文本的自然語言處理任務是有很大幫助的。在以往的中文自然語言處理任務中,模型的輸入多半是以單個字或者分詞作為模型的輸入,對語義的提取不夠完整。而Jie Yang 在中文命名實體識別(NER)任務中,首次提出了針對LSTM 模型的Lattice結構,將中文的字和分詞結果結合在一起作為模型的輸入,對文本的語義抽取提高到了字和詞融合的級別,提高了模型的實體識別能力;在中文表示挖掘方面,有基于筆畫級別的中文字表征,將中文的筆畫特征融入到嵌入表示中去,但是筆畫特征對于中文來說過于抽象,相同的筆畫順序也可以表示不同的文字,例如太和犬;且筆畫特征對于中文文本并不含有語義信息,就像字母對于英文一樣,并不含有有效的文本語義信息;在針對音形表示方面,針對中文的特征在模型中融合了漢語拼音和混淆集,混淆集是針對中文錯字的字形錯誤的集合,是一種合理的選擇;同時針對音型錯誤,引入拼音特征,但是拼音并不是象形文字與生俱來所具有的特點,音形和象形文本表示本來就是兩種語言流派,且拼音的引入或許會有聲母韻母聲調等潛在錯誤。同時采用特征工程的方法是最接近外部知識的,但是特征工程的知識面太窄,獲得的信息不夠靈活豐富。
將中文文本檢錯任務視為序列標記任務,給出一條含有錯別字的中文文本序列作為模型的輸入,輸出每字符為True 或False 的標記序列;由于中文文本語句的歧義性以及語義表示的不確定性,在模型的輸入端,若以中文字符為最小輸入單位,很難提取文本的語義信息,原因在于中文文本的單個字在文本序列中并不包含太多的語義信息;而若以中文的詞為模型最小輸入單位,其一在文本分詞時,不同的語義理解導致分詞結果不具有唯一性,不同的分詞結果完全符合邏輯但卻表示完全不同的語義信息;其二中文的詞含有的語義信息過于豐富,存在多義詞問題;針對以上問題,以Lattice 結構作為模型的輸入,同時獲取中文的字和詞的語義信息。
同時挖掘中文文本更深層次特有的文本外部知識來強化模型的檢錯能力,中文的字有其特有的偏旁結構,偏旁通常含有能夠表示該字類別的含義,例如江河湖海的三點水偏旁,偏旁屬于文字的聚類特征,而除偏旁之外的拆字信息通常被忽略,拆字知識能夠體現字與字在聚類特征條件之下所表達出的不同語義信息;同時中文的詞義過于寬泛,存在多義詞等因素,而中文詞所含有的外部知識——義原(OpenHowNet),則體現了相同的詞在不同的語句中特有的屬性。將中文的拆字特征知識以及義原知識結合進模型,能夠顯著提高模型的檢錯能力。
針對以上抽取中文文本語義信息的特點,本文提出了針對中文Lattice 結構輸入的外部知識混合矩陣,提取字的拆字知識矩陣;針對中文的詞,提取義原知識矩陣;將拆字知識向量和義原知識向量拼接融合到Transformer 模型的Attention 模塊中,加強模型對中文文本檢錯的能力。
模型結構如圖1 所示。

圖1 模型結構圖Fig.1 Model structure
偏旁部首是中文特有的字結構,偏旁含有豐富的隱藏信息,如金字旁的字多表示為金屬,三點水偏旁多和水相關,拆分中文單個字的偏旁特征能夠提取出中文字的聚類特征,但是在自然語言處理的詞嵌入(Embedding)表示中,嵌入本身就有聚類的含義,此時再采用偏旁特征只是對詞嵌入表示的強化,因此將字除偏旁之外的拆字特征一并融合進模型,提取字所含有的所有拆字語義特征,在聚類的基礎上體現字與字之間信息的差異化。
給定一個以字為單位的中文文本語句sentence={c
,c
,c
,……,c
},將中文文本進行分詞,分割后的詞組語句word_sentence={w
,w
,w
,……,w
};同時將sentence 中的每一個字都進行拆分,c
={x
,x
,x
……,x
},其中x表示拆分的字符;拆分之后,查詢出拆分字符的向量表示做加和求平均運算(此處不做Attention 運算的目的就是為了體現基于聚類條件下的字與字之間細微的差異化,若做Attention 運算,拆字之后的特征權重將向偏旁傾斜,拆字特征知識運算得到的結果無非就是另一種基于字符的嵌入表示),加入拆字特征之后的c
嵌入的計算公式為:c
=(x
+x
+x
+…+x
)/chaizi.len
義原(Sememe)是中文詞級別的屬性特征,中文所有的詞均可以由2187 個義原特征來進行表示,義原是詞級別的更小粒度的語義分割,將詞和義原外部知識進行結合能夠有效去除相同的詞在不同的語義環境中的歧義以及多義詞問題。
在word_sentence 中分詞結果得到的每一個詞,均可以在OpenHowNet 中匹配到基于詞的最小粒度——義原,即w
={y
,y
,y
,…,y
},其中y 表示詞的義原;義原知識的計算方公式如下所示:w
=(y
+y
+y
+…+y
)/sememe.len
由于義原的嵌入向量和中文分詞之后的詞向量文件并不相同,且兩者抽取的詞嵌入的維度所表達的特征也并不屬于一類,計算之后的義原向量和詞向量并不能直接進行融合,因此在將拆字特征知識的字嵌入向量和義原外部知識的詞嵌入向量進行縱向拼接為外部知識矩陣時,矩陣維度為Lattice 結構的語句長度乘以嵌入維度。
綜上所述:基于上文給定sentence
={c
,c
,c
,……,c
},將中文文本進行Lattice 結構處理,生成的Lattice結構輸入表示為字符和分詞結果的拼接輸入表示lattice_sentence
={c
,c
,c
,……,c
,w
,w
,w
,……,w
},Lattice 結構的輸入長度為lattice_sentence.len
=sentence.len
+word_ sentence.len
,將生成的字符計算向量和義原計算向量拼接生成ChaiZi_Sememe 矩陣(下文簡稱CS 矩陣),CS 矩陣的表示如圖2 所示。
圖2 外部知識融合矩陣Fig.2 External knowledge fusion matrix
在自然語言處理的任務中,語句的位置信息同樣也非常重要,在實體命名識別(NER)任務中,通常使用BIOES 編碼對目標的結果進行標記,同時結合條件隨機場(CRF)去除不合理的標記,BIOES 標簽本身就含有輸入語句的開始、中間、結束、其他等位置信息,CRF 層能夠學到輸出的標簽序列信息。位置信息的加入使得模型對標簽的預測能力有了進一步的提升;而在檢錯模型的Lattice結構中,其一是字的標簽只有True 或者False 兩種,標簽與標簽之間相互獨立,標簽之間無法體現位置編碼;其二是Lattice 結構的語句尾部添加了詞,詞是多字,并不能由一個數字來編碼其在語句中的位置信息,需要有詞的開始和結束位置編碼才能完整表示詞在句子中的位置信息。
在本文中,對輸入語句的位置信息進行兩次編碼,一次是詞在句子中的開始(Start)位置編碼,一次是詞的結束(End)位置編碼,對于字來說,開始位置和結束位置是一樣的,而詞的開始位置編碼和結束位置編碼則體現詞在文本中的位置區間,以此參與Lattice 結構運算。其位置編碼表示如圖3 所示。

圖3 文本的位置信息表示Fig.3 Position information representation of text
根據開始位置和結束位置的位置表示,生成對應的位置矩陣,共4 個位置矩陣,位置矩陣的計算公式如下所示:
Distance
(SS
)=Start[i]
-Start[j]
Distance
(SE
)=Start[i]
-Start[j]
Distance
(ES
)=Start[i]
-Start[j]
Distance
(EE
)=Start[i]
-Start[j]
其中Distance()方法計算的為相對距離,S(Start)表示開始位置序號,E(End)表示結束位置序號;SS 表示使用開始位置的序號減去其余各位置的開始位置的序號,生成的為SS 距離矩陣;SE、ES、EE 的位置矩陣計算方式相同。
將生成的4 個位置矩陣通過Transformer 模型的位置編碼計算方式之后做Concat 操作,之后乘以一個可學習的參數W,進過ReLU 函數得到矩陣R(ij),計算公式如下:

W
,W
,W
∈R
且u
,v ∈R
都是可學習的參數。在基礎Transformer 的Attention 計算中,矩陣Q、K、V 的結果均是來自輸入的字符嵌入和隨機矩陣的點乘得來,這樣計算的好處是模型在不同的向量空間得到不同的計算結果矩陣,使得泛化能力更強,但是Q、K、V矩陣的結果來源依然均是由最初的輸入字符Embedding和隨機矩陣的乘積結果;在計算權重矩陣的過程中,其計算矩陣結果來源過于單一,使用外部知識替換該計算矩陣可以將模型的輸入Embedding 和外部知識很好的結合起來參與模型的計算。
將上文計算的位置信息Loc 矩陣和CS 知識矩陣進行融合,用以替換公式Transformer 中的矩陣A;此處可以選擇直接加和CS 矩陣,也可以將CS 矩陣乘以可學習的W 矩陣之后,再和位置矩陣進行相加操作。之后替換Transformer 中Attention 的QK 運算結果,最終融合位置矩陣和外部知識的矩陣為A(ij),參與Attention Score 運算公式如下:

數據集包含兩部分,分別是出自Tencent AI Lab 的27萬余條數據和SIGHAN-2015 比賽數據集的1000 余條,需要自行處理為序列語句和序列標簽。同時實驗為了驗證模型的可靠性,將兩個數據集分開,Tencent AI Lab 的數據作為TrainSet 和DevSet,而SIGHAN 的1000 余條數據作為TestSet 經行測試,避免了同源數據集可能導致的問題。
實驗數據集劃分如表1 所示。

表1 CMRC2018 數據集實例Tab.1 Example of CMRC2018 dataset
模型實驗參數設置如表2 所示效果最好。

表2 實驗參數設置Tab.2 Experimental parameter setting
模型的檢測指標包含準確率(Precision)、召回率(Recall)、F1 值(F-Measure),F1 的指標能夠綜合反映模型效果的好壞。模型訓練的EarlyStopping 標準為訓練中五次迭代未超過0.01,則停止訓練。
模型以GRU 中文文本檢錯結果作為本文的BaseLine,其在News Title 數據集上取得了較好的結果。本文實驗使用Transformer 模型,加入拆字和義原特征共5 組實驗,以拆字特征知識和義原知識拼接矩陣融入Attention 運算為主實驗,以此來驗證模型的有效性。
3.4.1 對比實驗
在實驗設計中,將拆字知識嵌入和義原外部知識嵌入進行縱向拼接,生成對應的CS 外部知識(ChaiZi_Sememe)矩陣,輸入Attention 模塊中為主實驗,同時在未確定拼接矩陣是否有效果的前提下,在矩陣運算過程中乘以一個可學習的矩陣W,對比了可學習參數W×CS矩陣的效果,主實驗及對比BaseLine 實驗結果如表3所示。

表3 對比實驗結果實驗結果Tab.3 Comparative experimental results
實驗結果表明,在加入參數矩陣W 之后,模型的結果并未有大的提升,而只使用特征矩陣參與Attention 運算之后,相比BaseLine 的檢錯模型結果,F1 值有了0.9%的提升,綜合效果最好。外部知識矩陣的語義來源是最初的字和詞,說明外部知識在檢錯過程中起到了輔助作用。
3.4.2 消融實驗
消融實驗以Transformer 模型為基礎共3 組實驗,驗證加入特征的有效性;3 組的實驗結果表明,加入義原或拆字特征的檢錯結果都要比BASE 模型效果高出許多。
綜上所述,從表4 實驗結果來看,引入外部知識提升模型的檢錯能力是有效的;同時中文單獨的一個字在文本中是沒有太多的含義的,引入字級別外部知識提升效果不如詞級別,也驗證了中文文本的語義特征主要是中文的詞構成。同時,在知識融合方面,輸入端的嵌入表示能力并不差,知識融合的效果在模型內部取得的提升更為顯著。

表4 Transformer 消融實驗結果Tab.4 Results of Transformer ablation experiment
本文針對中文文本檢錯的特點,提取出中文文本特有的外部知識—拆字知識和義原知識,通過拼接知識矩陣,將Transformer 模型中Attention 機制相同來源的計算矩陣進行修改,提升了模型的中文檢錯能力,取得了最好的檢錯結果。
同時,本文對該外部知識的引用存在過于粗糙的問題,后續可以繼續深入細化研究,訓練出拆字的獨立嵌入表示,結合新的模型,進行下一步研究。
引用
[1] ZHANG Yue,YANG Jie.Chinese NER Using Lattice LSTM [C]//Melbourne:Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics,2018.
[2] LI Zi-ran,DING Ning,LIU Zhi-yuan,et al.Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge[C]//Firenze:Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics,2019.