楊文珍 徐豪杰 汪文妃 宣建強 趙 維 吳新麗 潘海鵬(浙江理工大學虛擬現實實驗室 浙江 杭州 310018)
盲文是盲人傳遞獲取信息的特殊文字。世界通用的布萊爾盲文符號每方有6個點位,依據點位的單點凹凸狀態,每方存在64種排列組合情況,盲人通過摸讀不同的點字符號讀取信息。漢語盲文是我國盲人摸讀書寫的文字符號,其對應的是漢字讀音而非字形[1]。
紙質盲文書籍厚重、制作繁瑣、成本高昂,且現有盲文書多以醫學、文學和法學類為主,知識陳舊且覆蓋范圍狹窄,無法滿足我國廣大盲人多領域、多層次的閱讀需求[2-3]。在當前信息無障礙社會的時代背景下,漢盲翻譯系統旨在將電子文本轉換為盲文以供盲人獲取更豐富的信息[4]。
19世紀50年代,黃乃先生主持設計了以普通話讀音為基礎、以漢語詞組為單位的現行盲文方案,該方案簡單易學的特點,使之成為中國大陸普及率最高的盲文方案。為簡化盲文,現行盲文通常省略聲調,單純由聲母方位和韻母方位組成,圖1為“夢想”的不帶調現行盲文。

圖1 “夢想”對應的現行盲文
本文設計開發的漢盲翻譯系統,能夠減少多音字的混淆錯誤,獲得較符合分詞連寫規則的分詞結果,有較高的綜合漢盲翻譯準確率,可以幫助盲人摒棄厚重的盲文書籍,獲取更豐富的信息,具有較強實用性。
不同于英語盲文,字母和盲文符號之間有一一映射關系,漢盲翻譯是包含多層次轉換的復雜過程。漢語注重語義理解,故漢語盲文的翻譯過程不是簡單的逐字轉換,而是先要根據盲文分詞連寫規則,對文本做分詞連寫處理,然后再轉換成對應的盲文[5-6]。分詞連寫原則可以減少語句歧義,避免音節結構過于分散,大幅度提高了盲文閱讀效率。中文詞語由開放的漢字組成,如果沒有嚴格意義上的組詞要求,任意漢字組合在一起都可能成為一個詞,詞與詞之間并不像英文文本有空格作為界限,中文分詞一旦出現偏差,極有可能影響對句子的語義理解。因此,中文分詞是漢盲翻譯的難點之一,且在語音識別、搜索引擎等領域也存在大量應用需求[7]。
目前,中文分詞方法按原理主要可以分為三類:基于詞典機械匹配法、基于概率模型統計法和基于深度神經網絡的語義理解法。后兩類分詞方法相對詞典匹配方法更能克服中文分詞中存在的歧義和未登錄詞這兩大難題,但是需要通過大量語料集進行訓練,建立語法規則庫或含有語義信息的詞向量,算法實現過程比基于詞典匹配方法繁瑣許多,不適用于嵌入式弱計算平臺。
基于字典的分詞方法性能取決于詞典的詞匯覆蓋率,某種程度上依賴于存儲豐富詞匯的詞典。此外,詞典匹配分詞方法的準確率與匹配策略、掃描方式也存在關系,由此可將詞典匹配分詞法劃分為四類:逆向最大匹配、正向最大匹配、逆向最小匹配和正向最小匹配。語言學規律已經表明,漢字中詞組長度與文本所要表達的信息量大致呈正相關。因此,當詞典中匹配到多個詞并且詞與詞之間是包含關系時,最長的詞組序列往往是首選。此外,中文語義表達中往往將重要的主干成分后置,所以逆向最大匹配的切分精確度會稍高于正向最大匹配。
根據盲文的表達方式和盲人的閱讀習慣,漢語盲文分詞應遵守漢語的基本語法邏輯和使用習慣,并符合漢語盲文的分詞連寫規則,以幫助盲人高效摸讀獲取知識和信息。為了減少單音節詞可能帶來的歧義以及為了簡化漢語盲文篇幅,漢語中的部分表達在盲文體系中需要連寫處理。另外,為避免音節長度過長對盲人拼讀大段盲文文本造成壓力,詞的長度通常不超過四個音節[8]。對于四音節及四音節以上的詞語,可以根據語義適當縮短單詞,例如“中華民族偉大復興”,應該分詞為“中華|民族|偉大|復興”。而對一些慣用語,要適當延長以減少零散單字,比如“開心得拍起了手”,建議分詞為“開心得|拍起了手”,其中“得”“了”作為助詞分別前連“開心”“拍起”,以減少盲文方數。由于漢語盲文分詞連寫規則繁多,完全依賴計算機自動實現盲文的分詞連寫存在困難。
黃河燕等[9]根據盲文分詞連寫要求建立了多條基于SC文法的特定規則,在字典匹配的分詞算法基礎上,對分詞結果進行標記,并根據規則庫進行連寫處理。由于盲文分詞連寫規則繁雜,該方法很難涵蓋所有規則,且未考慮多音字混淆問題。文獻[10-11]對盲文分詞連寫規則庫進行改寫和補充,同時利用統計模型對分詞結果進一步排歧,但算法復雜度高,效果難以提升。楊潮等[12]從語料中提取出現過的連寫字詞組合,建立連寫示范庫,對文本進行基于連寫組合庫的切分處理。呂先超[13]基于規則分詞和連寫示范庫相結合的漢盲轉換模型,開發出一款漢盲自動轉換軟件SunBraille,主要面向Web和服務器端的應用。Wang等[14-15]提出一種基于盲文語料庫的漢盲轉換方法,該方法采用機器學習手段直接對盲文語料進行學習訓練,不考慮漢盲轉換的中間過程與邏輯。但標準盲文語料收集困難,校核工作繁瑣,該工作目前仍處于語料庫建設階段[16]。孫宇等[17]用遺傳算法優化BP中的某些參數,一定程度上提高了分詞的準確性,但該方法前期預訓練時間較長,算法計算量大,對運行平臺有一定要求。由于基礎研究薄弱,資源不夠充分,我國現有的漢盲翻譯系統普遍在實用性方面表現不夠好。
本文采用逆向最大匹配的分詞算法,通過詞庫自主修改和多音字的詞組-拼音庫,進一步解決漢盲翻譯中多音字、未登錄詞、盲文分詞連寫等問題,并實現了一套輕量級適用于嵌入式平臺的漢盲翻譯系統。該系統減少了語句歧義,提高了漢盲翻譯的準確率,有著較高的實用性。
為了讓漢盲翻譯結果更便于盲人高效摸讀學習,本文設計的漢盲翻譯系統主要包括逆向最大匹配分詞算法、漢拼轉換、拼盲轉換、盲文點序生成等,總體流程如圖2所示。

圖2 漢盲翻譯系統的整體流程
根據字符類型的不同,如漢字、阿拉伯數字、標點符號、英文字母等,算法把原始文本劃分為漢字和非漢字兩類。非漢字文本有相對應的符盲對照庫可直接進行符盲轉換得到盲文點序。對于漢字文本,首先要進行中文分詞,再利用漢字拼音庫、多音字詞語拼音庫對其進行漢拼轉換,然后再通過拼音盲文對照詞典進行拼盲匹配,最終得到盲文點序。過程中可根據盲文分詞連寫規范進行修改和添加詞語,豐富詞典庫,以得到更符合分詞連寫規則的漢盲翻譯結果。
逆向最大匹配分詞算法是將待切分句子按從句尾到句頭的順序截取字符串,與詞典庫中的詞進行逐一匹配,以貪心的方式切分出當前位置上長度最大的詞。本文分詞系統所采用的詞庫為清華紫光輸入法詞庫,共收集了548 387個常用詞,是目前收錄比較完整的詞典之一。
在字典匹配的過程中,使用二維指針進行定位存儲以減少不必要的匹配,將字典中每個詞的第一個字節和最后一個字節作為二維變量,利用二維指針數組把含有相同第一個字節和最后一個字節的多個詞串關聯起來進行存儲。在匹配字符串時使用第一個字節和最后一個字節直接進行檢索定位。該種存儲方式提高了字典遍歷匹配效率,算法時間復雜度保持在O(n)。
詞典可對分詞效果產生影響,故可根據分詞結果判斷是否需要在詞典中添加或修改有助于盲文分詞連寫的詞語。原文中若存在人名、地名、網絡新詞等典型未登錄詞時,需要及時添加至詞庫,從而更符合漢語盲文分詞連寫的要求。
基于上述中文分詞的處理結果,系統繼而實現漢字文本到盲文的翻譯過程。在漢盲翻譯過程中,對于數字、標符、英文字母等,系統中建有與之相對應的盲文編碼,可直接對其進行匹配轉換。而對于漢字文本,其轉換過程需要通過拼音實現,圖3為漢字文本的漢盲翻譯流程。

圖3 漢字文本的漢盲翻譯流程
純漢字文本經過分詞后得到單獨漢字或者詞語序列WS,對于單獨漢字,將其與漢字拼音庫進行遍歷查找匹配得到與之相對應的拼音PS。對于詞語序列,系統中建立了與分詞詞典對應的拼音庫,根據分詞中所得到的詞語直接定位到對應的拼音字符串。本文程序在實現過程中將詞語拼音庫與詞典中的詞同時用二維數組指針進行逐個存儲,即在分詞環節定義的結構體中加上詞語拼音庫的字符元素。詞語拼音庫中每個拼音串由多個拼音中間隔空格組成,這樣大大方便了將拼音串拆分為多個獨立的拼音PS。
根據盲文轉換規則,將得到的拼音PS繼續轉換為盲文二進制序列。首先分別建立聲母、韻母、整體認讀音節的盲文對照庫,這些對照庫在程序中分別以結構體形式存儲。將拼音PS與單方音節盲文對照庫中的音節元素進行遍歷匹配,如果匹配結果為單方音節,則可直接得到拼音PS的盲文序列BS,否則為聲母韻母組成的兩方音節。此時,先將拼音PS的前兩個字符與聲母盲文對照表中的聲母元素進行匹配,匹配成功得到與聲母對應的盲文點序,然后將拼音PS的聲母部分去掉繼續與韻母對照表中的韻母元素進行匹配,匹配成功得到與韻母對應的盲文點序,最后將聲、韻母的盲文點序拼接在一起得到拼音PS的盲文點序BS。
將中文轉換為盲文閱讀設備可有效讀取的數據,是漢盲翻譯的最終關鍵環節。從盲文點結構出發,系統將盲文設備的觸覺凸點設計為“1”,觸覺凹點對應于“0”。按照盲文單方內點位順序,左列從上至下為“123”點位,右列為“456”點位,整體點位序號可表示為“123456”,則盲文符號滿方可以表示為“111111”,空方可以表示為“000000”。使用二進制點序表示盲文點的凹凸信息并作為盲文電子閱讀設備的輸入信號是非常直觀高效的。
為便于盲人閱讀,盲文文本是以空方的形式來體現分詞間隔的。根據現行盲文的分詞方式,本文漢盲轉換中將以上每次得到的盲文序列BS后面都尾加“000000”的空方,對標點符號、英文字母、數字等非漢字字符串的盲文序列,也都尾加空方。由此,將每次得到的盲文點序按照文本順序依次相連起來,便得到了最終的漢盲翻譯結果。為讓漢盲翻譯結果呈現清晰,本文在表述時將分詞結果中的空格替換為“|”符號,對應盲文中的空方。例句“2001年,中國正式加入WTO。”中含有漢字、數字、字母、標點等所有類型字符,以及未登錄詞“WTO”,“WTO”在分詞處理前被添加至詞庫,故在分詞連寫處理過程中,作為一個整體被切分出來,對分詞連寫處理后的句子進行現行盲文的漢盲翻譯,各個處理階段如圖4所示。

圖4 漢盲翻譯各處理階段示意圖
本文將上述漢盲翻譯程序移植應用到基于ARM的嵌入式盲文學習機中[18],實驗測試漢盲翻譯系統在分詞連寫、未登錄詞、多音字等方面的性能表現。
本文將該系統輸出的盲文二進制點序作為盲文學習機中觸覺機械本體的凹凸控制序列,并同時以盲文點陣的形式顯示在盲文點顯學習機的LCD液晶顯示屏上,如圖5所示。LCD顯示屏上的盲文點陣“黑色實心圓”對應點顯器觸覺點陣的凸點,“空心圓”代表點顯器觸覺點陣的凹點,顯示屏上的盲文符號與機械本體裝置的盲文點陣凹凸點相對應。該嵌入式盲文學習機實現了盲文-觸覺、LCD顯示屏-視覺、語音朗讀-聽覺的三重同步呈現,幫助盲文學習者快速熟悉掌握盲文。

圖5 基于ARM的嵌入式盲文學習機使用展示
為測試系統中逆向最大匹配分詞算法的效果,該節選取容易產生分詞錯誤的典型句子樣本,針對“逆向”和“最大”的匹配原則,設計了正向、逆向最大匹配的分詞對比實驗和逆向最小、最大匹配的分詞對比實驗。
3.1.1正向、逆向最大匹配的分詞結果對比
例句1:北京大學生前來應聘
正向最大匹配分詞結果:北京大學|生前|來|應聘
逆向最大匹配分詞結果:北京|大學生|前來|應聘
例句2:獨立自主和平等互利的原則
正向最大匹配分詞結果:獨立自主|和平|等|互利|的|原則
逆向最大匹配分詞結果:獨立自主|和|平等互利|的|原則
例句3:他說的確實在理
正向最大匹配分詞結果:他|說|的確|實在|理
逆向最大匹配分詞結果:他|說|的|確實|在理
觀察以上3個例句可知,正向最大匹配的分詞結果會使句子的預期表達失真,導致語句歧義,而逆向最大匹配的分詞結果是符合語義的。從實驗結果可以看出,逆向最大匹配分詞能夠較好地避免語義歧義,使得最終翻譯得到的盲文文本有更可靠的閱讀性,有效幫助盲人正確理解文本意義。
3.1.2逆向最小、最大匹配的分詞結果對比
例句4:總工程師和其他工作人員議論紛紛
逆向最小匹配分詞結果:總|工程|師|和|其他|工作|人員|議論|紛紛
逆向最大匹配分詞結果:總工程師|和|其他|工作人員|議論紛紛
例句5:信息化時代里殘疾人便利許多
逆向最小匹配分詞結果:信息|化|時代|里|殘疾|人|便利|許多
逆向最大匹配分詞結果:信息化|時代|里|殘疾人|便利|許多
例句6:紅十字會的老職工說說笑笑
逆向最小匹配分詞結果:紅十字|會|的|老|職工|說說|笑笑
逆向最大匹配分詞結果:紅十字會|的|老職工|說說笑笑
從這3個例句中可以看出,含有符合盲文分詞連寫規則的詞,比如“總工程師”“老職工”“信息化”“說說笑笑”,通過逆向最大匹配分詞均能被劃分出來,但逆向最小匹配分詞結果卻不符合中文盲文簡化篇幅的原則。因此,逆向最大匹配中文分詞結果更符合盲文分詞連寫規范,能夠提高盲文摸讀效率。
為測試該漢盲翻譯系統能夠通過添加未登錄詞的方式提高分詞連寫處理準確率,提升盲文簡潔性,特此選取含人名、地名等未登錄詞的典型例句作為測試樣本,并對比添加未登錄詞前后的翻譯結果。
例句7:費孝通向人大常委提交報告
添詞前翻譯結果:費孝|通向|人大常委|提交|報告
把句中人名未登錄詞“費孝通”添加到詞典庫。
添詞后翻譯結果:費孝通|向|人大常委|提交報告
例句8:航天員翟志剛是齊齊哈爾人
添詞前翻譯結果:航天員|翟|志|剛|是|齊|齊|哈|爾|人
把句中未登錄詞“翟志剛”“齊齊哈爾”添加到詞典庫。
添詞后翻譯結果:航天員|翟志剛|是|齊齊哈爾|人
從以上2個例句添詞前后的漢盲翻譯結果觀察發現,添加未登錄詞“費孝通”“翟志剛”“齊齊哈爾”后,系統將未登錄詞作為整詞進行切分轉換,使盲文呈現更加簡潔,且翻譯結果更貼近語義。該實驗表明漢盲翻譯系統通過添加未登錄詞的方式,可以有效提高翻譯準確率,翻譯結果更利于盲人閱讀。
例句1-例句8的漢盲翻譯結果如表1所示。
為測試漢盲翻譯系統具備良好多音字識別性能,本文選擇了典型多音字作為測試樣本,并對比了同一多音字在不同詞語搭配中的翻譯結果,如表2所示。

表2 多音字盲文翻譯結果
在多音字的測試內容中,包含4種類型的多音字,分別是:聲母不同的多音字,如“dan”和“tan”;韻母不同的多音字,如“mo”和“mu”;聲韻母均不同的多音字,如“ka”和“qia”;以及僅有聲調之差的多音字,如“干凈”和“枝干”,其中“干”分別是第一聲和第四聲。觀察對比實驗結果可知,該漢盲翻譯系統對多音字有一定的識別區分能力,可以防止因為多音字讀音混淆造成的漢盲翻譯錯誤。
由于現行盲文標調率極低且未形成明確的標調規定,遇到多音字時,盲人需要猜測讀音,這大大降低了摸讀效率。對于含有多音字的詞組,分詞處理階段將其切分為整體,繼而對整體進行字音轉換,得到拼音字符串,從而翻譯生成對應的盲文點序。該方法較好地解決了多音字混淆的問題,盲人可以確定出含多音字詞組的正確語義。
目前漢盲翻譯主要面臨多音字難以區分、未登錄詞不能增添、不符合盲文分詞連寫規則等問題。
由于多音字在詞組中往往具有確定的讀音,故針對漢盲翻譯中多音字混淆的解決辦法是,建立與分詞詞庫相對應的詞組-拼音庫,當字音轉換階段遇到多音字時,遍歷詞庫得到多音字所在的詞組,繼而在詞組-拼音庫中匹配,得到含多音字詞組的拼音字符串,對拼音字符串作點序化匹配即可得到盲文點序。
該系統具有較好的開放性,分詞前將文本中的人名、地名等專有名詞添加至未登錄詞詞典中,分詞處理過程中,算法將優先遍歷該詞典,將未登錄詞正確識別且切分出來。同時,針對漢語盲文繁雜的分詞連寫規則,正式翻譯前可對分詞詞庫進行修改校準,繼而得到較為正確的分詞連寫結果。
本文設計實現的漢盲翻譯系統具有較好的開放性和實用性。文獻[9-13]采用統計規則與特殊詞庫匹配相結合的方法,算法復雜度高。本文的漢盲翻譯系統算法原理簡單,方便快速部署應用,適用于弱計算的嵌入式平臺。文獻[14-15,17]所用的方法需要大規模統一規范標注的漢盲對照語料庫,且在前期訓練中需要長時間優化調參。本文的漢盲翻譯系統與基于機器學習的方法相比,不需要先驗的標準漢盲語料庫,無須訓練調參,就能獲得較準確的漢盲翻譯結果。
盲文專家對盲文學習機內容進行實際摸讀校核,內容包括小學一年級的14篇語文課文和11篇古詩文,如圖6所示,總共約2 500個字符,準確率達到96.8%。其中錯誤主要在于少量標點符號對應的盲文,漢字盲文符號幾乎全部正確,標點錯誤原因在于國家盲文標準先后對標點盲文做了相應更改,本文系統中的標點符號盲文按照《國家通用盲文方案》設計。盲文專家的實際摸讀校核表明,該漢盲翻譯系統準確率高,具備較好的實用性。
漢盲翻譯是盲文數字化的核心技術,有助于解決盲文書籍供給不充分、內容不平衡等問題,為信息化時代盲人信息無障礙獲取提供了一定基礎條件。針對漢盲翻譯所面臨的分詞連寫、多音字、未登錄詞等難題,本文利用基于逆向最大匹配分詞算法,研發出一套輕量級的漢語盲文翻譯系統,并應用到基于ARM的嵌入式盲文學習機中,以進行系統測試。
漢盲翻譯按處理步驟大致可分為分詞連寫處理、漢拼轉換、拼符轉換三個過程,本文對以上三個任務做了明確闡述,并針對性地提出了解決方案。系統采用逆向最大匹配算法進行分詞連寫處理,相比于基于統計模型和基于語義理解的機器學習算法,本文所用算法無需龐大語料庫和復雜語法規則庫的支撐,計算量少,能夠實時進行中文分詞,滿足嵌入式盲文學習機實時漢盲翻譯的設計需求。觀察測試結果可知,該系統能夠得到較符合盲文分詞連寫規則的中文分詞結果,且較好地避免因多音字混淆引起的漢拼轉換錯誤,通過審核添改詞典,提高未登錄詞識別翻譯準確率。