拼一:一种汉字拉丁化方案 | pizin yi : yi zhozeng han zih la direireng huazei fang ahn

目标

汉字与编码一一对应
以拼音为基础
附加类似“一”的声音字母(因为这样对拼写的影响比较小)
用五笔码来生成附加字母
高频汉字应该不用附加字母或者用比较少的附加字母

算法

1. 生成从汉字到五笔码的映射表

为每个汉字生成唯一的五笔码(使用数据源A)
对于重码的汉字,按以下顺序加入额外的字符串:
a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;aa;ba;ca;da;ea;fa;ga;ha;ia;ja;ka;la;ma;na;oa;pa;qa;ra;sa;ta;ua;va;wa;xa;ya

2. 生成从汉字到拼音的映射表

为每个汉字选择一个拼音(使用数据源B和数据源C)
如果数据源C中含有该汉字,选择数据源C中的第一个拼音
如果数据源C中不含有该汉字,而且它有一个5声调(轻声)的拼音,选择这个拼音
否则,选择字典顺序的第一个拼音

3. 生成拼一码

按照数据源B的顺序,依次处理每一个汉字:
定义 前缀 = 拼音的声母和元音
定义 后缀 = 拼音的结尾辅音字母 ("n", "ng", "r"), 而且要把"r" 转换为 "l" (为了避免接下来的冲突情况).
尝试每一种候选的编码,选择第一个没有被使用的编码
候选的顺序如下:
前缀 + 后缀无声调的拼音
前缀 + 编码[五笔[0]] + 后缀无声调的拼音, 插入了一个五笔字母的“一”编码
前缀 + 编码[五笔[0]] + 编码[五笔[1]] + 后缀无声调的拼音, 插入了两个五笔字母的“一”编码
前缀 + 编码[五笔[0]] + 编码[五笔[1]] + ... + 后缀无声调的拼音, 插入了更多五笔字母的“一”编码
前缀 + 编码[五笔[0]] + 编码[五笔[1]] + ... + 编码[额外字符串] + 后缀无声调的拼音,插入了所有五笔字母和额外字符串的“一”编码
“一”编码码表
gre
fri
drie
srei
ar
hje
jji
kjie
ljei
mj
tze
rzi
ezie
wzei
qz
yhe
uhi
ihie
ohei
ph
nye
byi
vyie
cyei
xy
额外字符串:
a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;aa;ba;ca;da;ea;fa;ga;ha;ia;ja;ka;la;ma;na;oa;pa;qa;ra;sa;ta;ua;va;wa;xa;ya

数据源

A. 五笔编码表 https://github.com/ellicefix/98wubi-unicode/blob/master/98%E8%B6%85%E9%9B%86-%E5%8D%95%E8%A1%8C%E5%A4%9A%E4%B9%89.txt (GitHub : ellicefix/98wubi-unicode forked from GitHub yanhuacuo/98wubi-unicode)
B. 汉字词频和拼音 http://lingua.mtsu.edu/chinese-computing/statistics/char/list.php?Which=MO (Modern Chinese Character Frequency List by Jun Da 笪骏 (jda@mtsu.edu))
C. 常用汉字的常用拼音 http://zein.se/patrick/3000char.html (The most common Chinese characters in order of frequency, by © 2003 – 2009 Patrick Hassel Zein )