Login  |  繁體中文
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
Previous Issue

你知道嗎?漢字是組出來的(上)

電腦上的漢字處理一直有著嚴重的缺字問題,這 個問題看似與你我無關,卻也讓生活平添不少困擾。幾年前常見的游錫方方土、陶吉吉,大家應該還記憶猶新,可能有人會說不要取這個名字就好啦。那就是說這個 人該死嗎?筆者過去服務過的公司名字裡剛好就有「人弟」這一個字,我可不敢說公司該死呢, 在網路上跟他人介紹我們公司實在很痛苦,因為電腦裡面沒有!這個字還是小件的呢,更不要說許多更艱深的古字了,還有許許多多的地名、人名、古籍上的字都缺 了。

那造字區造字呢?這是難以交換的,怎麼說呢?任何文字要在電腦上面表現出來,除了字形圖以外還要有個字碼,蓋電腦的積體電路其實看不懂文字,所有的文字都必須用數字編碼,電腦才看得懂,所以點好字形,然後賦予一個造字區的字碼,才能在自己電腦顯示出來了,人看得懂字形,電腦只看得懂內碼。但是,交換給別人看時,他的造字區必須跟你的一致:同樣的字形圖得對到一樣的碼,否則會得到錯誤的顯示,也就是說造字區造字難以流通交換的。也有用圖片表示缺字的方式,但除了網頁上面顯示以外,在文書編輯器裡面根本無法使用。

好啦,造字區造字法難以交換,可造字數又受限於編碼法的規劃,那每年改變編碼法以增加字數如何?那這表示電腦的作業系統不但年年得大修改,而且所有用舊編碼打出來的文件、必須要經過轉換才能給用新式編碼的作業系統看懂。幾年前從BIG-5換成unicode,這個大轉換已經夠大工程了,每一年再去改編碼,更不切實際。編碼是作業系統內很基礎的建設,變動都是一髮牽動全身的,對所有用電腦的人、作業系統廠商都是很大的負擔,unicode是在1991年就已經存在的,然而要一直到十年後windows 2000才從收一萬五千漢字的BIG-5轉到有兩萬漢字的unicode2.0,這可見為了缺字累次去翻修作業系統基層的編碼,不但無法立竿見影,耗年費月,而且成本甚巨。

電 腦漢字缺字,這個嚴重的問題,真無好方法可解嗎?奇怪,英文的字數已將近二十五萬字(這是韋式大字典保守估計),怎麼都沒聽說過有缺字問題?書寫的時候怎 麼寫、打字機怎麼打,電腦就是可以照常打出來。那中文呢?為什麼英文字沒有缺字,漢字就是會有缺字呢?很早以前,學界就發現,這個問題,一個字對一個碼, 缺字是永遠處理不完的,正本清源之道,乃研究漢字是如何組成的


什麼是漢字組成的法則?在探討這個問題之前,我們可以先看看英文字的狀況,英文表意的基本單位是一個「字」,例如說room是房間,此外有多字詞,是由多個字組成的詞,如「living room」是客廳、「personal computer」是個人電腦 ,那一個字又是怎麼組成的呢?我們可以看到room這個字,是由表音的字母排列合而成,字母總共只有az共二十六個字母,任何英文字都是用這最基本的表音字母組合而成,不會突然有個字冒出第2728個字母,這樣的字母集學術上稱為封閉集合。英文數十萬字,就是用基本的字母組合出來。作到電腦上,只要把字母編碼,無窮無盡過去的、現在的、甚至未來的英文字都可以表現。

看 回中文的情形,比較聰明的讀者大概已經領悟到了,中文為什麼會有缺字?前面說過,人認字形,但電腦認字的內碼。就是因為漢字的編碼是直接對字編碼,現在的 電腦能給中文字多少碼的空間,中文字就只能表現那麼多,碼的空間有限,字卻是無限,從有中文電腦開始到現在,一個字配一碼,永遠也配不完,所以只能對特定人士認定需要的部份字作編碼,大部份過去的字、未來的字就只得放棄。甚而一碼又對一張字圖,漢字的電腦處理,永遠是個高成本的雞肋,設計電腦的公司企業遇到中文問題就要愁眉苦臉,缺字問題不說,字數愈來愈多,字形檔也就越來越膨脹,如今日最新的微軟正黑體光是兩萬多字就14MB了,中文電腦先天使用上,要使用順利必須比英文電腦有更多的記憶體。同樣的作法來處理英文字,如果不對英文字母編碼,而是對英文字編碼,英文字也是一字一碼的話,比起中文字,缺字問題更會嚴重,電腦裡面英文字的字形檔恐怕比中文字形檔更可觀。字是開放的集合,一個字一個字編碼,一定編不完的,要編碼,一定要找出該文字系統的基本組成元素

問題來了,英文的基本組成元素是英文字母,那漢字呢?注音符號嗎?所謂注音符號並不是字母,而是用國語(或普通話)唸漢字的音標(漢 字經過所謂的書同文,所以不同的語族採用了同一套書寫系統,注音不是單一的,同個字有北京語的唸法、客家話的唸法、閩南語的唸法,甚至日語的、韓語的、越 南語的),所謂字母,字的母親是也,就是合成文字的基本單位。好啦,那中文字母是什麼?又組成一個中文字的基本法則又是什麼?找到這兩個問題的答案,缺字問題才有解決的曙光。

民國六十到七十年代,當年為科技界蔓延著漢字落後跟不上時代的說法,為了怕漢字無法電腦化,會造成中文文化的危機,所以政府敦促科技界儘快研究解決方案, 當初匆促在缺乏文字學家的參與之下,定出來的,就是一直用到今天的一字一碼,一字一碼是以人為的方式去界定廣大的漢字哪些該收,哪些要放棄,哪些放在常用區,哪些又要放在次常用區,因為是人為判定的方式,當年許多政府部會以及民間組織還各自以不同的法則,做出了一堆各不互通(少數有相容)的編碼,小小一個台灣就有CCCII(最早制定,現為圖書館系統使用)、CNS11643(國標碼)、BIG-5系列(Big5-EtenBig5-eBig5+Big5-2003CP950)、MS950(微軟制定,大部份與BIG5相容windows系統預設編碼)、EUCExtend Unix Code全國戶政系統使用)EBCDIC(銀行使用)、財稅碼、電信碼還有今日的萬國碼:unicode等等不同編碼,這是所謂的萬碼奔騰問題,持續至今,只要讀者您的名字或團體名稱很不幸其中有字跟「人弟」這看起來不太難的字一樣,被這些制定機關團體判定成得放棄的罕用字,在e化的今天到銀行開戶、到新學校註冊、取得學生證、到稅捐處報稅、到戶政事務所申請新身份證、新健保卡、考駕照、創業到經濟部申請營利事業登記、申請法人團體等等諸多人生大事,工作人員受理你的案子就是處理比較慢,對方搞不好還在櫃檯後埋怨得額外處理你的缺字哩


人為的方式指定一字一碼問題非常的嚴重,所以後來就有幾位不同人士試圖找出漢字構成的基本法則。最為人所知的首推中文怪傑朱邦復先生,他所發明的倉頡輸入 法,其實更是倉頡組字法,他經過數十年的時間,剪剪貼貼字典上的字,把字拆開、組合,又拆開、組合,整理出了「倉頡字母」。一開始倉頡只是一種方便的輸入 法,1990年 朱老先生在新作聚珍中文系統中,做出了一個很大的創見,就是組字!何謂組字?就是漢字在字形的描繪上,擺脫了過去一個字對到一個字形圖畫(點陣圖或是向量 圖)的作法,而是複雜的合體字是由更簡單的部件組成,簡單的部件還可以一路拆開,拆到最末不能再拆的末級部件,直到這最基本的元素,才定義基本元素的筆畫 描繪方式。這是很空前的作法,漢字處理上時代的一大進步,倉頡輸入碼也就成為了其系統的內碼。

 

然而朱邦復的系統有一個問題,就是雖然能很有效率的組合出字,但是,其倉頡碼仍然是個人為的編碼,本來著眼的是為了讓鍵盤好打檢索出要輸入的字,而人為拆取字的「部份」成為「輸入碼」(找到字的檢索路徑),用作內碼(電腦內部對文字的實際編號)就會有以下的問題:yrcru(卜 口金口山)的碼,為什麼是「說」這個字,就不可能是其他的字嗎?萬一真有個新字是「言金口山」該怎麼辦?使得其組字系統需不斷因應新可組的字累積許多例外 判斷。又其所取的部件,許多違逆了文字學的研究,例如說文字學上馬就是不能再拆的字了,但在他的理論下還是可以拆的。倉頡碼終究是人為,不脫一字一碼,又 因朱老的系統自成一格比較封閉,致使不能有效的廣佈於大眾。


在組字的研究上,另外有中研院資訊所的謝清俊教授所主導的。謝教授在30年前領導國字整理小組制定了CCCII中文資訊交換碼,確立了以文字學研究為基礎的方向。其後周何教授基於古代從說文解字到鄭樵的整理研究,分析CCCII第二集22394個字,得出漢字有869個聲母及265個形母、共計1134個基本元素,稱為末級部件或是字根、字母,為任何漢字的共有基本元素(字根,容易跟輸入法的字根搞混,後續不再作此稱),末級部件的分析整理,是歷史上重要的一頁,這表示任何漢字確實是由部件逐層合成的,也表示在漢字的學習上,有更有結構、合理的學習法


謝教授的缺字解決方案的重點在於構字式,構字式是由有限的構字部件及符號組成,是描述字形結構的式子。英文是一維,由左而右的組字,漢字是以二維的方式由部件組成部件也是用二維的方式一層一層組,最後用最基礎的末級部件組成最終的末級部件,才由筆畫畫成。比起一字一碼是非常大的進步,為數眾多古文缺字迎刃而解,所有古文字的構字式被整理成漢字構形資料庫,在現有電腦環境下中文字不再有數量限制。然而,漢字構形資料庫只是個資料庫,目前只有在MSOffice上作了個展示性的應用,此外構字式有個缺憾,就是一個構字式只能使用一種組字符,例如說有左右組就不能有上下組,這樣無法作巢狀的處理,在作複雜的新字時會有困難。這資料庫是很好的學術研究資源,但還不足以應用在通用用途。(下期待續)

◎ 關於本文

本文由張正一維護,本著作係採用創用 CC 「姓名標示─非商業性 2.5 台灣版」授權條款釋出。初載於:資訊與電腦雜誌 2007 年三月號,若有疑問,請不吝指教: This e-mail address is being protected from spambots. You need JavaScript enabled to view it



You may be interested in the following articles:




OSSF Newsletter : 第 76 期 各國政府採用自由軟體現況

Category: FOSS Forum