王燕鳳
(西北民族大學,甘肅 蘭州)
隨著“互聯網+”時代的到來,數字辦公成為主流,數字圖書也越來越多,在這一背景下文本自動校對的需求越來越迫切,中文文本自動校對逐漸成為熱門研究課題。目前常用的文本自動校對系統大多存在算法復雜、工作量大、耗費時間多等弊端,實用性較差。本研究設計了一種基于自然語言處理的文本自動校對系統,并對其應用效果進行了實驗分析。
1.1.1 語料庫的構建
該系統字詞校對功能的實現方式是檢查相鄰的字與字之間、字與詞之間、詞與詞之間是否存在錯誤。本研究統計了2020 年1-12 月份《人民日報》中的文章,共計377 萬字,整理成一個18.5 M的語料庫。通過分詞和詞性標注處理,從字詞組合特點、詞性等方面綜合分析系統進行自動化文本校對處理時的規律特點。實際上,使用大數據技術進行數據自動分析、整合,建立語料庫后,應定期根據人們用詞習慣來更新語料庫的內容,提升自動校對的準確度。
1.1.2 基于接續關系的查錯
本研究根據字詞間的二元接續關系檢查目標字串附近字詞的相鄰關系。假設有一個字串為A1A2…Ai-1AiAi+1…An,如果需要判斷Ai(這里Ai為單個漢字或詞語)與相連字詞間的關系,根據語言學中的”二元模型”理論,只需要檢查Ai-1和Ai,以及Ai和Ai+1的關系即可。在一個包含了海量字詞的語料庫中,假設從Ai-1到Ai的轉移概率為P(Ai/Ai-1),并且P 滿足一定的閾值限定,則認為Ai-1和Ai存在二元接續關系。在文本自動校對系統的應用中,要想判斷Ai是否出錯,可以先判斷Ai-1和Ai是否接續。如果接續,則Ai沒有出現錯誤,完成本次查錯;如果不接續,還需要繼續判斷Ai和Ai+1是否接續。如果兩者也不接續,可以認定Ai出現錯誤[1]。
基于語法成分的查錯策略如下:首先利用規則庫中的規則處理被檢查的句子,成功識別出該句子中的主語、謂語等成分塊;然后按照“從下往上”的順序,依次進行短語、短句的結構糾錯校對。此時,斷句所使用的標點符號、空格,都可能影響自動校對系統的準確性,需要引起重視。文本自動校對系統在語法查錯時,需要提前進行句子的預處理,進行相關短句的串聯和捆綁,從而起到提高識別精度、保證分析結果正確的效果[2]。對于句子中的不同成分(如主語、謂語、賓語、補語等),采取的識別和檢查策略各有不同,這里以謂語為例,識別和檢查算法如下:

1.3.1 建立依存關系
本系統采用基于實例的語義查錯,具體方法為:確定待校對的句子后,首先對該句子的組成結構展開分析。收集網絡系統中相關的句子案例,組成一個集合n。分別計算集合n 中每一個實例與待校對句子的相似度,并挑選出相似度最高的實例i。將i 與待校對句子進行對比,即可得出查錯結果。該方法雖然操作起來比較簡單,但是由于集合n 中的實例數量較多,語義相似度計算的工作量大。為了減輕相似度計算的工作量,本研究提出了一種基于依存關系的解決辦法。根據語義依存語法,詞之間的關系是有方向的,根據兩者之間方向的不同,可以建立起支配與被支配的關系,這種關系就是依存關系。其中,支配詞又叫做中心詞,可以表現它所在短語的主要語法、語義特征[3]。
1.3.2 句子相似度計算
語義相似度計算是語義查錯的關鍵,利用依存關系進行相似度計算時,只需要考慮那些有效搭配(全句核心詞和直接依存于其有效詞組成的搭配)之間的相似程度。通常情況下,句子中的有效詞主要是動詞、名詞和形容詞。現在以2 個例句為例,介紹計算方法。
例句1:事發后,傷員被及時送往就近醫院救治。
例句2:晚上七時左右,所有傷員被送到了醫院。
根據語義依存關系構建兩個例句的依存樹,見圖1。
根據圖1 可知,在例句1 中,“送往”是關鍵詞,搭配結構是:送往__傷員、送往__醫院、送往__救治;例句2 中,“送到”是關鍵詞,搭配結構是:送到__傷員、送到__醫院。這樣一來,只需要計算兩者之間的相似程度即可,從而簡化了相似度計算的工作量,并且對提高校對結果的精確度也有一定幫助。相似度計算公式為:

圖1 例句1 和例句2 的依存樹

結合表1 的權重定義,例句1 和例句2 的相似度為:

表1 搭配匹配權重的設計
根據相似度結果,將待檢測句子與相似度最高的句子進行對比,即可判斷是否存在語義錯誤,從而完成語義校對。
1.4.1 構造易混淆詞典
不同于上文介紹的字詞查錯和語法查錯,文本自動校對分為2 方面的內容,即查錯和糾錯。糾錯是根據查找出來的錯誤,提出相應的改正策略。針對常規糾錯方法存在的弊端,本研究在設計文本自動校對系統的糾錯模塊時,吸取了上述方法各自的優勢,提出了一種新的糾錯方法。首先,綜合考慮了中文文本中常見錯誤的類型,以及每種錯誤的特征,完成有關詞典內容的收集,作為系統自動識別錯誤用詞的參照物。一旦發現文本錯誤,應結合同現概率表,選出一些可替換的詞匯作為糾錯建議。如果無法產生糾錯建議,則采用人工添加的方式,將糾錯建議和對應的錯誤字串一同添加到易混淆詞典中,使得易混淆詞典具備了自學能力。這樣就可以不斷的豐富詞庫中的易混淆詞,從而讓文本自動校對系統的糾錯能力得到持續提升[4]。易混淆詞典的自學習原理見圖2。

圖2 易混淆詞典的自學習原理
1.4.2 糾錯算法編程
現階段,文本自動校對系統可以對一些字詞級錯誤給出相應的糾錯建議,但是對于語法錯誤、語義錯誤則很難給出準確的糾錯建議。因此,本研究使用了糾錯產生算法對除字詞級錯誤以外的其他錯誤類型進行糾錯。以例句3“我們認為可疑延長時間。”為例,“可疑延長”是文本自動校對系統查找出的錯誤字。糾錯產生算法的編程思路如下:

本研究設計的文本自動校對系統由校對預處理模塊、查錯模塊(包括字詞級查錯、語法級查錯、語義級查錯3 部分)和校對糾錯模塊組成。其功能實現流程為:
步驟1:輸入或打開一個文本,按照順序讀入單句,并進行文本的預處理。采取雙向模式匹配法,依托預選設定好的詞庫,識別漢字文本的組成結構,確定詞組的詞性。
步驟2:構造字頻向量、二元詞性同現頻率表,得到查錯知識庫。利用該系統的查錯模塊,識別詞組之間的連接順序、連接方式是否存在錯誤,完成基礎糾錯任務。另外,通過對句子中成分是否完整進行分析,精準識別語法錯誤,這需要選用依存文法對語義錯誤進行查錯。
步驟3:借助于易混淆詞典、同現概率表,對上一步中查找出來的錯誤進行定位,并生產相應的糾錯建議,完成糾錯。
步驟4:糾錯完畢后,執行一個判斷程序“文本處理是否結束?”如果有未處理的文本,則返回步驟1,繼續讀入尚未處理的文本,并重復上述步驟;如果文本處理完畢,則由系統自動生成語料文本,并在人機交互界面上顯示處理結果,文本自動校對程序結束[5]。
從某雜志的127 篇文章中,挑選出185 個正確句子,以及180 個存在錯誤的句子,其中有50 個字詞級錯誤句子、110 個語法級錯誤句子和20 個語義級錯誤句子。部分病句如下:
(1)他是本地一家知名企業的總載。(“載”為錯別字,應為“裁”)
(2)本縣蘋果的品種非常多,這里無法一一例舉。(“例舉”應為“列舉”)
(3)德國總理授予法院獲得簽發“禁止未成年人進入酒吧證”的權力。(多字,應刪除“獲得”)
將其放到同一個文本中,輸入本研究設計的文本自動校對系統。為保證系統校對結果的客觀性和直觀性,本次實驗中引入了以下參數:
(1)召回率=正確發現句子數/實際錯誤句子數×100%。
(2)誤報率=(發現錯誤句子數- 正確發現句子數)/ 發現錯誤句子數×100%。
(3)查準率=1- 誤報率。
文本自動校對結果見表2。

表2 測試結果
結合表2 數據可知,本研究設計的文本自動校對系統具有較高的召回率和查準率,基本上能夠維持在70%以上。其中,該系統對于文本中語法級錯誤句子的召回率和查準率最高,分別達到了89.1%、89.2%。
本研究設計的文本自動校對系統可以實現字詞查錯、語法查錯、語義查錯,并且能夠對查找出來的文本錯誤,提出相應的糾正建議。從實驗結果來看,該系統對常見文本錯誤的查準率和召回率均達到了70%以上,表明本研究設計的文本自動校對系統可以快速、準確地完成對目標文本的錯誤查找。下一步,還需要繼續擴充語料庫,并且不斷優化語料庫的語言規律,從而使文本自動校對系統更廣泛地適用于不同領域、不同風格的文章。