才智杰,孫茂松,才讓卓瑪
(1. 青海師范大學 計算機學院 藏文信息處理教育部重點實驗室,青海 西寧 810008) (2. 清華大學 計算機科學與技術系 清華信息科學與技術國家實驗室,北京 100084)
拼寫檢查是自然語言處理領域一項具有廣闊應用前景和極具挑戰性的研究課題,在語料庫建設、文本編輯、語音和文字識別等諸多方面具有廣闊的應用前景。近年來藏語自然語言處理技術得到了快速發展,隨著統計技術和深度學習技術的引入,藏語自然語言處理也跨入了大數據時代,信息的準確度尤為重要,為此學者們圍繞藏文拼寫檢查問題展開了一系列研究。
由于藏文是一種由字母拼接成字、字組成詞、詞搭配句、句表達意的文字,因此藏文拼寫檢查包括字級、詞級和語法級。字級檢查非真字性錯誤,判斷藏文字是否符合文法中的構字原則,單獨考慮字本身,與上下文無關;詞級和語法級是真字拼寫檢查,判斷符合構字原則的字在該語境中是否正確。英文和漢文只有詞級和語法級拼寫檢查,不存在非真字性問題。藏文文本中非真字性錯誤出現的頻率很高,是藏文拼寫檢查的重點,目前藏文拼寫檢查技術主要集中在非真字拼寫檢查研究[1]。本文通過分析藏文字的構成原則,提出了一種基于規則的藏文非真字拼寫檢查方法。本文結構如下: 第一部分分析了拼寫檢查的研究現狀;第二部分在介紹藏文字向量模型的基礎上,建立了基于規則約束的藏文字向量模型;第三部分介紹了藏文字拼寫檢查模型及算法,并實驗驗證了算法的有效性;第四部分是結論與展望。
1960年,IBM Thomas J Watson研究中心在IBM/360和IBM/370上用UNIX實現了一個TYPO英文拼寫檢查器[2],1971年,斯坦福大學的Ralph Gorin在DEC-10機上實現了一個英文拼寫檢查系統Spell[3],到1991年,已有15種西文自動拼寫檢查的商品化系統問世,廣泛應用于寫作、教育、出版等行業。英文拼寫檢查包括詞級和語法級拼寫檢查,采用基于詞典、基于規則、基于統計和自動學習語言知識的方法[3-4],第三、第四種方法不但需要大量的訓練語料,還需要在不斷的人工交互下學習模型,而訓練語料和人工交互學習都比較困難,因此主要采用基于詞典和基于規則的拼寫檢查技術。1980年起開始了漢文詞自動拼寫檢查技術的研究,發展速度很快,并取得了較好的成果,且有部分成果已經商品化[5-10]。漢字是方塊象形字,不存在字級拼寫檢查,只有詞級和語法級拼寫檢查,拼寫檢查技術基本與英語類同。
從20世紀90年代起,學者們開始了藏文拼寫檢查技術的研究,目前主要針對非真字拼寫檢查技術展開研究。藏文非真字拼寫檢查主要采用兩種技術,一是收集所有可能出現的藏文字以建立字典,采用字典配匹法;二是根據藏文字的特點構建規則,根據規則完成拼寫檢查。文獻[11]分析了藏文字的結構和構件的搭配規則,列舉了藏文字的錯誤類型,沒有具體研究拼寫檢查方法;文獻[12]通過建立字表和詞表進行查錯,作者稱對封閉語料的查錯準確度較高,但對開放語料的查錯率不大樂觀,沒有給出具體的測試數據;文獻[13]通過建立字丁(構件)的三元模型進行查錯,模型規模龐大,數據稀疏嚴重,丟失了藏文縱向拼寫的特征,沒有給出具體的測試數據,作者稱測試效果不是很好;文獻[14]將七個構件的藏文字拆分成前綴、元音或音節點和后綴等三部分,建立每部分的對應的表,每部分通過查表進行拼寫檢查,在沒有考慮梵音轉寫藏文的情況下,拼寫錯誤檢查的準確率為99.8%;文獻[15]在研究藏文字、詞和接續關系拼寫檢查的基礎上,設計了藏文拼寫檢查系統框架,其中的字拼寫檢查技術采用了文獻[14]的方法,其準確率為53.825%~67.408%;文獻[16]對藏文字的字母組合分段處理,分成了前段和后段兩部分(把元音歸入了前段),建立前段庫Pretibet和后段庫Backtibet,對每段通過查表的方式完成拼寫檢查,實驗對含84個藏文字的一段文本進行了實驗考察。以上文獻都采用了字典配匹法,這種方法適合于封閉語料,但對開放語料效果不佳。文獻[14]的實驗分析中也提到,由于31個前綴部分未收錄在字典中而出現了拼寫檢查錯誤,說明了采用字典配匹法的不足。藏文文法中字的構成原則非常完善,如果把藏文構字原則用計算機能識別的方法表示,以此完成拼寫檢查,其拼寫檢查效果將有很大提高。因此,本文通過分析藏文文法中字構成原則,利用藏文字向量模型將藏文字用計算機易于操作的向量表示,建立了基于規則約束的藏文字向量模型,進而設計該模型下的藏文字拼寫檢查模型及算法。算法簡單易實現,經測試算法對非真字拼寫檢查的平均準確率達99.995%,平均每秒檢查1 060個字。
藏文字自公元七世紀松贊干布時期創制并大力推廣和應用以來,進行了三次較大規模的厘定,制定了詳實的現代藏文文法,使藏語言文字步入了規范化的軌道。第三次厘定后的藏文字和文法稱為現代藏文字(本文所提藏文字都指現代藏文字)及現代藏文文法[17],在現代藏文文法中對藏文構字及構件拼接規則有嚴格的規定。藏文字由30個輔音字母和4個元音字母組成,30個輔音字母可以做基字,其中的10個可以做后加字,后加字中的5個又可以做前加字,兩個可以做再后加字。藏文字結構上由基字、前加字、上加字、下加字、后加字、再后加字及元音組成,一個藏文字有且僅有一個基字,其他部分可能存在,也可能空缺。前加字、基字、后加字與再后加字按一定的約束規則橫向拼寫,上加字、基字、下加字和元音在基字所在的豎直方向上按約束規則縱向拼寫。組成字的各個字母稱作基本構件,簡稱構件[18],基字豎直方向上同時含上加字、基字和下加字的構件稱為疊字。

定義1藏文字可用向量集
A={(a1,a2,a3,a4,a5,a6,a7)|0≤a1≤5,0≤a2≤3,0 (1) 的元素表示,向量集A叫藏文字向量模型[20](the Vector Model of Modern Tibetan Text,VMTT),由此可建立藏文字的集合S到藏文字向量模型的對應關系f。 設S={s|s∈藏文字集}表示藏文字的集合,A表示藏文字的向量模型,則由式(1)所示。 (2) 定理1藏文字的集合S與藏文字向量模型A間的對應關系是單射。 故藏文字的集合S與藏文字向量模型A間的對應關系是單射。 用一維向量表示藏文字需要滿足以下三個條件: (1) 含七個分量; (2) 屬于向量模型A; (3) 七個分量a1、a2、a3、a4、a5、a6、a7滿足藏文字構件添加規則的約束條件。 條件(1)、(2)容易判斷,例如,條件(2)可通過分量a1、a2、a3、a4、a5、a6、a7的取值范圍0≤a1≤5,0≤a2≤3,0 表1 再后加字添加規則表 再后加字的添加規則僅與后加字有關,與其他構件無關,且后加字不受其他構件的影響,所以再后加字添加約束規則與其他規則獨立、無沖突。后加字和元音的添加沒有任何規則約束,即后加字和元音添加是自由的。前加字、上加字、基字和下加字的添加彼此制約,由藏文構件拼接規則可得藏文字前加字、上加字、基字和下加字拼接約束規則(稱之為基于向量模型的藏文字拼寫檢查規則1~7,Rule1-7),見表2~7。 表2 a1=0時上加字、基字和下加字的添加規則約束表 表3 a1=1時上加字、基字和下加字的添加規則約束表 表4 a1=2時上加字、基字和下加字的添加規則約束表 表5 a1=3時上加字、基字和下加字的添加規則約束表 表6 a1=4時上加字、基字和下加字的添加規則約束表 表7 a1=5時上加字、基字和下加字的添加規則約束表 定義2藏文字可用向量集 M={(a1,a2,a3,a4,a5,a6,a7)|(a1,a2,a3,a4,a5,a6,a7)∈A,且a6,a7滿足Rule11,a1、a2、a3、a4滿足Rule1-7} (3) 的元素表示,向量集M叫基于規則約束的藏文字向量模型(the Vector Model of Tibetan Text Based on Rule Constraint, VMTTRC)。 由此可建立藏文字的集合與基于規則約束的藏文字向量模型間的對應關系。 設S={s|s∈藏文字集}表示藏文字的集合,M表示基于規則約束的藏文字向量模型,則由式(3)及Rule1-7得: (4) 顯然可得: 定理2現代藏文字的集合S與基于規則約束的藏文字向量模型M間的對應關系是雙射。 定理2說明每一個現代藏文字都可以用基于規則約束的藏文字向量模型M中的元素表示,反之每一個M中的元素表示一個現代藏文字,即現代藏文字的集合與基于規則約束的藏文字向量模型等價。 藏文文本中經常出現七個雙音節字(下文稱為P1型)、五個特殊疊字(下文稱為P2型)和一個音譯疊字(下文稱為P3型)或音譯疊字、元音和后加拼接成的特殊藏文字,這些藏文字的構成不符合現代藏文構字原則,無法用基于規則約束的藏文字向量模型表示。在拼寫檢查時,我們建立了特殊藏文字表(表8),通過查表的方式完成該類字的拼寫檢查。 表8 特殊藏文字表 基于向量模型的藏文非真字拼寫檢查可采用以下模型,如圖1所示。 圖1 藏文非真字拼寫檢查模型 藏文非真字拼寫檢查模型的預處理模塊將藏文文本進行斷句和識字處理,并將字規范化。斷句可以按單垂符“|”或雙垂符“‖”或空格為邊界點,字間以音節分隔符“·”為邊界點,藏文字規范化部分主要采用還原法識別緊縮詞[21]。拼寫檢查模塊先對規范藏文字進行構件分解[22-23],并利用藏文字向量模型表示法將藏文字表示為向量,然后通過基于向量模型的藏文字構件約束規則1~7及特殊藏文字表進行拼寫檢查。 設s為規范藏文字,A為藏文字向量模型,拼寫檢查模塊流程如圖2所示。 基于向量模型的藏文字拼寫檢查的具體步驟為: 第一步: 構件分解; 第二步: 藏文字向量化; 圖2 藏文字拼寫檢查流程圖 第三步: 根據基于向量模型的藏文字約束規則及特殊字表進行拼寫檢查。 基于向量模型的藏文字拼寫檢查算法如下: 1: 輸入: 藏文字s2: 輸出: true或false,true時該字正確, false時該字為非真字3: Component decomposition(s,T); //分解s的構件,并存入到T中4: Vector quantization(T,a); //將T中構件向量化到a中5: if(a?A) //a不符合向量模型A6: if(s isP1型或P2型) output(true); //P1型和P2型為特殊藏文字7: else if(s is P3或P3與元、后的組合) output(true);8: else output(false);9: else if((a6,a7)?Rule1) output(false); //a6,a7不滿足規則表110: else if(a1=k and (a2,a3,a4)∈Rule k+2 ) output(true) k=0,1,2,3,4,5; //無前加字或前加字為或或或或,且符合Rule 2或Rule 3…或Rule 711: else output(false); 為了驗證模型及算法的有效性,我們研發了基于向量模型的藏文非真字自動拼寫檢查系統,并設計了兩組實驗。實驗一考察系統對實際語料中非真字的拼寫檢查效果,實驗二考察系統對各類非真字的拼寫檢查效果。實驗硬件環境為Intel core i5 2.40GHz、2GB內存的PC,軟件環境為Windows 7,系統由Delphi 2010開發。實驗語料及數據如下: 實驗一的語料包含11.7萬藏文字,將語料分成了四部分,分別對4個語料考察非真字的識別率和拼寫檢查耗時,每個語料保留了現代藏文字及特殊藏文字,刪除了特殊藏文字外的所有梵文字符、序號、數字、符號等。語料1選用了小學藏語文五年級(上冊)教材語料,規模含21 506個字;語料2選用了小學藏語文六年級(上冊)教材語料,語料規模含29 024個字;語料3選用了華丹薩迦巴專著中的詩歌專輯的一部分,語料規模含35 020個字;語料4為網絡語料,語料規模含31 450個字。其中語料1、2、3來自青海師范大學語料庫,語料4來自瓊邁文學網。實驗數據見表9,實驗中的耗時包括識字、規范化、構件分解、字向量化和拼寫檢查等操作所用的時間。表中方法A指的是文獻[14]的TSRM方法,方法B指本文所提出的基于向量模型的藏文字拼寫檢查方法。實驗結果如表9所示。 表9 基于向量模型的藏文非真字拼寫檢查(實驗數據1) 實驗二參考文獻[11]列舉的藏文錯字類型,主觀構建了包含各種錯誤類型的語料,考察對每種錯誤類型的拼寫檢查的準確率,實驗結果見表10。 表10 基于向量模型的藏文非真字拼寫檢查(實驗結果2) 實驗二表明本文提出的方法能夠識別各種類型非真字錯誤,驗證了規則的通用型和全面性。 本文通過分析藏文構字和構件拼接原則,建立了藏文字向量模型(VMTT)及基于規則約束的向量模型(VMTTRC),并構造了基于向量模型的藏文非真字約束規則,在此基礎上設計了基于向量模型的藏文非真字拼寫檢查模型及算法。算法先將藏文文本進行斷句、識字、字規范化、構件分解后,將規范藏文字表示為向量,通過基于向量模型的藏文字約束規則完成藏文非真字拼寫檢查功能。算法簡單易于實現,經對含117 000字的藏語語料測試,對非真字識別的平均準確率達99.995%,拼寫檢查的平均速度約為1 060字/s,滿足文本自動拼寫檢查的需求。今后在該研究基礎上,通過分析詞語的搭配方式及字、詞同現度,研究藏文真字的拼寫檢查方法,進一步完善自動拼寫檢查技術。



2.2 基于規則約束的藏文字向量模型














3 基于向量模型的藏文字拼寫檢查模型

3.1 基于向量模型的藏文字拼寫檢查模型



3.2 基于向量模型的藏文字拼寫檢查算法

3.3 實驗數據



4 結論與展望