3.1汉文字编码原理
3.1.1名词、术语及定义
为了便于讨论,我们先给出若干概念的定义。
定义3.1:在某种特定的汉文字编码方案中,用来为汉文字编写代码的符号称为码符。
所有码符构成的集合称为码符集。
定义3.2:在某种特定的汉文字编码方案中,所有用来为汉文字编写代码的单位符号是该方案中的代码元素,简称码素。所有码素构成的集合称为码素集。[10]
定义3.3:从单个汉文字中分解出来的与该字代码中某码素相对应的编码单位称为码元。某种特定的编码方案中所使用的所有码元的集合称为该编码方案的码元集。
如《五笔》输入法中的“字根”就是本文所指的“码元”,所用字根的集合就是一个码元集。
定义3.4:一种编码方案所能产生的代码总数称作该方案的编码空间。
定义3.5:单个汉文字的代码中所包含的码符数称作该代码的码长。
设码符集元素个数为
当码素中码符可以自由排列时有:
当代码中码素可以自由排列时有:
当码素中的码符和代码中码素均可以自由排列时,由(1)可得:
(2)、(4)代入(3)有:
(5)
由对数定义及换底公式可得:
定义3.6:在一个代码集内,二个或二个以上汉文字争用同一代码的现象称为代码冲突。争用同一代码的所有汉文字构成一个代码冲突字组。同一个代码冲突字组中的字称为代码冲突字。一个代码集中所有代码冲突字的使用频度之和称为该代码集的代码冲突率。
代码冲突又称“重码”。代码冲突字又称“重码字”。代码冲突率又称“重码率”。设一个代码集中代码冲突字组数为
定义3.7:码元集中的元素(码元)同码素集中的元素(码素)之间的对应关系称为码元集到码素集的映射。
当码元所对应的码素与码元本身所携带的形、音、义信息没有联系,而是由方案设计者主观规定时,称其为主观映射法。
当码素与码元本身所携带的形、音、义信息存在某种联系,码素能表达其所映射的码元的某种客观信息时,称其为客观映射法。
下面我们来讨论有关问题。
3.1.2汉文字键盘输入编码的方法
汉文字键盘输入编码大致有二种方法四大类:
第一种方法是用10个阿拉伯数符作为码符组成码素给汉文字编码,由此产生的编码称数字码,又称流水码。如《电报码》、《四角号码》和《区位码》都属这一种。
第二种方法是用26个拉丁字母作为码符组成码素来给汉文字编码。其中又由于对编码对象(单个汉文字)提取码元的侧重点不同分为音码、形码和形音码三类。
音码,是利用单字的读音信息对其编码。《全拼》、《双拼》及微软的《智能ABC》等属于这一类。
形码,是利用单字的字形信息对其编码。这类编码把每个单字分解为若干个部分,每一部分作为一个码元,并按一定的规则对同属一个单字的若干码元进行排序,最后通过由码元到码素及至码符的映射产生代码。《五笔字形》、《表形码》等均属于这一类。
形音码,是综合利用汉文字的字形和字音信息。先把一个汉字从字形上分解为若干个码元,比如形声字的形旁和声旁;然后取各个码元读音(或称谓)的首字母作为码素来组成代码。由此方法产生的代码称形音码(或称音形码)。《自然码》、《沈码》均属于这一类。
3.1.3汉文字编码的理想目标
为了找到汉文字和其计算机键盘输入编码的最佳结合点,必须首先确定汉文字编码的理想目标。
汉文字编码的理想目标是什么呢?本文认为,汉文字编码的理想目标是规范性和实用性的完美统一。
规范性,是指编码规则要符合汉文字的规范。人们使用记录工具记录语言,是为了交换信息,这就需要信源和信宿双方都遵循统一的标准,于是,当人们通过文字这个语言的记录符号交换信息时,就对每一个符号的形状及其所承载的音、义进行了约定。这种约定就是汉文字的使用规范。随着计算机在汉文字处理领域普及程度的不断提高,汉文字的计算机输入代码将会成为汉文字的第二存在形态,所以要求它必须符合汉文字的规范。
规范性的内容主要包括字形信息的全息性和码元提取的合理性两个方面。
字形信息的全息性,是指一个汉字代码携带的字形信息,应该反映该代码所对应单字字形的全部,不能丢失该单字字形中的任何一部分信息。这同我们用笔写字时,不能缺笔少画的道理是一样的。
码元提取的合理性,是指把某一单字分解为若干个码元时,要符合该单字自身的结构原理即通常所说的构字理据。
实用性,是指要满足记录语言时的便捷要求,而且所达到的便捷程度必须要高于用笔作为记录工具时的水平。
实用性的内容主要包括学习量、记录速度和资源占用量三个方面。
学习量大,人们就不喜欢学,“用”也就无从谈起,因而实用性也就差;反之,学习量小,就会受到大家的欢迎,容易普及,无疑实用性也就好。
学习量主要由码素和码元之间的映射关系决定。当采用客观映射法时,码素与码元的形、音、义存在一定的联系,码素能表达其所映射的码元的某种客观信息,二者之间的映射关系不需要死记硬背,学习量就小。当采用主观映射法时,码素与码元的形、音、义没有客观联系,二者之间的映射关系需要通过死记硬背来掌握,学习量就大。理想的汉字编码,其学习量应不超出中小学识字教学总课时减除必要的传统识字教学所需课时后的课时数。也就是说,对汉字计算机输入代码的学习,应融入学校的识字教学活动中,在中小学的课堂识字教学中完成。
记录速度是指通过代码使用计算机记录汉语言时的快捷程度,一般用每分钟输入的字数来衡量。它主要由编码冲突率和码长两项指标来决定。编码冲突率低时,绝大部分单字都可以盲打输入,记录速度就会较快。编码冲突率高时,大多数单字需要经过选择上屏,记录速度就会减慢。理想的编码冲突率应为零,此时所有单字均可盲打输入,完全不用选择上屏,这无疑会大大提高记录速度。除了编码冲突率,影响记录速度的另一个重要因素是码长。码长值小,输入每个单字所需要的敲键次数就少;码长值大,输入每个单字所需要的敲键次数就多。当敲键频率一定时,无疑码长值小时输入一个单字所需的时间相对就要短些,记录速度也就快些。然而,码长又受两个因素的制约,一是编码空间的大小;二是编码冲突率。零编码冲突率必然要求足够大的编码空间,由3.1.1节的 (6) 式可知,这就会在一定程度上加大码长值。反之,减小码长值,会引起编码空间的缩小,就有可能增加编码冲突率。本文认为,码长值的决定,应该服从零编码冲突率的原则。
资源占用量,是指计算机存储器空间的占用量和单位汉文字的处理时间。理想的编码规则,不应该在软件上再附加基本功能以外的代码段如“智能联想”、“自动分词”、“整句输入”功能以及“语料库”等等,也就是说,必须在单字层面上解决汉字输入问题。这样,汉字键盘输入处理模块的代码就必定短,占用计算机主、辅存空间必定小,处理单个汉文字所需的时间也就必定会少。
关于汉文字计算机输入编码的理想目标,还应提到的是原国家教委(现教育部)于90年代初提出的为中小学信息教育选码的标准。当时的国家教委提出:理想的汉文字计算机输入编码,应是能够与中小学识字教学密切结合的。要使我们的学生在课堂上认识一个字的同时,就能掌握这个字的计算机键盘输入代码,而不要等到从学校毕业后,再进电脑培训班另学电脑打字。这个选码标准,从中小学识字教育的角度描绘了汉文字编码的理想境界。本文前面所述的规范性、实用性两大原则,是和这个选码目标相一致的。汉文字编码如果达到了规范性、实用性的要求,无疑它就能和学校的识字教育相融合。
规范性和实用性二者中,规范性是第一位的。实用性必须服从规范性。脱离规范性来谈实用性是没有意义的。不符合汉文字使用规范的编码,是没有使用价值的,因此实用性也就无从谈起。
这里需要强调的是,我们所说的计算机成为记录汉语言的新工具,是指计算机为汉民族中所有受过教育和正在接受教育的成员以及世界上其他使用汉文字的人们所用;是指计算机作为汉民族全民族的语言记录工具,而不仅仅是少数受过专门训练的职业文字录入员的使用工具,因此,本文所指的汉文字计算机输入代码,应该是能为汉民族中所有受过教育和正在接受教育的成员以及世界上其他使用汉文字的人们能够方便地掌握的普及型代码,而不仅仅是少数专业人员的工作手段。一句话,汉文字编码实现理想目标,计算机真正成为记录汉语言的新工具之日,就是“文字录入员”这一职业从中国社会上消失之时。
3.2汉文字应适应的编码类型
我们在2 .3节和3.1.2节中已经知道,当使用计算机来处理汉文字时,要求汉文字适应编码的需要,而编码又有四种不同的类型,各种类型又有各自的编码方法。不同的编码方法对汉文字与其适应性的要求当然不会相同。那么应把哪种编码方法作为汉文字改革的基本适应对象呢?这就需要对四大编码类型进行筛选。
四种编码类型中,数字码采用数字字符集作为码符集;音码、形码和形音码一般都采用拉丁字母字符集作为码符集[11]。
数字字符集的元素总数为10。字母字符集的元素总数为26。根据3.1节(5)式,当码长一定时,采用字母字符集作为码符集可以取得较大的编码空间。根据3.1节(6)式,当编码空间一定时,使用字母字符集比之使用数字字符集所需的码长值较小。又由于数字码码素与码元之间是主观映射关系,代码的学习记忆量大,所以,不应该选择数字(流水)码。实践也证明,除非需要用区位码输入非汉字特殊符号,否则,没有人愿意使用数字码。
在使用字母字符集作为码符集的三类编码中,拼音码的码素只有《汉语拼音方案》中规定的14个声母和35个韵母,又由于声母、韵母的排列顺序不能颠倒,故在不考虑声调的情况下,其理论编码空间为:
14×35=490
是三类编码中编码空间最小的一类。实际上,汉语的音节是418个[12](不考虑声调),比理论编码空间还要少72个。设编码对象为《基本集》的6763字,则每个音节平均有
6763÷418
这就是说,《拼音码》存在着非常严重的编码冲突现象,无法实现理想编码目标中零编码冲突率的要求。
近年来,研究拼音输入的人士,为了克服同音字这个障碍,采取了建立“语料库”的方法,试图利用计算机软件的智能化,通过“词输入”、“整句输入”甚至“篇章输入”来解决问题,这也是难以行得通的。首先,汉语词中同音词的比例在不标调情况下占35.8%;在标调的情况下仍然占10.9%[13] ;其次,汉民族社会的语言是极其丰富的,是任何语料库都无法穷尽的;再次,随着社会的发展和人们生活内容的变化,大量新语汇不断涌现,而需要投入巨大的人力物力来制作的语料库却不可能时时更新;还有,包罗万象的语料库会使汉字键盘输入处理软件的结构趋于复杂;容量急骤膨胀;会占用大量宝贵的计算机资源和降低机器的运行效率,这也是不可取的。
另一方面,由于拼音码采用的编码信息是汉字的读音,而汉文字的改革改变的一般是汉文字的字形,所以当我们考虑汉文字对于计算机键盘输入的适应性问题时,可以把拼音码排除在外。
剩下的形码和形音码两类编码,都是把单字分解为若干码元,再规定码元到码符的映射规则来实现编码(在形码和形音码中码符集和码素集相等)。这就是说,这两类编码方法都要求单个汉文字应是可分解的。不同之处是形码采用的是主观映射法,码符与码元的读音之间没有联系,学习量较大;形音码采用的是客观映射法,一般采用码元读音的声母作为码素,每个码素含一个码符,这样就通过码元的读音把码元转化成了拉丁字母键符,大大降低了学习量;又由于形音码也要求每个单字应是可分解的,所以,如果解决了汉文字对形音码类型编码的适应问题,也就解决了汉文字对形码在码元分解这个环节上的适应问题。因此,应该以形音编码类型作为汉文字改革的适应目标。
3.3形音码对编码信息量的要求
编码信息量,是指作为编码对象的汉文字在向代码映射过程中所提供的形、音信息的单位数。形音码的码素集与码符集是相等的,所以它要求编码对象(单字)要能提供不少于最小码长值的信息单位。换句话说,就是从单个汉文字中分解出来的码元个数值应不小于最小码长值。再者,形音码最终是通过码元的读音信息实现码元到码符的映射的,所以它还要求从单个汉文字中分解出来的每个码元都要有完整的音节。综合以上两点,我们可以得知:编码对汉文字的要求,一是每一个单字都必须是可分的;二是从每个单字中分解出来的每个码元都必须是可读的。这样,矛盾就集中到了对单个汉文字的分解这个问题上了。
3.4单字的分解原则
应该依据什么规则对单个汉文字实施分解呢?这里需要解决二个问题:一是以什么为单位进行分解?二是按什么顺序进行分解?我们说,对单个汉文字分解的原则应该是:按其构成的单位和生成时序的逆时序进行。为了搞清楚汉文字的构成单位和生成的时序,就必须研究汉文字在单字构造和生成时序上的一般规律,这就是我们在第四章中要讨论的问题。
[10] 码素和码符是两个不同的概念。码素是组成代码的基本单位,由码符组成 ,有的码素只含一个码符;有的码素含多个码符。如《拼音码》中,a、b、c、d、……、z 26个字母都是码符。《汉语拼音方案》所规定的每一个声母和韵母即是码素。如“汉字”这个词中,“汉”的代码是han,它有两个码素h和an,其中码素h只含一个码符;码素an含两个码符a和n。由此可见,在《拼音码》中,是以声母和韵母作为基本单位进行编码的,而不是以单个字母作为基本单位进行编码的。又如《电报码》中,是用一个4位数作为整体来映射一个汉字,所以《电报码》中每一个汉字的4位代码就是一个代码单位即码素,每一个码素由4个码符组成。还有在《区位码》中,每个单字4位代码的前2位表示其在GB2312-80中的区号,是一个代码单位;后2位表示位号,也是一个代码单位,所以《区位 码》中每个单字的代码由两个码素组成,每个码素又各含两个码符。而《四角号码》中,每字的代码由4个码符组成。4个码符分别表示一个单字的四个角的笔形,所以,《四角号码》中的每个码素均由1个码符组成。在《五笔》、《沈码》和《表形码》中,每个码素也均由1个码符组成。在后三种方案中,码素集和码符集相等。
[11] 也有少数编码方案采用数字字符集同字母字符集的并集作为编码字符集。
[12] 见张志公《汉字与阅读》,《张志公自选集·下》,北京大学出版社(1998)。
[13] 见潘钧《汉语拼音文字的关键问题》。美洲中国文字改进促进会电子刊物《语文与信息》第16期,2000年12月。URL: www.wengai.com