珠 杰, 李天瑞,劉勝久
(1. 西南交通大學信息科學與技術學院,四川 成都 610031) (2. 西藏大學計算機科學系,西藏 拉薩 850000)
拼寫檢查作為自然語言處理的研究內容之一。早在20世紀60年代,IBM Thomas J. Watson 研究中心在UNIX實現(xiàn)了一個TYPO英文拼寫檢查器[1];1971年,斯坦福大學的Ralph Gorin在DEC-10機上實現(xiàn)了Spell[2]英文拼寫檢查程序。目前英文的檢查拼寫錯誤主要采用N-gram 分析法和查詞典法;糾正拼寫錯誤主要采用誤拼詞典法、詞形距離法、相似鍵法、骨架鍵法等[3]。
藏文作為拼音文字也存在拼寫檢查的問題。針對藏文音節(jié),有如下幾種拼寫錯誤。
從目前的研究現(xiàn)狀來看,藏文拼寫檢查和自動校對方法的研究文獻很少,文獻[4]中以線性化的藏文音節(jié)為研究對象,提出了利用3元模型的藏文音節(jié)校對方法,該模型丟失了藏文縱向拼寫的特征,校對效果沒有被實驗驗證;文獻[5]中提出了藏文音節(jié)規(guī)則來校對藏文音節(jié)設想,但沒有具體的模型,也沒有相應的校對算法;文獻[6-7]利用藏文音節(jié)規(guī)則模型,開始探索藏文音節(jié)的拼寫檢查問題。本文認為藏文文本校對需要從藏文音節(jié)的拼寫檢查、梵音轉寫藏文的校對、藏文詞語校對、藏文接續(xù)關系檢查、時態(tài)檢查入手,因此首先需要解決拼寫檢查的問題。如何解決藏文音節(jié)的拼寫檢查,本文依據藏文音節(jié)規(guī)則模型,探討藏文音節(jié)的拼寫檢查算法,并通過實驗驗證該拼寫檢查算法的有效性。
s論文余下章節(jié)結構如下:第2部分描述了藏文音節(jié)的結構及規(guī)則模型;第3部分提出了藏文音節(jié)識別算法和藏文音節(jié)拼寫檢查算法;第4部分通過2組實驗驗證算法的有效性;第5部分是結論與展望。
藏文音節(jié)結構以基字為核心,既有橫向拼寫又有縱向拼寫。前加字、基字、后加字、再后加字是橫向拼寫;上加字、基字、下加字和元音是縱向拼寫,具有十分復雜的音節(jié)結構。藏文音節(jié)中不包括梵音轉寫藏文,藏文音節(jié)的基本結構中共有7個位置。根據藏文的語法,各個位置上出現(xiàn)的字符其性質與數量均有一定的限制,相互之間形成一種約束關系。藏文音節(jié)的基本結構如圖1所示。
圖1 藏文音節(jié)的基本結構
藏文音節(jié)規(guī)則模型(TSRM)是為藏文音節(jié)拼寫檢查算法建立的,分3種不同的模型,分別為模型-1、模型-2、模型-3,如圖2、3、4所示。模型-1是藏文音節(jié)的基本模型,模型-2是從模型-1過渡到模型-3的中間簡化過程,模型-3才是為藏文音節(jié)拼寫檢查算法建立的簡化模型。文獻[8]介紹了模型建立和簡化的詳細過程,下面簡要描述模型的建立和簡化的過程。
藏文音節(jié)規(guī)則模型-1是根據藏文的音節(jié)結構建立的一個模型,該模型中以基字為核心,在元音和后加字的作用下構成一個音節(jié),分別用1、2、3、4、5、6、7表示前加字、上加字、基字、下加字、元音、后加字和再后加字在音節(jié)中的位置。在實際寫法中除了構造位3不能空之外,其余位置均可以為空。當一個字符構成音節(jié)時,該音節(jié)隱含了元音“”和后加字“”的成分。
定義1構造位是指藏文字符或在字符串在模型中的特定位置。
圖2 藏文音節(jié)模型?1圖3 藏文音節(jié)模型?2圖4 藏文音節(jié)模型?3
模型-2是對模型-1的簡化,是一個過渡的模型。根據藏文音節(jié)的上加字+基字、基字+下加字、上加字+基字+下加字的組合關系,模型-1中的構造位2、3、4合并到模型-2的構造位2上,成為基字的一部分,并稱之為擴展基字;模型-1的構造位7,即再后加字歸并到后加字集合中,成為模型-2的構造位4,簡化后的模型-2如圖2所示。這樣,模型-2中的構造位1是前加位、2是擴展基字位、3是元音位、4是后綴位。模型-2中構造位1和3的元素與模型-1中的構造位1和5的元素相同,構造位2的擴展基字集合為:
構造位4的后綴集合為:
定義2后綴是指模型-2、模型-3中的構造位4和3的元素。
模型-3是根據藏文字性組織理論進一步簡化模型-2的結果。藏語語音理論體系中,藏語分為元音和輔音,并對每一個部分進行了細化。對于30個輔音字母進行了字性分類,分為陽性、中性和陰性3種,其中陰性又包括準陰性、極陰性和純陰性3種,共計是5種分類。輔音字母中提取出來的前加字、后加字也進行了上述5種分類。根據藏文前加字、基字的語音強弱關系來決定前加字與基字之間的組合關系。組合關系為陽性與陽性、陽性與陰性組合;陰性與陰性、陰性與中性組合;中性與陽性、中性與陰性組合;中性與陽性、中性與陰性組合;極陰性與中性、極陰性與陰性、極陰性與極陰性組合。在模型-2的基礎上,通過前加字與擴展基字的語音組合關系進行進一步簡化,變成模型-3,如圖4所示。模型-3的構造位1為前綴位,2為元音位,3為后綴位。
定義3前綴是指模型-3中構造位1中的元素。按照該模型,一個符合文法的藏文音節(jié)轉化成了前綴+元音+后綴的形式,其中一些音節(jié)可能沒有元音和后綴。
構造位2和3的元素與模型-2的構造位3和4的元素相同,構造位1的前綴集合(規(guī)則集合)為:
從如上描述中可以看出模型-3是模型-2的簡化,模型-2是模型-1的簡化。文本通過模型-3來設計拼寫檢查算法。
本文討論的藏文拼寫檢查算法中,以現(xiàn)代藏文音節(jié)為研究對象,利用藏文音節(jié)規(guī)則模型中的模型-3討論拼寫檢查的問題,包括藏文音節(jié)識別算法和拼寫檢查算法。
藏文音節(jié)作為拼寫檢查的研究對象,正確識別藏文音節(jié)至關重要。一般的藏文文本中,藏文音節(jié)的分割不僅僅依賴于藏文音節(jié)點,還有藏文數字、藏文符號、其他語言的符號、字符都可能成為藏文音節(jié)分割點,它們在文本中一般起到音節(jié)點的“代言人”作用。而這種語言現(xiàn)象無疑導致了藏文音節(jié)識別的難度。因此,在藏文音節(jié)識別算法的循環(huán)中,判斷是否為藏文音節(jié)點、藏文數字、藏文符號或其他語言的字符,如果是則該位置是藏文音節(jié)的分割處,否則讀取下一個字符。另外,算法中還要判斷藏文音節(jié)的長度是否大于7,如果大于7說明不是一個規(guī)則的藏文音節(jié)。經過處理的輸出結果為一個標準的藏文音節(jié),藏文音節(jié)識別算法如圖5所示。
圖5 藏文音節(jié)識別算法
識別出來的音節(jié)是否為一個正確的藏文音節(jié),需要拼寫檢查算法來完成拼寫檢查任務。根據模型-3,本文提出的拼寫檢查算法的總體想法是:把藏文音節(jié)拆成三個部分,即前綴部分、元音或音節(jié)點部分、后綴部分。一個音節(jié)的拼寫檢查以元音為分界線,先檢查模型-3中構造位1的元素,即前綴部分與Trule集合中的元素進行匹配;再檢查構造位2的元素,即元音;然后檢查構造位3的元素,即后綴部分與Tpostfix集合中的元素匹配,具體算法如圖6所示。
圖6 拼寫檢查算法
算法實現(xiàn)過程舉例如下。
在測試中進行了2組實驗,實驗1為初步測試。初步測試中算法1和2對6種不同的生語料進行了拼寫檢查測試。由于測試語料中除了藏文符號、數字外,各種語言的符號、數字混排情況嚴重,算法1的音節(jié)識別上,如果缺少這些符號、數字因素的考慮,就會產生許多錯誤標記。實驗2為算法改進測試,音節(jié)識別算法中考慮了語料中包含的特殊字符、空格、數字字符等內容,以便能夠正確識別出藏文音節(jié),在此基礎上進行算法2的拼寫檢查。
測試語料是從網上選擇6種不同大小、不同內容的藏文文本,采用的編碼為國際標準ISO/IEC10646。其中,67KB的語料1是一篇研究西藏苯教的文章;55KB的語料2是一篇介紹五位修行者的文章;43KB的語料3是一篇介紹苯教在安多、康區(qū)傳播歷史的研究文章;41KB的語料4是一篇介紹西藏旅游產業(yè)與西藏經濟發(fā)展關系的文章;40KB的語料5是一篇介紹西藏旅游的文章;23KB的語料是一篇介紹西藏2009年上半年經濟發(fā)展狀況的文章。
在藏文拼寫檢查測試中,一般采用召回率、正確率、F值來評測拼寫檢查算法的性能,具體公式如式(1)所示。
其中r為召回率;find為預校對文本中正確識別的錯誤音節(jié)數,error為預校對文本中實際存在的錯誤音節(jié)數,參數0.01為平滑系數。
其中a為正確率,find為預校對文本中正確識別的錯誤音節(jié)數,accurate預校對文本中正確的音節(jié)判錯的個數。
其中F為調和平均值。
表1 藏文音節(jié)錯誤標記統(tǒng)計表
針對音節(jié)字符串中含有空格、藏文符號、藏文數字、其他語言符號的音節(jié)點“代言人”而造成的拼寫錯誤問題(錯誤類型1、2、3),在算法1的實現(xiàn)中需要消除符號、數字等各種因素的干擾。在實驗數據中可以看到,這種干擾造成的音節(jié)判斷失誤問題成為主要因素。因此,算法1的循環(huán)判斷條件中添加了藏文符號、藏文數字、數字、轉義符、其他符號的考慮因素,其中編碼為“0020”、“3000”是兩種空格,具體如表2所示。
表2 數字、符號和特殊后綴表
針對含有梵音轉寫藏文而造成的錯誤問題(錯誤類型4),由于梵音轉寫藏文的拼寫規(guī)則與藏文傳統(tǒng)文法的規(guī)則是截然不同,因此,無法用算法2來判斷其拼寫的正確性。
在算法1和算法2中增加條件之后,再次對語料1至6進行了測試,具體測試結果數據如表3所示,錯誤分類與表1相同。
根據評測標準,召回率、正確率和F值結果如表4所示。
表3 藏文音節(jié)錯誤標記統(tǒng)計表
表4 召回率、正確率和F值
表5 誤判的藏文音節(jié)表
從召回率來看,除了31個音節(jié)不能判斷拼寫的正確性外,可以檢測其余藏文音節(jié)拼寫的正確性。從正確率來看,拼寫檢查算法對梵音轉寫藏文的拼寫檢查是無能為力的。因此, 在正確識別藏文音節(jié)的前提下,不考慮梵音轉寫藏文時拼寫檢錯能力達到99.8%(31/18780[8])。
根據藏文文本校對研究欠缺的現(xiàn)狀,文本提出了基于藏文音節(jié)規(guī)則模型的藏文拼寫檢查算法,包括音節(jié)識別算法(算法1)和拼寫檢查算法(算法2)。算法1主要完成音節(jié)識別功能,算法2主要完成拼寫檢查功能。通過實驗可以看到,音節(jié)識別的好壞直接影響拼寫檢查的效果,在正確識別藏文音節(jié)的前提下,不考慮梵音轉寫藏文時,藏文音節(jié)拼寫檢錯率能達到99.8%。下一步的工作是在藏文音節(jié)拼寫檢查的基礎上,研究藏文接續(xù)關系的檢查、藏文動詞時態(tài)的檢查、拼寫校正、文本校對等的內容,為藏文文本校對應用領域提供理論基礎和方法支持。
[1] Kukich K. Techniques for Automatically Correcting Words in Text[J]. ACM Computing Surveys, 1992, 24(4): 377-438.
[2] James L P. Computer Programs for Detecting and Correcting Spelling Errors[J]. Communication of the ACM, 1980, (12): 676-687.
[3] Joseph J P. Automatic Spelling Correction in Scientific and Scholarly Text[J]. Communication of the ACM, 1984, (4): 358-368.
[4] 多杰卓瑪. N元模型在藏文文本局部查錯中的應用研究[J]. 計算機工程與科學, 2009, 31(4): 117-119.
[5] 劉文香. 藏文文本詞校對模型研究[J]. 西藏大學學報(自然科學版), 2009, 24(2): 70-74.
[6] 安見才讓. 基于分段的藏字校對算法研究[J]. 中文信息學報, 2013, 27(2): 58-64.
[7] 珠杰,歐珠,格桑多吉等. 藏文音節(jié)規(guī)則庫的建立與應用分析[J]. 中文信息學報, 2013, 27(2): 103-111.
[8] 珠杰,李天瑞,格桑多吉等. 藏文音節(jié)規(guī)則模型及應用[J]. 北京大學學報(自然科學版), 2013, 49(1): 68-74.