汉字空间
现有的汉字字符集是一个庞大的集合,单就其中汉字的数量来说,常用字6763字,通用规范字8105字,CJK基本集20902字,包括扩展集收录八万多字,仍在增补中(多是错字讹字,甚至是颠覆汉字规律的字),似乎无有竟时。
如果善加利用汉字固有的字形、字理的规律,完全可以用少量有限的汉字,表示出其他所有汉字(即动态组字),不用再维持这样一个庞大的字符集。当然,以现有计算机技术(实时计算字形并渲染显示)来说,要以动态组字取代字符集,还有很长的路要走。但现行字符集的设计似乎是在刻意阻止这种局面,尽管已经收录八万之多汉字,仍把一些基本的汉字书写符号(例如一些部首、部件)拒之门外,即便是进行汉字的表达也是不可描述。
一边是基本部首部件阙如,一边是错字讹字无有竟时,看似不合理,却极其合理:假如少量汉字可以表示所有汉字了,谁还会为汉字字符集买单?
西方人对待汉字象集邮,把每个汉字当成孤立的图画,不管是有意还是真心不懂,总归是文化差异甚大情有可原。但西方人对待数学,可一丝不苟,例如,提出了线性空间的理论,这个理论有广泛的应用,也是现在理工科基础课程之一。
用少量汉字表达其他所有汉字这样一个简单的诉求,需要引入「汉字空间」的概念来解决,这也正是线性空间的一个具体化应用。以下为非理工科背景的读者简单介绍一下线性空间的概念,理工科的可以绕过。
======
所谓线性空间,就是一个定义了加法和乘法的数的集合,集合中任意两个元素相加或相乘得到的结果也是集合的元素。集合有无限多个元素,但又象一个封闭的空间(总能包住任意的运算结果),因此称为「空间」。又因为加法和乘法习惯上称为「线性」运算(想象一下一次函数 y=kx+b 是一条直线),所以这就是「线性空间」的由来。【注:严格的数学定义可能抽象和乏味,在此仅给出易于理解一种解释。】
例如,自然数集合 {1,2,3,...} 在定义了加法和乘法后就构成了一个线性空间,任意两个数的和、积,也都是自然数。注意这是一个一维线性空间。
======
汉字空间是定义了汉字运算法则的无限集合,其中任意两个元素(也可以是两个相同元素)的组合,仍是该无限集合的元素。
汉字运算法则,当然不会是照搬数学的加法和乘法,汉字的运算,就是组合,可以粗略认为是合体字的十二种结构类型:⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻。
假设我们已知汉字空间内有一个元素是「口」,那么可推知,吕、吅、品、... 都是汉字空间里的元素。这就和自然数集合是一样的:{1,2,3...}。
仅有上面的定义还不够,汉字空间还是一个多维空间。这里再介绍线性空间「基」和「维」的概念。
线性空间的基,是指一组元素,它们谁也表示不了谁,相互独立,这组元素的个数就是空间的维数。现实三维空间有长宽高,长宽高的度量单位就是三维空间的基。前述自然数集合,实为一维线性空间。
汉字空间的基,就是一组谁也不能表示谁的元素,例如:口、木、火、氵等等。汉字空间的基有多少元素?目前还没有答案,但可以估计大约在数百的量级,理论上也没有上限,因此汉字空间是一个数百维空间,甚至可以是无穷维空间。
汉字空间不但元素数量是无限的,维数也可以是无限的,但能够被人认知的只是其中一个由有限个基元素张成的子空间,甚至仅是子空间的一个局部,难以正确理解和认知空间的维数。只能通过对这个子空间甚至局部的反演,得到一个基的估计。
20902汉字和560部件的并集,可以粗略认为是一个汉字空间的有限子空间,其中560部是这个子空间的基的估计,这个子空间的维数大约是560维。当有限子空间扩展到八万多字时,560部件的基就不够用了,也会发生扩展。
汉字空间是对现有字符集的超越,有以下不同:
1. 汉字空间里的元素是无限的,而字符集里的元素是有限的(尽管也可以做有限的扩展)。
2. 汉字空间附带一个组合运算法则,字符集不带运算法则而仅是有限个元素的罗列。
3. 汉字空间是N维空间,而字符集没有维的概念(尽管字符集可以排成一维、二维、甚至多维矩阵)。
4. 向汉字空间有限子集添加新元素,不但增加元素数目,还有可能增加维数;向字符集添加元素,只会增加元素数目。
5. 汉字空间可以用有限个基和组合运算法则,表示无限多汉字元素,字符集只能靠无限扩展表示无限多元素。
前面说的,汉字空间有很多、甚至无穷维,再举几个例子。假定只有三维,正好对应我们现实三维空间,不妨以XYZ坐标系来表示,它的基不妨设为 {口,木,火},X方向是一维,名为「口」,Y方向名为「木」,Z方向名为「火」。那么,沿X方向将排满了这样的字:口吕吅品…,沿Y方向排满了:木林森…,在Z方向排满了:火炎炏焱燚…,在XY平面上,则是:呆杏啉槑喿榀…,在YZ平面上,则是:杰棪炑燊焚…,在ZX平面上,则是:焒吙啖煰…。在这三个平面之外的空间里,则挤满了:燥、以及各种口木火的组合。这才仅仅是三维汉字空间。试问:什么样的字符集能够容纳这样的空间?
以26个字母拼写的英文,实为26维英文空间(先不管一些符号如' 等),26个字母就是空间的基,运算法则只有一种:从右侧拼接。由于英文空间过于简单,无须字符集来存放单词,并可以一维有序排列成字典,所以长期以来它没有被认识到其实是一个26维空间。
尽管上面汉字空间的构造已相当宏伟,但实际情况仍然复杂地多。
首先,现有汉字字符集,仅是汉字空间一个子空间的局部,用这个局部去推测全空间,难免如管中窥豹,不能看个究竟。
其次,汉字的形态也在历史演进中发生了变体、融合等等,有的已难以辨识本来面目。从这样一个充满讹变的局部去反演汉字空间的基,犹如在被引力场扭曲的空间里分辨方向。
第三,汉字空间基本来的定义是互相独立的,然而,汉字字形、字理(字源)造成了很多干扰,很多原本显然的事情,就变得说不清楚了。例如:从字形上看,a 和 b 显然互相独立,但对于汉字,木和十相互独立吗?口和日相互独立吗?人和火呢?九和丸呢?那还得回过头来定义什么是「互相独立(或正交性)」。
总之,由于以上原因,汉字空间的模型仍很理想化,实际上能够从现有汉字集反演出来的,也只能是一个近似估计,近似在:只估计了一个子空间;基和维数都有误差;基元素的正交性也打了折扣。
但这些近似性,不妨碍得出有价值的结论:例如,粗略认为,20902汉字字符集和560部件的并集,以及十二种合体结构,构成了一个汉字空间的子空间,这个子空间有560维,子空间的基就是560部件。
当然,这个结论并不十分令人满意,因为560部件本身就是一个相当粗糙的产物。如何定量地定义正交性(不可避免地要在字形和字理间权衡),去进一步优化这个子空间的基,是下一个议题。