发新话题
打印

码表的猜想——并非哥德巴赫猜想

码表的猜想——并非哥德巴赫猜想

极点的码表是开放的,组织结构一目了然;紫光的码表是加密的,结构如何?
一、没有专设的简码
打开调频功能,试着输入如下内容:
今jin
近jin
晋jin
尽jin
谨jin
金jin
以全码方式键入jin,用数字键选后面的字。每输入一字,这些字的前后次序都要改变。
再以简码方式键入j,看看它们的排序,竟然和全码时完全相同。这意味着键入j后,进行的是模糊检索,类似于Excel中编码“始于”j的“筛选”操作。换言之,简码检索的是全码词组的编码,无论次序如何变化,简码和全码总是一致的。
破译poyi
破衣poyi
婆姨poyi
打开调频功能,键入上列三个词,可以发现,全拼poyi和简拼py中两者的排序也完全相同。
同理,简拼检索的也是全拼编码,并没有专门的简拼词库。
二、词的简拼检索
词的简拼检索,其实质是声母的检索,忽略韵母。问题在于,韵母中也有包含声母的情况,如ang、er等;如何识别?我想是这样的:
盘子|pan|zi
派你|pai|ni
在声母前加识别符“|”,键入p,系统实际发出“|p”指令,就能将韵母中的n、g、r等分离出去。当你键入pn后出“派你”,而不会出“盘子”。
三、双拼检索的也是全拼码表
当你在双拼自定义文件中定义了an=j后,键入pj则出“盘”。
键入pjzi则出“盘子”,在全拼码表中检索的实际是|pan|zi这个代码。
第一、三个代码(奇数)对应声母,系统发出|p、|z指令;第二、四个代码对应韵母,系统发出an、i等指令,在全拼码表中就能检索出相应的词。总体上按“奇偶奇偶——声韵声韵”的次序依次发出两类代码指令。
四、码表的组织结构
紫光有系统码表、用户码表、自定义码表。前两者起初完全相同,用户码表后来增加了自造词,体积会逐渐增大。这里主要谈谈用户码表。
①格式
Jiang 将 讲 降 犟……
Jin 今 近 晋 尽 谨……
这是极点的格式。简拼时如果要将“谨”调频到首位,则整个音节jin所包含的全部汉字都要提到前面,词频更高的“将”等字将被排在后面,这不合理。除非专门编制简拼的码表,实际上并没有。故紫光的码表格式应该是:
将jiang
讲jiang
……
今jin
近jin
晋jin
尽jin
谨jin
某个字(音)调频换位,只影响一个字,不影响整个音节。
②组织结构
紫光的显示方式是单字在前,词组在后;单字简码不会检索词,如键入j,显示“就”,不会显示“就要”,绝对不受调频影响。故其组织结构可能是分段的:
[单字]
……
[词组]
……
码长不大于2时,调频只在单字区段有效;大于2时,只在词组区段有效;互不影响。
五、单字优先原则
双拼时单字和词的简拼会冲突,若定义in=n,则键入pn,只出单字“拼”,不出词组“派你”。
此种现象可称为“单字优先”原则。若单字区段编码和键入的代码相符,则优先显示单字,不再继续检索词组。拼音加加则是两者同时检索的,在候选窗上都可以找到。
六、实时造词
用双拼键入代码pjzi,但词库中无“盘子”这个词。此时是按音节显示单字,在候选窗中键选“盘”字,该字取代编码栏中相应的代码pj,然后显示音节zi对应的单字,键选“子”后,“盘子”造词完成,同时上屏。
若要造词组“锦绣山河”,词库中已有的词则会优先显示,单字在后面显示;先选“锦绣”,再选“山河”,该词造词成功。
输入长编码造词,优先检索词区段,然后检索字区段。这与正常输入的单字优先原则恰好相反。
自动造词是正常输入的逆过程。
七、总结
紫光用一个全拼的全码码表,解决了简拼、双拼等问题,节约了编码所用的字符空间。
极点的码表格式比较适合形码,因为简码不多。重码的字词共用一个代码,能节约软件空间。但不适合拼音。

TOP

文章不错啊,叫好不叫座?

“一、没有专设的简码”
不能得出结论。实际上,更可能的做法是全码、简码是单独的,只是共享一个词频库。

“二、词的简拼检索”
老徐的思路是可行的(用“|”)。更好的方法是声韵分开存储(相当于不同的字段)。

“三、双拼检索的也是全拼码表”
没问题。我想,一般也都是这么干的吧。如果不考虑其他问题,反过来(全拼检索双拼码表)也行的。

“四、码表的组织结构”
应该是频率表在起作用。通常不会在码表内调整顺序。

“五、单字优先原则”
与码表结构关系不大。

“六、实时造词”
实际上,打字和造词的时候采用字词何者优先的原则,只主要与用户接口有关,而与码表结构关系不大。现在的输入法软件应该是给出选项的。

TOP

发新话题