安見才讓
(青海民族大學(xué)計算機學(xué)院,西寧810007)
信息社會的發(fā)展,使電子書、網(wǎng)上圖書館以及網(wǎng)頁等種類繁多的信息平臺不斷出現(xiàn),供人們使用。這些平臺上的信息主要是通過鍵盤錄入、圖像掃描等方式輸入到計算機的。在輸入過程中,任何一種方式都無法保證存入的信息準確無誤,校對技術(shù),作為確保準確輸入信息的一種專業(yè)性技術(shù),便顯示出其重要性來。
國外研究在英文文本校對方面取得了一定成果,部分成果實現(xiàn)了商品化。英文校對一般分為兩部分[1],一是針對英語單詞內(nèi)部出現(xiàn)的拼寫錯誤,主要采用最小編輯距離技術(shù)、相似鍵技術(shù)等六種方法來實現(xiàn)[2];二是對句子中出現(xiàn)的單詞正確但用法錯誤的情況進行校正,主要采用自然語言處理和統(tǒng)計語言模型技術(shù)(SLM)解決。由于漢語與英語在語言本身及文本輸入方式上均存在較大差異, 因而漢語的文本校對系統(tǒng)所采用的策略及技術(shù),與英文校對系統(tǒng)有一定的差異。現(xiàn)今普遍采用的技術(shù)有:詞切分技術(shù)[3]、近似集模糊匹配技術(shù)[4-5]、語法分析及語義分析技術(shù)等[6]。國內(nèi)對文本校對方面的研究始于上世紀90 年代初期,但發(fā)展速度較快,其中藏文字的主要校對方法采用字典匹配法進行。文獻[7]詳細描述了藏文的文法并根據(jù)藏文文法提出了基于分段的藏文校對方法。隨著深度學(xué)習(xí)方法的發(fā)展,一些神經(jīng)網(wǎng)絡(luò)模型也被成功應(yīng)用于藏文字的校對任務(wù)。
利用神經(jīng)網(wǎng)絡(luò)模型處理藏文字校對問題,首先需要將字母向量化表示??墒褂靡粋€特定維度的特征向量代表藏文字母。字母向量可以刻畫字母與字母在語義和語法上的相關(guān)性,并作為藏文字母特征成為神經(jīng)網(wǎng)絡(luò)的輸入。使用訓(xùn)練語料集中的所有字母建立一個大小為d×N 的藏文字字典矩陣,d 是字向量的維度,N 是字典的大小,以此構(gòu)造一個字母到字母嵌入的查找表,將輸入的藏文字母轉(zhuǎn)換為字母嵌入向量,作為模型的輸入。研究表明,使用大規(guī)模無監(jiān)督學(xué)習(xí)得到的字母向量作為輸入矩陣的初始值比隨機初始化有著更優(yōu)的效果。此處使用word2vec[8]在藏文語料庫預(yù)訓(xùn)練獲得字母向量,取值d=300,N=152。
在此創(chuàng)建名為BiGtCFCMTC(BiGRU three CNN FC Modle of Tibetan Checking,雙向GRU 三卷積全連接網(wǎng)絡(luò))的模型。
藏文字校對任務(wù)通??梢哉J為是判斷基于藏文字母序列組合的合法性的任務(wù)。藏文字中一般最多有7 個藏文字母,7 個字母之間有嚴格文法規(guī)定,它們之間的組合關(guān)系非常緊密,前面的字母會影響到后面字母的選擇,同時,后面字母的出現(xiàn)也影響著前面字母的選擇。所以,為抽取其相互關(guān)系的語義在此采用雙向GRU。
藏文字經(jīng)過循環(huán)網(wǎng)絡(luò)GRU 語義抽取后,對其輸出部分分別進行拼接,形成新的語義矩陣M7×300。然后,用三個大小分別為 2×300、3×300、4×300 卷積核作卷積和池化運算,所得結(jié)果作連接成向量,作全連接并用Softmax 函數(shù)進行歸一化處理。藏文字校對模型框架如圖1 所示。
雙向GRU 的目的是解決單向GRU 無法處理后文信息的問題。單向的GRU 只能在一個方向上處理數(shù)據(jù),雙向GRU 的基本思想則是提出每一個訓(xùn)練序列向前和向后分別是兩個循環(huán)神經(jīng)網(wǎng)絡(luò),且這兩個網(wǎng)絡(luò)都連接著一個輸出層。圖2 展示的即是一個沿著時間展開的改進雙向雙層GRU 神經(jīng)網(wǎng)絡(luò)模型(Bi-GRU),可用來獲得字母序列的標(biāo)注信息。Bi-GRU 轉(zhuǎn)化函數(shù)如下:
圖1 藏文字校對模型框架
圖2 雙向雙層GRU 神經(jīng)網(wǎng)絡(luò)模型
向后推算(backwardpass):
需要注意的是,一個現(xiàn)代藏文字最多7 個字母,向后推算部分是從最后一個字母開始,即t 從6遍歷至0。
向前推算(forwardpass):
向前推算與后向推算部分類似,向量上的箭頭方向相反,而且它是從句子的第一個詞掃描至最后一個字母,在7 字母的情況下,則t 從0 遍歷至6。公式如下:
在向前推算中輸入向量由兩個向量組合而成:向前推算第t 個字母的向量xt和后向推算第6 個字母到第t 個字母積累的歷史信息的串聯(lián)拼接。
在藏文字校對中,這個模塊的輸入為藏文字的第一個字母到最后一個字母,最多有7 個字母,達不到7 個字母用-1 補齊。經(jīng)雙向GRU 處理后,輸出為 hi(hi∈R1×d, d =300, 0≤i≤6),把 hi全部拼接后得到矩陣 M7×300:
對藏文字局部特征的提取可利用CNN 來完成。CNN 是一種前饋神經(jīng)網(wǎng)絡(luò),其模型結(jié)構(gòu)主要包括輸入層、卷積層、池化層、全連接層和輸出層幾部分。
在輸入層操作中,雙向雙層GRU 神經(jīng)網(wǎng)絡(luò)的輸出 hi拼接成矩陣 M7×300(hi∈R1×300,其中,1 表示一個字母,300 是字母向量維度)作為輸入,特征向量為hi包含了第i 字母前后的全部語義特征。
卷積操作主要完成特征提取的工作。藏文字中一般前2 個、3 個和4 個字母之間需要嚴格遵守文法的規(guī)定,元音和后兩個字母相對比較簡單不易出錯。所以,通過設(shè)置大小為 2×300、3×300 和 4×300的濾波器 ω0、ω1、ω2來完成對輸入藏文字特征的提取,如下式:
其中,ωi(0≤i≤2)是卷積核,Mj:j+i+1是 j 到 j+i+1 個字母組成的向量,b 是偏置項,通過卷積層后,得到特征矩陣 Ji(0≤i≤2),具體為 Ji=[ci0,ci1,ci2,ci3,ci4,ci5,ci6]。
通過卷積層之后得到的字向量特征矩陣Ji比較小,所以沒有池化層。在此把卷積后特征進行水平拼接:
此處,J 包含 3 次卷積×7 個元素/卷積=21 個元素。
再將3 次卷積后所得的特征J 作為輸入,作全連接運算,并作Softmax 運算:
其中,w為全連接權(quán)重,n 為偏移項,p 只有兩個值。
采用反向傳播機制,使用自適應(yīng)學(xué)習(xí)率的隨機梯度下降算法來訓(xùn)練模型中的權(quán)重矩陣和偏置項,通過最小化交叉熵來優(yōu)化模型。交叉熵代價函數(shù)為:
其中,r 為訓(xùn)練數(shù)據(jù)集大??;c 為類別數(shù),此處值為2;y 為預(yù)測類別為實際類別;λ2||θ||2為 L2正則項。
設(shè)置損失閾值T,當(dāng)損失函數(shù)Lloss小于T 時,視為模型收斂。在此收斂狀態(tài)下的參數(shù)優(yōu)化情況得到BiGtCFCMTC 模型的最優(yōu)權(quán)值,使用測試文本集來對此時的最優(yōu)化模型進行驗證,再通過對比分類器精度和泛化能力來評估改進算法的性能。
實驗使用的藏語語料由青海民族大學(xué)藏文信息處理與軟件研究所提供。此語料是中國西北五省區(qū)藏區(qū)初中藏語文教材中的課文, 測試語料包含了73155 個藏文字,其中,正樣本占55.1%,負樣本占44.9%。
首先,用人工方式對訓(xùn)練語料采用前文所述方法進行預(yù)處理。實驗采用TensorFlow2.0 框架,構(gòu)建上述神經(jīng)網(wǎng)絡(luò)模型,并使用語料訓(xùn)練網(wǎng)絡(luò)的權(quán)值,不斷迭代,直到算法收斂。實驗在內(nèi)存為16GB、GPU內(nèi)存為8 GB 的Windows 系統(tǒng)上進行。程序采用Python 語言進行編程模型中的超參數(shù):上下文窗口長度 k =3,藏文字母向量長度 d =300,隱藏層單元數(shù) h = 128,初始學(xué)習(xí)率 α = 0.1,Dropount 比率 p =0.5,Batchsize 值為 128。
使用上述方法在語料中進行實驗,對藏文的字母標(biāo)注結(jié)果用標(biāo)準bake-off 打分程序來計算準確率P,召回率R。準確率和召回率的調(diào)和平均值F。經(jīng)實驗,所提出的新模型BiGTCFCMTC 的藏文字校對準確率為93.95%,召回率為94.17%,F(xiàn) 值為94.06%。
新提出的藏文字檢錯雙向GRU 三卷積全連接網(wǎng)絡(luò)模型在73155 個藏文字語料上進行實驗,獲得較為理想的結(jié)果。實際工作中,模型憑借GPU 的運算能力可大大縮短深度神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練時間,該網(wǎng)絡(luò)模型的方法也更容易推廣應(yīng)用到其他NLP中序列標(biāo)注的任務(wù),具有一定的通用性和實用價值。