安見才讓
(青海民族大學計算機學院,西寧810007)
信息社會的發展,使電子書、網上圖書館以及網頁等種類繁多的信息平臺不斷出現,供人們使用。這些平臺上的信息主要是通過鍵盤錄入、圖像掃描等方式輸入到計算機的。在輸入過程中,任何一種方式都無法保證存入的信息準確無誤,校對技術,作為確保準確輸入信息的一種專業性技術,便顯示出其重要性來。
國外研究在英文文本校對方面取得了一定成果,部分成果實現了商品化。英文校對一般分為兩部分[1],一是針對英語單詞內部出現的拼寫錯誤,主要采用最小編輯距離技術、相似鍵技術等六種方法來實現[2];二是對句子中出現的單詞正確但用法錯誤的情況進行校正,主要采用自然語言處理和統計語言模型技術(SLM)解決。由于漢語與英語在語言本身及文本輸入方式上均存在較大差異, 因而漢語的文本校對系統所采用的策略及技術,與英文校對系統有一定的差異?,F今普遍采用的技術有:詞切分技術[3]、近似集模糊匹配技術[4-5]、語法分析及語義分析技術等[6]。國內對文本校對方面的研究始于上世紀90 年代初期,但發展速度較快,其中藏文字的主要校對方法采用字典匹配法進行。文獻[7]詳細描述了藏文的文法并根據藏文文法提出了基于分段的藏文校對方法。隨著深度學習方法的發展,一些神經網絡模型也被成功應用于藏文字的校對任務。
利用神經網絡模型處理藏文字校對問題,首先需要將字母向量化表示。可使用一個特定維度的特征向量代表藏文字母。字母向量可以刻畫字母與字母在語義和語法上的相關性,并作為藏文字母特征成為神經網絡的輸入。使用訓練語料集中的所有字母建立一個大小為d×N 的藏文字字典矩陣,d 是字向量的維度,N 是字典的大小,以此構造一個字母到字母嵌入的查找表,將輸入的藏文字母轉換為字母嵌入向量,作為模型的輸入。研究表明,使用大規模無監督學習得到的字母向量作為輸入矩陣的初始值比隨機初始化有著更優的效果。此處使用word2vec[8]在藏文語料庫預訓練獲得字母向量,取值d=300,N=152。
在此創建名為BiGtCFCMTC(BiGRU three CNN FC Modle of Tibetan Checking,雙向GRU 三卷積全連接網絡)的模型。
藏文字校對任務通常可以認為是判斷基于藏文字母序列組合的合法性的任務。藏文字中一般最多有7 個藏文字母,7 個字母之間有嚴格文法規定,它們之間的組合關系非常緊密,前面的字母會影響到后面字母的選擇,同時,后面字母的出現也影響著前面字母的選擇。所以,為抽取其相互關系的語義在此采用雙向GRU。
藏文字經過循環網絡GRU 語義抽取后,對其輸出部分分別進行拼接,形成新的語義矩陣M7×300。然后,用三個大小分別為 2×300、3×300、4×300 卷積核作卷積和池化運算,所得結果作連接成向量,作全連接并用Softmax 函數進行歸一化處理。藏文字校對模型框架如圖1 所示。
雙向GRU 的目的是解決單向GRU 無法處理后文信息的問題。單向的GRU 只能在一個方向上處理數據,雙向GRU 的基本思想則是提出每一個訓練序列向前和向后分別是兩個循環神經網絡,且這兩個網絡都連接著一個輸出層。圖2 展示的即是一個沿著時間展開的改進雙向雙層GRU 神經網絡模型(Bi-GRU),可用來獲得字母序列的標注信息。Bi-GRU 轉化函數如下:

圖1 藏文字校對模型框架

圖2 雙向雙層GRU 神經網絡模型
向后推算(backwardpass):

需要注意的是,一個現代藏文字最多7 個字母,向后推算部分是從最后一個字母開始,即t 從6遍歷至0。
向前推算(forwardpass):
向前推算與后向推算部分類似,向量上的箭頭方向相反,而且它是從句子的第一個詞掃描至最后一個字母,在7 字母的情況下,則t 從0 遍歷至6。公式如下:

在向前推算中輸入向量由兩個向量組合而成:向前推算第t 個字母的向量xt和后向推算第6 個字母到第t 個字母積累的歷史信息的串聯拼接。
在藏文字校對中,這個模塊的輸入為藏文字的第一個字母到最后一個字母,最多有7 個字母,達不到7 個字母用-1 補齊。經雙向GRU 處理后,輸出為 hi(hi∈R1×d, d =300, 0≤i≤6),把 hi全部拼接后得到矩陣 M7×300:

對藏文字局部特征的提取可利用CNN 來完成。CNN 是一種前饋神經網絡,其模型結構主要包括輸入層、卷積層、池化層、全連接層和輸出層幾部分。
在輸入層操作中,雙向雙層GRU 神經網絡的輸出 hi拼接成矩陣 M7×300(hi∈R1×300,其中,1 表示一個字母,300 是字母向量維度)作為輸入,特征向量為hi包含了第i 字母前后的全部語義特征。
卷積操作主要完成特征提取的工作。藏文字中一般前2 個、3 個和4 個字母之間需要嚴格遵守文法的規定,元音和后兩個字母相對比較簡單不易出錯。所以,通過設置大小為 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為全連接權重,n 為偏移項,p 只有兩個值。
采用反向傳播機制,使用自適應學習率的隨機梯度下降算法來訓練模型中的權重矩陣和偏置項,通過最小化交叉熵來優化模型。交叉熵代價函數為:

其中,r 為訓練數據集大?。籧 為類別數,此處值為2;y 為預測類別為實際類別;λ2||θ||2為 L2正則項。
設置損失閾值T,當損失函數Lloss小于T 時,視為模型收斂。在此收斂狀態下的參數優化情況得到BiGtCFCMTC 模型的最優權值,使用測試文本集來對此時的最優化模型進行驗證,再通過對比分類器精度和泛化能力來評估改進算法的性能。
實驗使用的藏語語料由青海民族大學藏文信息處理與軟件研究所提供。此語料是中國西北五省區藏區初中藏語文教材中的課文, 測試語料包含了73155 個藏文字,其中,正樣本占55.1%,負樣本占44.9%。
首先,用人工方式對訓練語料采用前文所述方法進行預處理。實驗采用TensorFlow2.0 框架,構建上述神經網絡模型,并使用語料訓練網絡的權值,不斷迭代,直到算法收斂。實驗在內存為16GB、GPU內存為8 GB 的Windows 系統上進行。程序采用Python 語言進行編程模型中的超參數:上下文窗口長度 k =3,藏文字母向量長度 d =300,隱藏層單元數 h = 128,初始學習率 α = 0.1,Dropount 比率 p =0.5,Batchsize 值為 128。
使用上述方法在語料中進行實驗,對藏文的字母標注結果用標準bake-off 打分程序來計算準確率P,召回率R。準確率和召回率的調和平均值F。經實驗,所提出的新模型BiGTCFCMTC 的藏文字校對準確率為93.95%,召回率為94.17%,F 值為94.06%。
新提出的藏文字檢錯雙向GRU 三卷積全連接網絡模型在73155 個藏文字語料上進行實驗,獲得較為理想的結果。實際工作中,模型憑借GPU 的運算能力可大大縮短深度神經網絡模型的訓練時間,該網絡模型的方法也更容易推廣應用到其他NLP中序列標注的任務,具有一定的通用性和實用價值。