第一屆中國文字學會學術討論會•天津 1996年8月25-30日 電子古籍中的缺字問題 |
Page 3 of 8 |
貳、文字知識在電腦中表達
如前述,解決缺字問題的關鍵在於如何把文字知識有系統地表達在電腦中。在以下第一節中將先敘述一些相關的背景,然後報告本系統對文字知識表達的做法。
一、背景 在本節中先討論二則本系統所引用以前的研究,並對目前電腦中的狀況作一說明。(一)、中文電腦基本用字 1970年前後,台灣地區開始重視利用電腦處理漢字文件的問題。然而,當時文字統計資料並不完整,也沒有一個適當的漢字字集可供電腦採用。1971年在王安公司贊助下,交通大學計算與控制系委請林樹先生從事「中文電腦基本用字」的研究。 該研究從1971年10月初展開,以二千多人工作天,約經半年,於1972年3月底提出初步報告。現將該研究的一些特色及重要原則條列於次:
此字集之熵值為9.60,前500字使用累頻詳如〔表三〕。由於此後在台灣並沒有更好的文字統計資料出現,所以本系統仍以此字集作藍本。 表一《中文電腦基本用字集》匯集的十一種字彙 表二《中文電腦基本用字集》異體字的整理原則 註:“+”號表示「正好超越」,如+50%表示前141字的累積使用頻率剛剛超過50%。 (二)、交大字根系統 在台灣,最早分析漢字字根的是交通大學,這套字根就命名為《交大字根集》。1972年,倪耿在碩士論文《中國文字之結構模式及其分析》中,測試了十幾種常用的構字方式,並統計其使用之頻度,發現只用橫向連接、直向連接和包含這三種組合方式,就可以大幅化簡漢字的結構,餘者甚少用可略而不計。據此,漢字結構的字根制式表達方法確定了下來,如〔表四〕所示。表四 漢字字形結構的制式表達(以Bakcus Normal Form表示)
|
〔表四〕中的構字系統是以BNF(Bakcus Normal Form)的制式語法(formal
grammar)表達的。它是一種孳生系統(production
system),亦即:可由最底下的具體符號,如〈字根〉、〈定位符號〉這些符號集合(set)中的成員,依表中的式子孳生為新的符號,如漢字或部件。一般來說,這種孳生系統能產生的,常多於實用上所需要的,所以必須加一些使用情境(語意)的約制,來配合現實的環境。譬如:此系統產生的形,究竟是部件?是字?或者什麼都不是,是使用者可以判斷選擇的。也正因如此,賦予了此系統不須更改便能應付未來造新字的彈性。在此系統中,〈字根〉是〈部件〉的子集合(subset),代表最基本、不可再分解的一群部件。字根組成部件,部件組成漢字。漢字、部件、字根都可用來組合成構形更複雜的漢字。由於〈漢字〉、〈部件〉、〈字根〉這三個集合互有重疊之處,在使用上,〈部件〉常用來指不屬於漢字也不屬於字根的那一群成員。如〔圖一〕中的例子,灣和彎是漢字,褔搣馧‘,弓、言、系是漢字也是字根,鰬O字根。圖中字根與筆劃部份的關係容後說明。
![]() 圖一:灣字的構成 倪耿的工作是和林樹整理《中文電腦基本用字集》同時做的,字根的確定是雙方共同努力的結果。這套字根有一特色,它是經過反覆三次「最佳化」而得到的。所謂最佳化,是指在字根總數和平均每個字分解的字根數目(經使用頻率加權計算)兩者之間,求一近似最佳的結果。通常,字根越多,每個字分解後的字根數就越少;字根越少,則每個字的字根就越多。在使用方面,我們是既希望字根少,也希望每個字的字根少,所以在此不可兼得的情形下,只有求其最佳之組合。此最佳化是經過一些數學計算(稱為邊際效用原則)而決定的。其結論略如:凡一個字其使用頻率在萬分之37.58以上時,不應分解,在萬分之18.79至37.58之間者不可分解為兩個以上的字根,在12.36至18.79之間者不可分解為三個以上字根,在9.39至12.36之間者不應分解為四個以上的字根,餘者無論怎麼分解,沒有大礙。【註三】 這個結論,也決定了分解漢字的底線。 依據《中文電腦基本用字表》中之9129個字形,逐字分解而得496字根,請見〔表五〕,其中含有常用熟字305個(其中39個是合於不可分解條件者),其總計使用頻率已超過全部的50%。若依字根的使用頻率統計,最常用的前25個字根已佔全部使用頻度的30%,前50個為49%,前100個為66.7%,前200個為84.9%,前300個為95%。【註四】 最佳化的結果是,依使用頻率加權後的平均每個字的字根數僅1.9。至於這套字根構字的模式可以適用到什麼程度呢?將張其昀等編纂的《中文大辭典》中49905字逐字核試,計可組合48713字,僅1129字難以組合,這些字多為籀文,篆字,或一些古文、反文、圖騰之類者。今多有替代,或早已廢棄不用。經考慮後,並未將此納入交大字根系統中。如日後有此需要,再將此1129字再納入不遲。此構字的性質正是本系統所希望的,所以本系統亦以此為基礎並加以擴充。 字根系統是漢字字形結構中的一個基本部份,它是依楷書發展出來的,並沒有考慮到篆、隸、行、草等字體,也沒有顧及書法及各種印刷字型的變化。它能掌握的,只是從楷書外觀上來描述漢字的構成,即使如此,這構成的信息還是上述各字體、字型的共同部份,是可供各體參考利用的。至於各體的字形變化描述,詳如後文。 表五 交大中文字根表 ![]()
(三)、目前電腦的文字知識 時下電腦系統中已存入的漢字信息有:交換碼中的字樣、字碼和字序;字型庫中的各體字樣,以及它們和交換碼的對映;輸入系統中的輸入碼及一些漢字屬性,以及它們和交換碼的對映。這些信息及彼此的關聯有如〔圖二〕。
|
交換碼中雖有字序的信息,但常常並不完整,如前述的造字表就割裂了原有的字序。此外,有些碼並無一致的字序,如JIS的前半照注音排序,後半卻照部首筆劃排,這並不表示字序的信息豐富,反而是各個排序的信息都只有一半,而使得電腦無法依某種規則對所有文字排序。這種字序的實用價值是很少的,幾乎有等於無。再說,幾乎所有的系統都沒有把字序的一些重要指標的信息整理出來。譬如:第十劃的字是從什麼碼排到什麼碼,某部首的字是從那到那兒等。沒有這些指標,使用者怎麼用字序信息呢?
有些輸入系統存有一些漢字的屬性,如注音輸入法中就有每個字的音標。可是,這些音標多半沒有收集全所有的破音,也沒有處理破音的方法。請問要輸入「長」字時,該如何注音?因此,這部份信息只是勉強來應付漢字輸入的,並沒有為各種應用設想。更有甚者,有些系統根本不讓使用者取用這部份信息。
由以上的情形看來,電腦中的漢字信息不僅少得可憐,更是先天失調。這就怪不得做應用時礙手礙腳了。這實在是中文電腦應用上必須排除的絆腳石。
二、文字的制式定義與表達 字、字形、字體這些名詞在我們語用中常常代表著不盡相同的意思,但佐以情境,我們並不覺得有溝通的障礙。可是,電腦遠沒有人靈活,也沒情境可參照,所以必需對這些名詞作制式的界定,電腦才能據以順利地處理文字信息。本節將說明一些關鍵詞在本系統中的工作定義。 字(character)是表達一種或一群概念的名相。它是抽象的,以語意區別。例如,對應的繁體和簡體是同一個字。在電腦中,字用一個識別碼(identifier)表示,此識別碼可以是交換碼,也可以是內部處理方便使用的「內碼」,或是輸入時的「輸入碼」。為方便計,以下的討論均以交換碼來代表字。目前,字所承載的語意還沒能表達在系統中,所以電腦並沒有方法可以直接處理語意信息。 如前所述,一個字可能有許多字形(glyph)。字形也抽象的,區別字形的關鍵在於它的組成結構,亦即構字,如前例,繁體和簡體屬於不同的字形。偶爾,也有些字會用同一字形的。所以,以數學關係來說,字之於字形大多數是一對一或一對多的關係,偶有例外。 字形只界定構字,並不關心該字好不好看。依同一規範製作的一群字屬於同一種字體(font)。字體也是抽象的,區別的關鍵在於它的設計規範。雖然字體有設計規範以表現其劃一的特色,但仍有藝術創作的空間,允許設計者表現自己的風格。所以,同一字體下各廠商設計的「字型(style)」會現出不同的表情、風貌。一種字型設計,通常有些參數來決定它呈現的大小、粗細、橫直粗細比列、疏密以及一些特殊裝飾的邊角等等。待這些參數選定了,才能借媒介呈現出這個字的面貌,此稱為字樣(typeface)。唯有字樣才是具體可見的。照理說,這些字體和字型在設計上產生的形狀變化(以下簡稱為字體變化)是不應該違反構字規律(即字形的定義)的,然而在實務上並沒有這麼嚴謹,也造成了些字形上的差異,詳細的分析如後文。 上述的關係可參見〔圖三〕。所謂文字的制式表達,即將〔圖三〕中的關係用電腦能了解的方式,表達在電腦中。字的表達已如前述。字體的信息存在字體庫(font library)中,這是大家熟習的,毋庸多言,參見〔圖二〕。目前電腦中無字形信息,或者說是字與字形不分,混淆著用,所以無法分別及處理異體字。字形資料庫就是要填補這個空缺,它擁有字與字形間關係的對映,以及字形的結構模式,如下文。 |
Page 3 of 8 |