倉頡系統

倉頡系統是朱邦復及沈紅蓮根據「漢字基因」理論設計的電腦系統，目的是解決漢字在數位化、資訊化上的一切困難，如缺字、編碼、儲存、排序、輸入。

## 漢字檢索的問題

現時漢字的檢索，在絕大多數地區都是以讀音順序為主。例如：

- 日本的漢字檢索，以五十音順序而排列。
- 韓國的漢字，以諺文字母順序排列。
- 中國大陸的漢字，以漢語拼音順序排列。

台灣雖然亦有以注音符號序列作檢索，但日常應用仍以部首檢字為主；香港的電話簿雖然亦有提供粵音姓名檢索，但日常使用，仍然以部首檢字法或純綷筆劃檢字法為主，這從現時香港小學的電腦認知課程主要教授九方輸入法及倉頡輸入法而可得知。

漢字檢索的最大難題，是不管用甚麼方法來實行，都要面對重碼的問題。

## 倉頡系統方案

朱邦復在發展倉頡輸入法時，原意是要發展「中文檢字法」，使漢字具有「序位觀念」，使中文能像拼音文字一般，用少數字母找到所有漢字。倉頡輸入法的26個字碼「日月金木水火土…卜」，其實正如同拉丁字母的26個字母「ABCDE…XYZ」、日本語的五十音序等，是有序的排列，可用於檢索漢字，是以稱作「倉頡字母」。

事後他進一步擴充系統，提出漢字基因理論。由於字根都依漢字形聲字特性分析得來，故若在電腦上運用這套方法，將有以下六大用途：

1.字碼：倉頡碼可用於漢字之輸入，即倉頡輸入法。

2.字序：倉頡碼有一定的排序規律，漢字也可如同英語般快速地排序、查詢、檢索。

3.字形：將倉頡碼輸入「向量字形產生器」後，可組合成漢字，顯示於電腦螢幕或用於列印。

4.字辨：把掃描所得的漢字點陣資料輸入，轉換為向量，分析其中的倉頡字根，可得出倉頡碼。這種由「形」得「碼」的過程就是文字辨識。

5.字音：大部分的漢字具有形聲的特質，因此將輸入的倉頡碼的字身分析出來，通常可代表該漢字的聲部，即讀音，可用於語音辨識。（但實務上，很多漢字發音已變，須另外處理。）

6.字義：由「倉頡碼」可分析出字首和字身，能夠透過程式組合出漢字字義，可供電腦「理解」人類常識，甚至和人類溝通。

倉頡系統即是將上列六大要素綜合考慮而發展出的電腦系統。

## 所解決的問題

倉頡系統可解決下列各種問題：

### 字序問題

漢字字典依「部首」、「筆劃」檢索沒有效率，兼沒「序位」觀念，若以倉頡碼排序漢字，則漢字的字序分明，人類或電腦程式查找漢字將方便快速許多。沒有大五碼和統一碼字序混亂的缺點。

### 缺字和儲存問題

<image>

電腦系統會有缺字問題，除了漢字的編碼和查對曠日費時以外，字集的儲存空間也是一大考量因素。目前主流的輪廓字體中，Times New Roman約佔400KB，收字不足1,500；新細明體和細明體共約8.6MB，收字不到23,000字；標楷體約5.1MB，收字亦不到23,000。相較於拼音文字，由於漢字所需的儲存空間龐大，許多小型的電子儀器不是無法收入漢字，就是缺字嚴重，如電子辭典、手機、各式醫療電子儀器等等。

由於倉頡碼有字首、字身的訊息，漢字字形產生器可根據輸入的倉頡碼，把字根自動組合為字形，無需把每個字的字形逐一儲存，大大減少所需記憶空間。由於輸入輸出統一以倉頡處理，取碼與輸出字形相符。

朱邦復在1995年開發的「漢字字形產生器」是依輸入的倉頡碼組合成字。該系統本身收錄了已存在約六萬古今漢字（字首約六百，字身約一萬）；並且可根據倉頡組字規則類推，依已有的字首、字身組合出「新字」近一千萬。此系統共佔160KB，在處理器速度450兆赫的電腦上，每秒可產生及顯示16×16之字型46,000個。字體有明、黑、圓、宋、楷、隸等，並且能任意變化大小、筆劃粗細、筆劃填充。與當今字集相較，其效率相當驚人。

### 編碼問題

一般的字集編碼缺少擴充空間，新字只能加在不同的字面上，不同字面間的漢字排序非常混亂。朱邦復曾批評統一碼處理漢字方法愚昧、收字不全、字序混亂、碼長不等，認爲不能採用。

倉頡系統採用一個字4位元組（byte）固定碼長的編碼策略，一字共5個倉頡碼（少於此數則補空碼），一碼佔5位元（26個倉頡碼、5個重複字處理碼，加上空碼共32個，即2的5次方），再加上數個辨識碼組成。由於本身留下大量的編碼空間，足夠隨時添加漢字至指定的編碼位置（但實務上，若有重碼則需另外處理），不同的字形對應的倉頡碼也不同，不會有相異字形兼併為同一內碼而帶來麻煩。

### 輸入問題

由於漢字表意特性強而表音特性弱，很多字沒有明確的「標準讀音」，或者標準讀音常常變化；大多數的罕用字讀音也很難被瞭解，因此音碼無法全面解決漢字輸入問題。此外，漢字同音字多，音碼輸入如果用於較大的字集，選字將嚴重影響效率。

朱邦復認為，中文輸入必須要能夠處理所有的漢字，因此編碼時根據字首、字身分析，以求倉頡碼能反映漢字的組合特徵。他同時也極力避免重碼，這主要是為了編碼和排序考量。相對而言，其他形碼輸入法主要著眼於易學易用及快速，僅針對常用字進行編碼，對罕用字處理較粗糙，不是無法輸入就是重碼率高。

## 實際應用

朱邦復依倉頡系統的概念，設計出以下幾套系統：

### 聚珍整合作業系統

聚珍整合作業系統於1989年推出市場，使用第五代倉頡，提供符合漢字結構的字數百萬，有七萬為實際用字，整個系統連同各種程式只佔450KB。因此，當系統發售時，一個A4紙長寬、十厘米高的盒子裡，主要是使用手冊，而整個系統只佔用一片軟碟片。即使是當時市面上功能最差的個人電腦，亦可以順暢地運行。

### 人文系統

「人文系統」是一套於1999年起發展的非作業系統，且不對外發售。其為建構在MS-DOS上的軟體系統，並由兩項系統組成：

- 具圖文功能的「圖文系統」。
- 漢字處理功能的「倉頡系統」。

此系統是首套使用第六代倉頡（又稱蒼頡）的系統。由於有字序，即使資料庫巨大，查尋速度仍然很快。靈活的字庫，也讓生僻字能如常處理。倉頡系統的優點得到發揮。

這套系統現時有北京的欒貴明教授用來建構其收錄中國歷代文獻的，成品為漢文史資料庫。

### 明珠中文系統

脫胎自聚珍中文系統，含明珠中文小字庫。

### 理解系統

理解系統是倉頡系統的一部分。該系統將漢字使用4位元組的固定長度編碼，其中有1個「分類字元」，1個「區別字元」，和2個「定義字元」。採用固定長度編碼的目的是為了能夠快速方便地檢索。

在「分類字元」中，朱邦復將漢字用二分法進行多次的「概念分類」，以定義漢字的字義：

<image>

上圖顯示將概念分為三十二的結果。舉例而言，「逃」為主觀-行為-生存-體能，故前5碼為11001。

32類各可再細分為八，共有256類，剛好可用1個字元代表，如「體能」的詳細分類為：

```
C8行動：進退赴去往返來達蒞渡旅行巡到出入
C9走動：走踱跑跨邁超步越馳奔凌
CA體動：扒攀登游泳泅涉仆跌撲爬拐
CB追動：躲避竄逃遁追趕攆驅逐排
CC腳動：踏踩踹蹬踢跳蹦踐躡蹈蹴跺躍
CD姿動：仰俯伏跪坐鞠躬蹲踞躺臥趴站立佇
CE互動：摟擁抱掙扎攔擋妨礙遏絆剎
CF電腦：(電腦功能)
```

其中「逃」屬「追動」類，編碼為CB。

「逃」的「區別字元」定義如下：

```
位元1及2  有四種組合，表示危險性之程度，逃字設為1，優先性不高，此類條件由主體自行判斷。
位元3     表示字首之關係，設為1，凡屬1者，皆需查字首「辵」之說明。
位元4及5  文字結合型態為「靜態」、「始態」、「終態」或「連續態」。
位元6     表示是否可做為姓，設為0，表示否定。
位元7     能否作單位用，設為0，表示否定。
位元8     有無延伸定義，設為0，表示否定。 
```

「逃」的「定義字元」定義可參考下表：

```
位元1       移動之方向兩種：固定／無關。
    2,3     速度之快慢四種：急／緩／正常／無關。
    4,5     位移之對象四種：接近／遠離／比較／無關。
    6       動作之連續兩種：連續／否。
    7,8     動作之能量四種：大／常態／小／無關。
    9,10    行為之態度四種：緊張／謹慎／從容／無關。
    11      行為之影響兩種：嚴重／無關。
    12      行為之隱祕兩種：需要／無關。
    13~16   暫未定。 
```

如此一來，32個位元便能表達無數多種的漢字字義，空間和時間效率都很高。舉例來說，若要判斷「逃」是否屬於「生存類」，比對前3個位元是否等於110即可。

倉頡系統係採用組合語言寫成，可針對輸入的文句產生聯想推理的「概念網路」，根據這些對漢字的定義編碼進行高速的複雜運算，進而理解一段中文的意思。

### 圖文系統

圖文系統是理解系統的其中一種應用，該系統可以理解一段輸入的中文文本，全自動產生一段動畫。只須事先繪製必要的物件模型，以及設定數個基本的運鏡參數即可。

朱邦復計畫使用這個系統量產中文動畫，以發揚中國文化。

範例：【記承天寺夜遊】動畫、劇本

## 倉頡碼延伸的應用

### 形體相近的漢字的判斷與漢字學習

將漢字的構造細分為主要成分，作為代表漢字的另一種內碼，已經有許多相關研究。延伸倉頡碼拆解漢字的精神，但是不採用倉頡輸入法因限制一個漢字最多五碼的限制而進行的省略動作，以比較詳實的倉頡碼來代表漢字的細部結構，進而比較漢字的近似程度。搭配漢字發音相同與相近的相關資訊，基於漢字形體與發音近似的程度，可以猜測中文學習者的錯字，作為學習漢字的輔助工具。

## 對倉頡系統的評價

### 讚賞

國學大師錢鍾書於1984年，在中國社會科學院開始宣道古籍電子資料化，並建立漢文史電子資料庫。工作之初，錢鍾書領導的硏究小組搜集了那時候所有中文系統及相關資料，然後由錢鍾書選定。錢鍾書認爲倉頡輸入法及倉頡系統設計符合漢字特性，讚賞「發明人懂中文，有遠見」，遂指定用它來進行古籍電子化。

### 批評

易符科技（後易名為剎那搜尋工坊）的動態組字開發者葉健欣，則批評倉頡編碼為了考慮按鍵的分配和重碼率，不得不破壞漢字的理據拆分（如將「門」拆成「日弓」，但之間沒有文字學的聯繫）。遷就了鍵盤，但失去了部件的教學和檢字功能。他認為倉頡碼只是字形的「特徵取樣」，捨棄了很多資訊，往往造成例外和重碼，使程式變得極為複雜而難以推廣；而倉頡輸入碼在有理論上的極限值，要是碰到新字，須回頭修改倉頡系統的資料庫；如果有重碼，還要試圖化解。還沒換新版的倉頡之前，新字無法立刻呈現。

## 參考著作

- 《資訊時代的中文電腦》。
- 《中文電腦漫談》。
- 《倉頡輸入法與中文字形產生器》。