汉字形声字中可搭配形旁最多的声旁是什么?
的有关信息介绍如下:
写得有点长,先把结论放出来吧:答案应该是「各、令、且、分、占、干、合」之一。
一看到题目,我就又想编程了。
我在这里找到了一份汉字 IDS 数据库:
IDS (ideographic description sequence),是用来描述汉字的组成部件和结构的序列。举数据库中的几个例子:
这行数据的意思是,「知」字为左右结构,由「矢」「口」两部分组成。U+77E5 是「知」字的 Unicode 编码,对本题来说没有什么用。
再如:
这行数据的意思是,「罚」字是上下结构,上边是「罒」,而下边又是左右结构,由「讠」「刂」组成。
当汉字的一部分是个合体字时,这一部分一般不会进一步被拆分,比如「梨」拆成「⿱利木」而不是「⿱⿰禾⺉木」。这正合我们意,因为我们希望把「利」作为「梨」字的声旁整体考虑。
当汉字的一部分不成字时,数据库中会用特别的代码来代表这一部分,比如:
这里就用「&CDP-88F1;」代表了「存」字的前三笔。在编程统计时,我们只需要把所有以「&」开头、以「;」结尾的东西当成一个整体就好了。如果统计发现某种这样的代码出现频率特别高,我们再去研究它到底代表什么。
这份数据的收字范围为 Unicode 代码 U+4E00 ~ U+9FA5,计 20902 字。这个范围应该能几乎囊括《现代汉语词典》中的字,还会多出不少字,不过应该不影响统计。
我要编程做的事情,就是统计在各个汉字的 IDS 中,各种部件出现的次数有多少,然后选取出现次数最多的几个。IDS 数据库并没有指明汉字拆出的各个部件是声旁还是形旁。但是,凭借我们对汉字的了解,我们很容易判断一个部件是常作形旁还是常作声旁,所以只需对结果进行一步人工筛选。
根据以上思路,得到第一版程序:
运行结果的前几行为(第二列为部件,第一列为部件的出现次数,第三列为例字,仅保留前 10 个):
很不幸,这些部件全都是「常作形旁」的那种。实际上,直到第 60 多行,才出现「欠、白、见、方」等既常用作形旁、又常用作声旁的部件。这样人工筛选起来,工作量还是太大。
怎么办呢?我们要寻找一个部件作声旁时典型特征。作为一阶近似,我们可以用「该部件是一个左右结构汉字的右边」来代替「该部件为声旁」。这个条件当然不是充要的,但近似程度足够好了。
由此得到第二版程序如下。输出结果时,按每个部件「出现在右边的次数」排序,不过为了完整,例字还是输出该部件在任何位置能组成的字。从 IDS 中提取出「右边部件」并不简单。当然,可以先完整地把 IDS 解析成树形结构,但其实也有些小伎俩,留给感兴趣的读者思考,也可以看代码。
下面是程序运行结果的开头部分:
其中,第三列为部件,第一列为部件的出现在右边的次数,第二列为部件出现在任何位置的次数,第四列为例字,仅保留前 10 个。
可以看到,排名最高的几个部件还是常常出现在右边的形旁,但很快就出现了一些组字能力很强的声旁了。「欠、见、隹、皮、斤、殳」几个部件排名较高,但它们都是形声兼用的。但紧接着的「各、令、且」,就都是只用作声旁的了。这三行的完整例字如下:
下面还有「分、占、干、合」几个几乎只用作声旁的部件,能组的字也比较多:
题主可以在这些字中继续筛选「在《现汉》中能查到的字」,得到最终结论。



