汉字属文字学,计算机属自然科学,汉字编码涉及汉字及计算机,这是典型的文字学与自然科学的交叉,因此,汉字编码属边缘科学,但是,汉字编码一旦纳入自然科学范畴,就成为数学研究的对像了。
研制汉字编码,一要选择字符集,与字符集大小有关;二要确定汉字构件,所谓汉字构件,是以某种规则确定的具有组配汉字功能的笔画结构之集合,不同编码方法其构件组成也都各不相同;三要确定汉字码,所谓汉字码是表示汉字的字母组合(有的还包括数字和其它符号),汉字构件通过汉字码输入到计算机,汉字编码就是通过制定一整套规则,建立汉字、构件、汉字码三种元素之间的转换关系,这里把这三种元素称为汉字编码三要素,下面用数学方法分析三要素之间的转换关系,然后对汉字编码进行科学定义,并建立汉字编码数学模型。
首先介绍映射概念:已知甲、乙两个集合,如果有一个确定的法则,对于甲中的每一个元素,有乙中唯一确定的元素与它对应,那么就称这个法则是甲到乙的一个映射。汉字编码可用集合表示,这里把字符集与构件之间,或构件与汉字码之间的转换,都看作是甲、乙两个集合之间的转换关系,并把编码规则看作是一种映射,这样在汉字编码规则映射下,完成了由字符集到构件、再由构件到汉字码的转换,即汉字编码,因此用映射理论描述汉字编码是恰当的。
设Q为某字符集汉字集合,q为Q中汉字;F1为某种确定的与汉字有关的转换规则集合, f1为F1中条款;G为某种汉字构件集合,g为G中构件;F2为某种确定的与计算机有关的转换规则集合, f2为F2中条款,M为某种汉字码集合,m为M中汉字码。
在上述设定中,集合Q、F1、G、F2 、M中的个体q、f1、g、f2、m称作元素:Q={q1,q2,q3,…}、F1={f11,f12,f13,…}、G={g1,g2,g3,…}、F2={f21,f22,f23,…}、M={m1,m2,m3,…},在这里,F1的作用是代表一种方法,是汉字编码所依托的对像,汉字编码用这种方法把整字拆分成汉字构件,或把笔画组合成汉字构件,因此这是连接汉字与汉字构件的过程,例如汉字按字源关系拆分成基础部件,F1代表的就是字源;F2的作用也是代表一种方法,汉字编码用这种方法把汉字构件分布到计算机键盘,因此这是连接汉字构件与计算机的过程,这包括两种方法,一是把汉字构件进行分类,把相同类别的构件分布到计算机键盘的某一区域,与键盘位置有关,而与键位的名称没有直接关系,二是按“近形”原理编码,这在确定F1时就已经考虑到了F2的问题,与字母键名称有直接关系,而与键盘位置没有关系,汉字编码就是通过F1和F2把汉字与计算机连接了起来,下面对汉字编码进行定义:
如果对Q中每一个q,通过F1中f1,都有G中唯一确定的g与它相对应,同时对于G中每一个g,通过F2中f2,都有M中唯一确定的m与它相对应,那么就称在规则F1和F2作用下,完成了从Q到G再到M的转换,这是由汉字到构件再到汉字码的转换,即汉字编码,用数学表示为F1:Q→G,F2:G→M,把上述转换归纳起来就是:汉字编码是在编码规则F(由F1、F2复合成)映射作用下,完成了由汉字Q(经构件G)到汉字码M的转换,用数学表示为F:Q→M(F由F1:Q→G和F2:G→M复合成)。
汉字编码用映射F:Q→M表示,这就是汉字编码数学模型,是函数概念的推广,是定义在Q上,取值在M内的函数,这是一种复合函数,字符集Q是常量,汉字编码就是在已知Q条件下,通过寻找F1和F2来确定Q、G、M三个元素之间相匹配的关系,在这里F1是至关重要的,汉字编码类型,难易程度、输入效率、适用范围等都与它有直接关系,是汉字编码的难点;F2比较容易实现,但也有一定技巧。以上编码都要遵照汉字编码规则表(见《关于汉字编码第二次整理探讨》)。
函数F:Q→M的解是无穷多的,因此,汉字编码最终目标就是寻找高质量的汉字编码方案,这也是汉字编码三十年来一直在寻觅之中,因为F1对汉字编码质量起着决定性作用,因此汉字编码的首要任务就是寻找F1的最终解决方案,只要F1的问题解决好了,F2和其它元素就迎刃而解了。
目前汉字编码有两种观点:
1、汉字形码风光不再,并对任何新的编码方案失去信心,三十年汉字编码面临无果而终,汉语拼音最终将取代汉字形码,以科研院所、大专院校、新技术软件公司及网络公司为首的高科技部门是汉字编码的主力军,正对汉语拼音输入法进行全面改良,由词处理向句处理、由低智能向高智能转化,采用超大语料库,目前成绩斐然,例如谷哥输入法、搜狗输入法已相继问世。
2、汉字形码莫不可测,说不定幸运会降落在谁的头上,有的甚至把易经都派上了用场,为汉字编码增添了浓厚的神秘色彩,分散在全国的个体编码人是汉字编码的主力军,通过猎奇心理,总能发现一种世人尚不知晓的编码方法,或对老方法翻成新花样,经过申报专利,研究开发,寻找伙伴,筹借资金、互联网或媒体宣传,结果大多事与愿违,用户可能只有编码者本人,白白耗费掉了宝贵时间和资金,造成无用信息资源的泛滥和社会资源的浪费。
目前汉字编码有三个误区:
1、保留汉字蕴涵的文化信息
这是混淆了汉字构件与汉字的关系,汉字构件是汉字的一部分,但不等于就是汉字,而只是汉字的一种辅助工具,因此,汉字构件与字源不具有必然的联系,弘扬汉字文化,最大限度表现汉字,最大范围推广汉字是唯一目的,下面借助汉字标音法的演化进一步阐述这一观点。
为了给汉字标音,从“譬况”法开始,历史最悠久的是汉代的“直音”法和“反切”法,“直音”法是用同音字来标注被注字读音的方法,例如“肇,音兆”;“反切”法是用两个字来拼合成被注字读音的方法,例如“东,德红切”,这两种方法在使用前都必须首先认识一定数量的字,因此不利于初始学习。到民国初期才出现转机,为了给汉字注音产生两种不同意见,一种意见主张按国际标准用罗马字母注音,另一种意见顾及民族感情用汉字的偏旁笔画注音,鉴于当时特殊历史条件,持后一种意见被采纳,这就是注音符号,注音符号完全脱离了汉字内涵是一大进步,目前港澳台仍在应用。新中国成立以后,在制定汉语拼音方案过程中,这也存在着罗马字母式和汉字笔画式的两种意见,经过反复论证和毛泽东同志后来也转而赞成采用罗马字母,终于在一九五八年颁布罗马字母的《汉语拼音方案》。
汉字标音法最终采用罗马字母的《汉语拼音方案》,风风雨雨历时两千多年,如果把三十年的汉字编码史与两千多年的汉字标音史相比较,会发现我们并没有借鉴历史,而是正在重复历史,例如字根法与最早的“譬况”法相对应,后来字根法演化成基础部件,而“譬况”法演化成 “直音”法和“反切”法,而它们之间也有相似之处,就是都不利于初始学习,例如“直音”法和“反切”法在使用前必须首先认识一定数量的字,而普及基础部件要在这基础上,还要掌握字源知识,这比首先要认识一定数量的字似乎更难,“直音”法和“反切”法能在两千年后完成了向民族的注音符号和罗马字母的《汉语拼音方案》演化,而基础部件的演化目前嘎然而止,汉字编码规律告诉我们,同汉字标音法的演化一样,汉字编码演化的最终归宿也是脱离字源关系的拼形符号和罗马字母方案,未来的路怎样走,期待着人们观念的转变,这才三十年,但两千年时间太长。
2、汉字编码属文字学范畴,与其它科学无关
从某种意义上说,计算机是按英文模式发明的,英文输入不涉及其它科学内容,输入其它字母文字时,只要将计算机英文字母键盘转换成相应字母文字键盘就可以了,而这种转换并不复杂,因此不涉及其它科学内容,汉字按字源拆分成基础部件,这是按约定俗成,属文字学范畴,将基础部件用于编码,涉及计算机内容不多也很粗浅,可以认为不涉及其它科学内容,但是,如果满足人们憧憬的,如文字学家描述那样的未来汉字编码:采用26个字母键、规则简明、码长短、词语容量大、重码率低、能扩充到大字符集、适于普及和其它附加条件等,在这里可以告诉大家,这样的汉字编码方案有,但不是汉字按字源拆分成的基础部件编码就能胜任的,单独依靠某一学科也不能实现,这属于边缘科学,需要文字学、计算机学、数学等携手完成。
3、汉字编码规范具有一票否决权
汉字编码并不完全按照约定俗成,而是受一定客观规律支配,因此,当汉字编码规范与汉字编码规律相抵触时,是顺应汉字编码规律修改完善规范,还是坚持目前规范标准,继续推行一票否决权,这决定着未来中国汉字编码的命运。
汉字编码对任何人都容易实现:
从理论上讲,汉字形码编码除了字源、笔顺规则表之外,依托其它任何一组事物,例如字母、数字、棋普、星座、素数、干支、十二属相、水浒一百单八将、百家姓、太极、阴阳、八卦、三字经等都可能成为F1,当然还能举很多这样的例子,然后确定F2,建立Q、G、M之间的对应关系就可以了,下面用实例进一步探讨汉字编码:
已知字符集Q,如果F1选用1件事物“牛”,即F1={牛},那么G={Q},F2选用1个字母键A,即F2={A},可以把“牛”标识(镌刻)在字母键A上,那么M={A},这是把字符集Q中所有字都用字母A表示,只要按A键,所有字都显示出来供挑选,这都是重码,如果用码长进行区分可以都不是重码。
已知字符集Q,如果F1选用2件事物“阴”和“阳”, 即F1={阴,阳},规定“阴”代表左右结构字,“阳”代表其它结构字,那么G={Q},F2选用两个字母键A和B,即F2={A,B},规定A键代表“阴”,B键代表“阳”,可以把“阴”、“阳”分别标识(镌刻)在字母键A、B上,那么 M={A,B},只要按A键显示所有左右型结构字,按B键显示所有其它型结构字,这在区分性能上显然进了一步。
已知字符集Q,如果F1选用25件事物:F1={木、火、土、金、水、长、短、多、少、人、手、口、日、月、狗、牛、鱼、鸟、草、耳、心、衣、运动、哲学、天空},规定字符集中所有字都能按这25件事物拆分成汉字构件,排序在前者优先选,那么G={把字符集中所有字按25件事物拆成的各不相同的构件},F2选用26个字母键,即F2={A,B,……Z},规定25件事物按照顺序对应A,B,……字母键,Z作特殊键使用,可以把这25件事物分别标识(镌刻)在字母键上,那么 M={由A,B,……Z构成的字母组合,用来表示汉字构件的组合}。
例如“漾”字按照这25件事物及相对应的字母键位,可拆成构件“氵、羊、永”, 其中构件“氵”对应“水”用字母键E表示;构件“羊”属动物,在25件事物中排在前面的动物是“狗”,用字母键O表示;构件“永”表示长久,按约定俗成,在25件事物中对应“长”用字母键F表示,因此“漾”的汉字码是EOF,如果汉字分析出的构件找不到对应的事物,可用特殊键Z表示,属特殊编码规则,因为有特殊键Z,因此该方案适用于所有字符集。
以上编码方案虽然没有实际意义,但在理论上是可行的,这里只想告诉大家,汉字编码其实很简单,只要能够多加思索,总能发现一种新的编码方法,这就是汉字编码像长流水一样,三十年不断流,今后也会不时涌现的道理,但研制出高质量的、能够推广普及的汉字编码方案其实并不容易,这对初学乍到的编码人一定要有清醒的认识,下面继续深入探讨这一问题。
在码长曲线上,从整字到笔画对部分汉字编码进行剖析:
1、按整字编码
已知字符集Q,F1={Q},G={Q},F2={A,B,……Z字母键位置},M ={由A,B,……Z构成的字母组合}。
不需要汉字编码规则表,F1是无限集合,随着字符集的扩充而增加,构件G等于汉字总数,数千乃至数万字分布于计算机26个字母键位,造成重码率超出常规,因此是没人会用这种方法输入汉字的。
2、按基础部件编码
字符集Q={GB 13000.1,含20902个字},F1={字源},G={560个基础部件},F2={A,B,……Z字母键位置},M ={由A,B,……Z构成的字母组合}。
F1是非固定事物,属无限集合,会随着字符集的扩充而增加,因此字源是不能直接标识(镌刻)在键位上的,而只能将构件G中的基础部件标识(镌刻)在键位上,这样当字符集扩充和随着基础部件的增加,就要修改键盘(重新标识基础部件),这就是目前使用五笔字型输入法的用户,很难适应字符集扩充的道理。对于汉字字源,很多是一种字源条款只对应一个字,目前到底有多少种字源条款尚未可知,但有一点可以肯定,就是字源条款总数要小于字符集Q汉字个数,而对字源的分析因人而异因字而异,具有很大歧义性,造成字源与部件对应关系很复杂,这就是采用基础部件编码难以推广和普及的道理。
3、苍颉码
字符集Q={Big5(大五码),含13060个字},F1={设24个苍颉码字母:哲理类有日月金木水火土,笔画类有竹戈十大中一弓,人体类有人心手口,字型类有尸廿山女田卜},G={121个左右苍颉码字根,能够组成字符集中所有字},F2={A,B,……Z字母键位置},M ={由A,B,……Z构成的字母组合,例如“日”用A键表示,“月”用B键表示,那么“明”的汉字码是AB,“朋”汉字码是BB,X是难字键,Z是功能键等}。
这是一种把汉字按苍颉码字母拆分成苍颉码字根,然后用苍颉码字根编码的方法,主要用于港澳台繁体中文输入,F1是固定事物、有限集合,可标识(镌刻)在计算机字母键位上,当字符集扩充时,苍颉码字根要随之增加,但F1不变,因此不必更改键盘。
3、汉语拼形方案
字符集Q={GB 13000.1,含20902个字},F1={字母A,B,……Z},G={319个拼形字元(112组)},F2={A,B,……Z字母键名称},M={由A,B,……Z构成的字母组合}。
F1属固定事物,有限集合,具有排序功能,不需要将F1标识(镌刻)在计算机字母键位上,系统扩充到大字符集Q={GB 18030—2005 ,含70244个字}时,F1不变,G={542个拼形字元(115组)},具有扩充到整个方块字的能力。
4、按笔画编码
字符集Q={GB 13000.1,含20902个字},F1={汉字笔顺规则表},G={一,丨,丿,丶,乙},F2={1,2,3,4,5数字键位置},M={由1,2,3,4,5构成的数字组合}。
F1属固定事物,有限集合,一般标识(镌刻)在数字键盘的数字键位上,因汉字笔画多,所以码长比较长,区分能力比较差,已经很少用这种编码直接输入汉字,但在其它汉字编码中,常用笔画增加码长达到区分目的,这种方法主要用于汉字排序。
下面是部分汉字编码(含英文)转换对照表:
汉字编码(含英文)F:Q→M转换对照表
输入法 |
Q |
F1 |
G |
F2 |
备注 | |
键盘表示法 |
元素含量 | |||||
整字 |
GB13000.1 20902字 |
20902个字条款 |
20902个字 |
26个字母键位 |
20902×26=543452 |
|
基础部件 |
GB13000.1 20902字 |
字源 编码规则表 |
560个基础部件 |
26个字母键位 |
560×26=14560 |
F1条款数小于Q |
苍颉码 |
Big5 13060字 |
24个苍颉码字母 |
121个苍颉码字根 |
26个字母键位 |
121×26=3146 |
|
汉语拼形方案 |
GB13000.1 20902字 |
26个字母 编码规则表 |
319个拼形字元 |
26个字母键名 |
0 |
不记键位 |
二笔输入法 |
GB2312 6763字 |
笔顺规则表 |
30种笔画组合结构 |
30个符号键位 |
30×30=900 |
|
笔画输入法 |
GB2312 6763字 |
笔顺规则表 |
一丨丿丶乙 |
1—5数字键位 |
5×5=25 |
|
4码电报 |
10000字 |
10000个字条款 |
10000字 |
0—9数字键位 |
10000×10=100000 |
|
注音符号 |
Big5 13060字 |
37个注音符号 |
412种不标调音节 |
37个符号键位 |
412×37=15244 |
|
汉语拼音方案 |
现代汉字 约1.5万字 |
26个字母 汉语拼音方案 |
412种不标调音节 |
26个字母键名 |
0 |
不记键位 |
英文 |
|
26个字母 |
0 |
26个字母键名 |
0 |
不记键位 |
表中“元素含量”栏是指需要记忆的元素总数,例如基础部件共有560个,分布在26个字母键位,在记忆时,每一种部件都有26种选择,那么560个部件总共有560×26=14560种选择,因此需要记忆14560个元素量。因为笔画输入法的5种笔画、二笔输入法的30种笔画组合、注音符号的37个字符,都能标识(镌刻)在键盘键位上,可以认为记忆的元素量趋于零,但存在着一定输入障碍。下面对F特性进行总结:
集合F1具有如下性质:
1、如果F1种类单一,汉字编码简单,否则汉字编码复杂。
汉字编码所依托对像理应只有一种,但很多编码把部件、笔画、拼音都用上了,这里所依托的对像有三,部件依托字源,笔画依托汉字笔顺规则表,拼音依托汉语拼音方案,一种输入法要同时用三种不同编码方法,造成编码复杂,从理论上讲这时输入效率只有原来的1/3,但这种方法应用了汉字的不同属性,能从减少重码提高输入效率中得到补偿,因此是常用的一种编码方法,但编码所依托的对像不宜超过两种。
2、如果F1是固定事物、有限集合,汉字编码简单,否则汉字编码复杂。
笔顺规则表、字母(a——z)、数字(0——9)、干支、十二属相、水浒一百单八将、百家姓、太极、阴阳、八卦、三字经等作为汉字编码依托对像,不但直观,而且能够掌握全貌,属固定事物、有限集合,从理论上这些事物都可标识(镌刻)在键位上,并且都是固定不变的,与字符集扩充后汉字构件数量的增加没有任何关系,因此汉字编码简单适用范围也广。
而字源、棋普、星座、素数等作为汉字编码依托对像,这种对应关系谁都无法全部掌握,具有太多的不确定因素,因此是非固定事物,属无限集合,例如汉字根据字源拆分成基础部件,需要由文字学家来完成,如果把部件与汉字摆放在一起,普通人很难把两者用字源联系起来,而字源到底有多少种类,恐怕连文字学家也难说清;棋普是由棋类学者总结出来的,变换无穷,会玩棋的人未必懂棋普;星座需要由天文学家确定,随着天文学的发展,新发现星座的数量也会不断增多;素数是无穷多的,当超过一定位数时,是否是素数需要由数学家来验证,目前对如何寻找素数还没有好方法,另外,对于非固定事物、无限集合,这些事物是不能直接标识(镌刻)在键位上的,只能将汉字构件标识(镌刻)在键位上,但构件的数量会随着字符集的扩充而增加,这意味着随着字符集的扩充,输入方法也要随之更新,这是用户难以接受的,因此,采用这些事物作为汉字编码依托的对像不但复杂,使用也具有局限性。
3、如果F1条款少,汉字编码简单,否则汉字编码复杂。
笔顺规则表、字母(a—z)、数字(0—1)、十二属相、太极、阴阳、八卦等其条款肯定要少,而字源、棋普、星座、素数、百家姓、三字经等条款肯定要多,因此前者简单后者复杂,这是显而易见的。
4、如果F1具有排序功能,这种汉字编码就容易解决汉字排序问题,否则难以解决汉字排序问题。
笔顺规则表、字母、数字、素数、干支、十二属相、水浒一百单八将、百家姓、三字经等都具有排序功能;太极、阴阳、八卦因条款少,也有利于排序;而字源、棋普、星座等不具排序功能,很难想像,一个建立在杂乱无章基础上的汉字编码依托对像,能够研制出具有排序功能的汉字编码方案只能是幻想,这在三十年汉字编码实践中已经得到了验证,例如采用汉字按字源拆分构成的基础部件编码,至今也未能解决汉字的排序问题。
集合F2具有如下性质:
这是对计算机键盘说的,包括小键盘、大键盘、特殊键盘等。其中小键盘指26个字母键,这符合计算机输入文字特点;大键盘包括字母键、数字键和符号键,这有利于降低重码率;特种键盘是专为某种输入法制定的,从长计议,计算机键盘汉字输入要考虑对外推广,走共同的计算机键盘输入文字的道路,因此汉字编码宜采用26个字母键。
在计算机键盘汉字输入中,构件与字母键有两种对应方法,一种是构件与字母键没有直接联系,任意性强,完全由编码人根据构件特点进行布键,需要记键位;另一种是在汉字转换成构件时,根据汉字的笔画结构和字母的形状,来确定构件与字母键的对应关系,这种对应关系是固定不变的,不需要重新布键,相比之下前者编码复杂,后者编码简单,例如汉语拼音方案与注音符号相比,正是因为五十年前在制定汉语拼音方案时,就已经完成了汉字音与拉丁字母的结合,这种前瞻性造就了今天信息时代汉语拼音的辉煌。
综上所述,一个优质的汉字编码方案应具有如下特征:F1条款要少,是固定事物,有限集合,依托对像具有排序功能,F2采用计算机26个字母键盘,方案能够扩充到足够大的字符集,最好是整个方块字,对数字键盘汉字输入也有相应解决方法,不具备或与上述功能相差甚远的汉字编码方案的研制已经没有实际意义。
在汉字编码中,码长曲线是研究汉字编码规律的重要工具,而码长是衡量汉字编码难易程度的重要指标,从整字到笔画,F1条款总数和复杂程度,会随着码长的增加而递减,对任一汉字编码都可根据其码长,在码长曲线上找到对应点,可对编码的难易程度进行评估。
在码长曲线上,有一个特殊点叫中值点,中值点汉字编码的码长λ=
在整字与中值点之间,越靠近整字端编码难度越大,例如整字是最大笔画结构之集合,λ=1键/字, F1条款最多等于汉字总数,每条款只对应一个字,因此编码难度最大但区分能力最好,没有重码;基础部件码长近似值λ=4.5键/字,超出中值点(3.2键/字)约1.3键/字,因此应用具有一定难度。
位于中值点的是理论上的汉字编码,这是指汉字编码的码长刚好等于中值点,适于汉字输入和汉字排序,这是理想的汉字编码方案,但很难达到,在实际汉字编码中,其码长只能是趋于中值点,目前唯一接近中值点的汉字编码,是由笔者研发的汉语拼形输入法,在GB 13000.1字符集中,码长近似值λ=2.9键/字,与中值点码长(3.2键/字)相差0.3键/字。
在中值点与笔画之间,越靠近笔画端编码难度越小,例如笔画是最小汉字结构之集合,现代汉字笔画有31种,基本笔画只有“一丨丿丶乙”5种,编码F1条款最少等于汉字笔顺规则表,因此汉字编码最简单,但码长最长等于汉字平均笔画数,对GB 13000.1字符集,λ=10.1键/字,输入效率低,常用于汉字的排序。
《汉字近形编码论文之八》
辽宁省/本溪/高国鹫
E-mail:hypx8798@yahoo.cn
新浪网博客:字道
2008年8月20日