码表应优先按字频排序(附GBK字集综合频度表) - 范文中心

码表应优先按字频排序(附GBK字集综合频度表)

04/29

一直以来,字频对于码表排序的作用不会引起输入法制作者的多大重视,原因是大部分形码本来就以低重码率为目标,偶有重码时发现重码字的先后次序不理想才凭主观印象稍作调整。反观早已摆脱纯码表形式的拼音输入法一贯强调智能调整字词频度,由周有光提出的“高频先见,用过提前”即高度概括了拼音输入法在这方面的表现。“高频先见”是指事先根据现代汉语字词频度安排的静态次序,“用过提前”则是根据用户在输入过程中选择的累计次数动态调整次序。

然而使用数字小键盘输入的形码如五笔画和四角号码都面对大量重码,因此根据字频的高低对码表的重码字排序就显得意义重大了。我曾根据龙文输入法平台所提供的四角号码码表按字频筛选出多级简码,当时并未意识到整理出来的码表已暗含字频排序,倒是发现龙文本身就有一套字频和词频数据,其中规定词频小于10初次不能用形码输入,待完成逐字输入后由系统通知自动加词。

码表格式

在进入根据字频调整码表之前……实际上,早在Windows 95中文版问世以前,由当时新天地(中文之星)专门为Windows 3.2中文版开发的输入法生成器首创汉字在先编码在后的码表格式,一反当时沿用DOS中文平台的编码在先汉字在后的码表格式,令人耳目一新。如今很多输入法工具提供所谓的Win码表和极点码表的格式转换,指的就是上述两种码表格式,但何者为优,相信即使开发者也说不出更多的道理来。印象中xml00大师曾论证过从码表文件大小来讲,编码在先汉字在后的极点码表格式占有优势,原因是同码字可归并于同一行。故极点中文平台另提供码表优化工具,专门用于归并同码字。反观汉字在先编码在后的Win码表格式不具备归并同码字的特性,倒是允许可有可无的构词码。

经过多年的实践,我终于发现汉字在先编码在后的Win码表格式具备了按字频排序的特性,这无疑比编码在先汉字在后的极点码表格式仅仅节省文件大小空间的优势更重要。由于Win码表格式单字成行,因此易于标注其字频,并根据字频排序结果输出,可直接用于码表。极点码表格式在解除优化后虽然同样可以标注字频,但输出结果不能直接用于码表,其最终码表也不能直观看出字频排序的作用。这是由码表以编码为主轴的格式所决定的,作为编码对象的字词条无法集中体现本身的序性,只能在“字里行间”窥出端倪。

综合字频

我曾经在网上搜集了五份字频表,当时并没有比较它们的不同,只选择了一份最全的GBK字频表作为参考。这次重新打开这五份字频表,竟然发现其中三份GB2312字频表是相同的,而且都是源自那一份GBK字频表。较后更发现龙文输入法平台的字频数据也与此同源(难道“天下字频一大抄”?),不禁感叹兜了一大圈子,要找的字频表早已存在电脑中。唯独一份7000字字频表属于完全独立的字频统计数据,其参考价值也更高。

我在《经修订完整四角号码问世 采用龙文平台含简码词汇·关于简码及词汇》一文中曾指出,“经过实践反馈,其中三个一级简码做了调整:业→这、国→是、人→个……”显然,当时所用的GBK字频表存在误差,于是找出7000字字频表来对照,正好印证了上述调整的合理性。这三组字在GBK字频表与7000字字频表的序号如下:

GBK字频表7000字字频表

业/这 20/25 310/10

国/是 2/12 95/3

人/个 3/23 9/8

当我进一步把这两份字频表用于大易三码码表排序时,发现所有GBK字频表不理想之处在7000字字频表都有了合理的安排。以下是3500常用字范围的GBK字频表与7000字字频表的序号对比:

GBK字频表 7000字字频表

资/次91/115567/156

邀/迫1101/14461572/1176

诣/谐2336/23813172/2509

评/讲546/6621044/552

覆/飘1574/17621496/1484

璞/瑛1764/30863469/3347

米/八309/536891/376

鳖/爹2560/28503729/1833

跻/蹄2532/28883736/2692

企/促174/7951261/1190

贷/俩/侠986/2031/27892307/1673/2120

例/倒729/1007877/505

售/倍646/10651768/1361

估/舍1245/12801628/1048

晖/晕2146/22752731/2181

运/远258/520416/317

扩/扎882/15221638/1340

励/厉856/18021816/1304

厕/刷1584/16272775/1756

衷/哀1804/18181959/1615

竞/祝/亮834/903/10151384/1362/683

敦/敲1487/19591870/1657

辨/辩1919/21041724/1617

娅/妍2834/31843440/3301

窜/帘2941/32232518/2111

赠/宿/赌1360/1631/22192009/1413/1737

贬/赈/账2271/2355/25332795/3742/2340

宵/霄2256/34332738/2652

鱼/刀892/15671059/934

饥/饶2562/26112267/2099

饺/馒2791/29593861/3353

弦/弥2132/23202106/1762

录/攻592/8531023/973

支/友381/568497/401

党/觉604/815830/312

菌/茵1518/24152886/2571

薪/蒂1543/24712440/1723

莘/萃2441/25344036/3221

苦/若883/1053543/432

水/又131/292167/125

沪/鸡1130/11843316/1391

沈/沉1081/11871207/742

涨/艰1181/13301961/1689

熔/炯3170/31723405/2890

即使3500常用字范围以外的字,7000字字频表似乎也比GBK字频表更合理:

GBK字频表 7000字字频表

簟/睾6067/61805180/4997

簋/箧6069/60825640/4808

蟑/蟀4056/45904836/4368

珩/珂3460/36614310/3526

胰/胯3083/49914452/4204

馑/馐5422/54235511/4806

饕/囔5429/67034952/4378

嗲/吩3895/43025005/2598

喱/喔4292/67265895/3387

嗨/咚3795/38023830/3154

匝/帚3901/47383864/3805

颟/荚4528/46136118/4711

憩/舔2921/37343850/3783

汨/汩4097/63814703/4014

潢/滇2873/31754028/3619

熵/焙6316/63214674/4535

至此,我们可以确定7000字字频表优于GBK字频表,那么要怎样综合利用这两份字频表呢?理想的字频表应该是以7000字字频表为主,再把GBK字频表中与7000字字频表交集的字删掉,然后把其补集与7000字字频表合并,这样就得到一份具有代表性的GBK字集综合频度表了。

在TextPro中可以这样处理:首先要把表中的序号和频度数据删除,其中GBK字频表还混合了部分全角符号,一概都要删除,然后设置“自定义替换表”,把7000字字频表选中,打开GBK字频表,通过如下替换得到其补集:

查找:(\c)

替换:\T{\1}

再把空行删除(查找“^$”替换为空),把补集合并到7000字字频表后面,加上序号,也就完成了GBK字集综合频度表。

标注字频

有了上次利用Excel按字频筛选各级简码的经验,这次当然也是想到利用Excel的VLookup函数对码表单字标注字频。这时候刚好看到五笔爱好者论坛有一位Vu大师提出TextPro可标注字频,正好启发了我利用TextPro解决字频标注问题。其实解决这个问题的方案,TextPro的自定义替换表比Excel的VLookup函数更容易理解。且让我们比较两者的不同之处:

TextPro通过设置“自定义替换表”把字频作为要替换汉字的数据,其格式安排如下:

的        1

一        2

是        3

了        4

不        5

在        6

有        7

个        8

人        9

这        10

……

接下来,打开输入法单字码表,通过替换对话框输入正则表达式如下:

查找:(\c)\~f+

替换:&\t\T{\1}

完成替换后,码表的单字和编码后面就附上了字频数据,中间用跳格符隔开。这比Excel在A列贴出按字频排列的汉字,B列贴出码表的汉字,C列贴出编码,然后D列使用函数:

=vlookup(a1,b:c,2,false)

从A列字频找出B列汉字并贴出C列编码,明显干净利落多了。

这项工作的最后目标是码表单字按字频排序,可惜TextPro不具备排序功能,当然交给Excel处理最好不过了。如果没有Excel,我们还可以用Word来排序:在Word打开经过TextPro标注字频的输入法单字码表,选择全文,选择表格中的“文字转换成表格”,最后选中第二列进行排序,并将“表格转换成文字”即可。如果机器条件较差,“文字转换成表格”可能需时较久,但排序往往是十几秒的事。如果发生内存不足,建议重启系统完成上述工作。


相关内容

  • 光大证券经纪人工作手册(20**年.3)
    光大证券经纪人工作手册 经纪业务总部 2008 年 3 月修订 目 录 总经理致辞 .............................................................................. ...
  • 从此乱码是路人
    相信大家在刚学 Qt 的时候一定遇到过 #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QLabel lb; ...
  • 淘宝权重排序表
    自然排名权重表 1:商城优先,消保其次,无消保其后. 2:店铺高级别优先,级底其次. 3:作弊程度,无作弊优先,有作弊按百分比例靠后. 4:违规扣分程度.按违规程度排序. 5:退款率:按退款百分比排列. 6:转化率:每进店百人购买比列计算排 ...
  • 基于贪婪算法的自动排课表系统的研究与实现
    第29卷第18期Vol.29 No.18 计算机工程与设计 ComputerEngineeringandDesign 2008年9月Sept.2008 基于贪婪算法的自动排课表系统的研究与实现 王帮海1,2,李振坤1 (1.广东工业大学计算 ...
  • wordpress中文标签链接打不开显示404错误
    自从将博客搬到华夏名网的主机上后,问题就接二连三的出,先是主机伪静态的设置问题,现在又是wordpress中文标签链接打不开显示404错误.因为我的博客是放在windows主机上的,所以这个问题也是在我的意料之中的,估计也就是三下五初二的事 ...
  • 阿里巴巴培训
    信息质量提升手册 前 言 该手册主要是从买家体验和阿里巴巴网站规范的角度出发,通过对许多真实案例的整理提炼编辑而成,用于指导卖家提升自身的信息质量,内容涵盖信息质量提升的指导,指导部分主要采用文字提要和实例相结合的形式,从产品名称,关键词, ...
  • Huffman编码
    <信息论与信源编码>实验报告 1.实验目的 (1) 理解信源编码的基本原理: (2) 熟练掌握Huffman编码的方法: (3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异. 2.实验设备与软件 (1) P ...
  • 为了规范全国网吧安全管理软件开发与应用
    前 言 为了规范全国网吧安全管理软件开发与应用,便于数据处理,实现集中管理,保障公共信息网络安全,制定本检测规范. 本检测规范的编写以公安部发布的<计算机信息网络国际联网安全保护管理办法>中的有关规定为依据,数据项目及长度以满足 ...
  • [数据结构]期末考试题及答案
    2011-2012学年第一学期期末考查 <数据结构>试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一.选择(每题1分,共10分) 1. 长度为n 的线性表采用顺序存储结构,一个在其第i 个位置插入新元素的算法时间复杂度为( ...
  • 数据结构导论试题1
    全国2004年10月高等教育自学考试 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为( ) A.逻辑结构.存储结构.机外表示 B.存储结构.逻辑结构.机外表示 C.机外表示.逻辑结构.存储结构 D.机外表示.存储结构. ...