IME 板


LINE

看板 IME  RSS
重新作一次完整的介绍. (*) 源起: 我以前用行列三十的 CAI 练习, 锻练常用字一千字, 现在已经把行列的规则全部忘光了, 其余的字只好利用注音来输入. 行列的缺点是常用字选字率太高, 所以我没有把行列学好的愿望. 为了避免选字的问题, 我决定制作一个选字率零的输入法. 研究自己的输入法的想法是从 1995-1997 年开始的. "Google 网上论坛" 还有保存一些我在 tw.bbs.comp.chinese 跟别人讨论输入法的文章, 那时 也买了不少输入法的相关书籍. 经过简易的计算 (26*26*26 = 17576), 我相信把 BIG5 (约 13053 字) 用三码来输入是可行的, 所以一开始是研究如何把常用字用最少的字根来组成. 一段时间之後, 突然顿悟, 只需把所有的字都强制设成三码, 这样常用字就可以 轻易地放进简码区, 没有太大的困难. 同时这也是很容易制作的输入法, 因为 我一开始就决定字根越多越好, 用字根数量来换取无重码, 所以也不需要把字拆 得很细, 研究每一笔画. 自觉观念上有所突破之後, 我就开始开始专心做其他的事情. 这个时间点 没有记录, 不过我相信是在 1997-1998 年左右. 後来就几乎没有花时间来制作, 直到 2002 年 1 月 30 日, 决定在 BBS 个人版公开说明要制作免费、开放的 输入法, 以便实际实作. 当时提出的宣告是 "目前完成度: 概念 100% , 字词分析 0% , 程式 0% , 文件 0%" 经过三年, 完成度提高不少, 不过想要达到的目标渐渐增加, 做好的时间 遥遥无期, 所以只好再重写一次最新版本的简介, 希望可以把一些概念提供给 别人参考. (*) 无重码: 这是我的输入法的最重要、最基础的目标, 其他皆可放弃. 利用一些强制性的规则, 要达到无重码是很容易的. 以下列出的数字可能会有些误差: big5 约 13053 (再加 7 个倚天字), 在 unicode 中, gb2312 约有 6763 字, 去掉与 big5 同位置的部分,还有 2381 个. jisx 0208 约有 6356 字, 去掉与 big5 & gb2312 同位置的部分, 还有 848 字. ksc 暂时不处理. (参考 CJKV 933 页, Duplicate Hanja in KS X 1001:1992) (同字形、不同音的字是字形输入法的重大困扰.) 13060+2381+848 = 16289 字. 26*26*26 = 17576 字, 所以每个字都用三键, 可以做到不重码. (big5 + gb2312 + jisx 0208 的文字) (符号另外处理) (1) 上述的数字是基本功能: "繁简加日文不用选字". 我同时也很希望这个输入法同时适用於其他三种语言环境: (2) GBK/1 (?) + GBK/2 汉字6763个 + GBK/3 汉字6080个 不重码. (最好 GBK/4 之中的常用汉字也不重码) (ref. Google 搜寻: gbk 1 级) http://www.unihan.com.cn/news/wangxb_ful.htm (3) 日文 jisx 0208 + jisx 0212 不重码. (4) big5hkscs 汉字字符不选字. 4377 + 13060 = 17437 (ref. 数码21:资讯科技基础建设:甚麽是《香港增补字符集》 http://www.info.gov.hk/digital21/chi/hkscs/development.html) 在标准模式 (big5 + gb2312 + jisx0208), 输入三键 + "2" 是输出 GBK 字元, + "3" 输出 JIS 字元, + "4" 输出 BIG5HKSCS 字元. 输入三键 + "1" 不变, 输出标准模式字元. 在第 (4) 项 BIG5HKSCS 模式时, 跟上述的方法相同, 输入三键 + "1" 输出标准 模式字元. 也就是说, 其实我是同时在做下列输入法: big5, big5hkscs, gb2312, gbk, jisx, unicode. 它们之间的排列组合所造成的复杂度, 会严重地影响开发进度. (*) 其他特色: 0. 标准字: 26 * 26 * 26 = 17576 ([a-z] 三个键加一个空白.) 1. 字根数量多: 在开发初期, 就预估 BIG5 字根约有 2000 ~ 3000 个, 现在的状况是: ici findrootuni2run.ici uniok.txt | wc -l => 2253 约 2253 个, 它还包含了简体及日文的部分字根. 只用约一般输入法十倍的字根来让选字率达到零, 其实很划算. 2. 无省略字形: 一般的拆字输入法, 常常采用 "首、次、三、尾" 的方式取码, 我认为 这样子不合理, 会造成讯息的损失, 所以用相反的方法处理, 不但不省略, 字形还常常重复使用. 3. 用可见字组描述字根. 在每一个独立支援的字集, 都可以用字集内的字元描述字根. 如此就不必造字, 也可以描述字根, 方便使用者学习. 例如: U+897B : 左衣 攀 (手) # 襻 (b5) U+9C5E : 鱼 还右 (衣下) # 鱞 (b5) 全部包含的 XX 是用 上XX 下XX 左XX 右XX 来代表 热 的下半部是 "下火" 江 的左半部是 "左水" 作 的左半部是 "左人" 字的部分是用 XX上 XX左 XX外 XX内 XX右 等来代表. 还 的右半部是 "还右" grep 还右 uniok.txt U+5107 : 左人 还右 # 儇 (b5) U+566E : 口 还右 # 噮 (b5) U+571C : 国外 还右 # 圜 (b5) U+5B1B : 女 还右 # 嬛 (b5) U+5BF0 : 家上 还右 # 寰 (b5) U+5F4B : 弓 还右 # 彋 (b5) U+61C1 : 左心 还右 # 懁 (b5) U+64D0 : 左手 还右 # 擐 (b5) 如果不习惯某些用词, 因为资料表格是文字档, 可以轻易地 修改, 例如把 "还右" 换成 "环右". 4. 拆字时不会有困难. 所有的字形都包含在字根表之中了, 拆字一定不会有问题. 不会的字 只需查表即可. 5. 没有容错. 一字三码, 三码一字. 容错是不必要的, 难字查表即可, 学习者不会有疑惑. 6. 正式版本确定公布之後, 不可以修改. 修改字码会浪费学习者的时间. 好的做法是一开始就做到最好. 其次是全部重新翻新, 开发新系统, 但以附加的方式增进原本的系统. (*) 如何做到无重码(不用选字): 重码的意思是: 两个不同的单字的输入键位相同, 以致於必须设法避开, 或是让使用者选字. 重码会严重地降低输入文字的速度, 一般的输入法, 常用字区也常常有重码. 呒虾米输入法对於减少重码, 作了很多努力, 但仍然没有达成完全无重码 的效果. 而这个输入法利用了一些简单的技巧来解决重码的问题: 1. 运用大量的的字根, 因而能够分散相似的文字至不同键位. 相似字根的文字自然地被分开. 例如: "员" 和 "呗", 由於 "员" 字旁常被其他文字使用, 所以 "员" 是字根. 取: "员: 员 (贝)", 而 "呗: 口 贝". 2. 让 "标准字" 都用 3 键输入, 不足的要设法补满. 补满的方法是加入副根. 每一个字根都有一个副根, 基本上以每个字根的最後几部分组成. (跟呒虾米的辅根不太一样, 呒虾米是用最後一笔划, 而副根是任何字形都可以. ) 副根在表格中加上 "()" 来识别. 例如 "畾" 的副根是 "田", "田" 的副根是 "一" U+757E : 畾 (田) (一) # 田 田 田 # 畾 (b5) U+7530 : 田 (一) # page 111 # 田 (b5) 笔画较多的字, 当然自己就是字根. grep 龟 uniok.txt => U+9604 $ 简门 简龟 (弯勾) # ??? # 蓗 (gb) U+9B2E : 斗 龟 (凶上) # 阄 (b5) U+9F9C : 龟 (凶上) (捺) # 最後一笔是 X # page 215, 14 # 龟 (b5) U+9F9D: 禾 龟 (凶上) # 虡 (jp) U+9F9F $ 简龟 (弯勾) (无) # ??? # 实 (gb) 3. 由於副根的副根是相同的, 补满的时候会容易造成重码的机会. 举例而言, 很多字根的副根会是 "(一)", 假设 "一" 的副根为 "(无)". 只要这类字根超过 26 个, 第一个键码([a-z]) 就不够用 了. 所以要加入一个规则, 在第二键码相同、第三键码空缺, 需要 加入副根时, 改成加入首根(字首). 首根在表格中加上 "<>" 来识别. 由於字根 "一" 的这类字数量过多, 改用 "石 (口)" 来举例: (33 个) grep 石 uniok.txt | grep "<" | grep ">" U+59AC: 女 石 <折> # (口) # 恋 (jp) U+5B95: 家上 石 <点> # (口) # 宕 (b5) U+5CA9: 山 石 <竖> # page 46 # (口) # 岩 (b5) U+62D3: 左手 石 <横> # page 64 # (口) # 拓 (b5) U+67D8: 木 石 <横> # page 78 # (口) # 柘 (b5) U+6CB0: 左水 石 <点> # (口) # 沰 (b5) U+70BB: 火 石 <点> # page 100 (口) # 嚍 (gb) U+7809: 丰 石 <撇> # (口) # 砉 (b5) U+7826: 此 石 <竖> # page 87 (口) # 砦 (b5) U+782E: 奴 石 <折> # (口) # 砮 (b5) U+7833: 石 石 <横> # (口) # 砳 (b5) U+783B: 简龙 石 <横>(?) # (口) # 筚 (gb) U+7869: 折 石 <横> # (口) # 硩 (b5) U+7870: 沙 石 <点> # (口) # 硰 (b5) U+787B: 坚上 石 <横> # page 145 # (口) # 硻 (b5) U+7881: 其 石 <横> # page 12 (口) # 贾 (jp) U+7881: 其 石 <横> # (口) # 倚天字 # 碁 (b5) U+7886: 波 石 <点> # (口) # 碆 (b5) U+789E: 品 石 <口> # (口) # 碞 (b5) U+78D0: 般 石 <点> # page 146 # (口) # 磐 (b5) U+78DB: 斩 石 <横> # page 176 (口) # 磛 (b5) U+78E8 : 磨 (石) <点> # page 60 # (口) # 摩上 石 # 磨 (b5) U+78EC: 声上 石 <士> # (口) # 磬 (b5) U+78FF: 历上 石 <横> # page 19 # (口) # 磿 (b5) U+7910: 学上 石 <凶上> # <撇> page 42 # (口) # 礐 (b5) U+791C: 举上 石 <横> # page 146 (口) # 礜 (b5) U+7928: 畾 石 <田> # (口) # 礨 (b5) U+7931: 龙 石 <立> # (口) # 砻 (b5) U+794F: 左示 石 <点> # (口) # 祏 (b5) U+8DD6: 足 石 <口> # (口) # 跖 (b5) U+9250: 金 石 <全上> # (口) # 鉐 (b5) U+9B96: 鱼 石 <撇> # page 208 # (口) # 羃 (jp) U+9F2B: 鼠 石 <撇> # page 214 # (口) # 鼫 (b5) 4. 一个字根可以用多键码来输入. 例如这个不常用字 "乜", 可以依需求, 找一个空位, 随意编成 "EXS". 由於这是一个不常用字, 所以可以不必学. 不过对於有需求的人而言, 不需要选字, 整个系统仍然无重码. U+4E5C # 乜 (b5) (*) 简码的数量: 1. 简码及保留给使用者自订的空间: 26 ([a-z] 加一个空白.) 26 * 10 = 260 ([a-z] 加 1 ~ 0 选字.) 26 * 26 = 676 ([a-z] 两个键加一个空白.) 26 * 26 * 10 = 6760 ([a-z] 两个键加 1 ~ 0 选字.) 2. 标准字空间: (不选字) 26 * 26 * 26 = 17576 ([a-z] 三个键加一个空白.) 我的观念是: 字根的多少并不会影响熟练之後的运用, 反而是常用字 的选字才会巨大地影响使用者输入的速度. 不过跟字的输入速度相比, 词句的快速输入才是真正 加快整体输入速度的关键. 所以字根选择的好坏、易记与否 重要性较低, 只要有一个统一的基础可以让常用词语、使用者 自订词容易输入即可. 因此我的简码区会放很多词, 例如: "s" 就可能放 "所以", "eg" 是 "例如". "i" 是 "我", "i2" 是 "我国". 当然不只是词, 完整的句子 也可以放进简码区之中. 加快输入速度的要点是, 简化字根制作的过程, 利用特殊规定、 不重码的原则来达成每个标准字都 3 码的目标. 然後即可大量订定 常用词. 虽然这些词需要选字, 但是由於保留的空间很多, 使用者 可以依照自己的习惯, 大量订定自己的常用字、词. 只要多加使用 即可熟练. 最後每个人都可以轻易地达到每分钟输入 300 字的阶段性 目标. 不止是 1 码、2 码及其选字的空间全部用来放简码及词句. 能够输入的任何按键序列都能输出简码及词句. (允许大量的自订词.) 也就是说, 键盘上的符号: `~!@#$%^&*()-_+={[}]|\:;"'<,>.?/ 虽然 标准键并不加以使用, 但允许使用者自订词库使用这些符号. 从以上的说明, 读者可以了解, 在理论上, 目前其他的输入法 不可能比这个输入法快, 因为其他的输入法保留的简码空间、简码的 词句数量、及标准常用字长度等等要点, 都无法相比. 所以在速度方面, 这个输入法必定居於领先的地位. 这边有一个特殊的地方, 虽然我认为输入法比赛必须允许 使用词库才合理(然後每次从题库中选取十万字的小说, 计时直到 全部输入、修订完成为止.) 但是这一个输入法由於选字率为零, 可以采用 "BIG5 三码出字、不用按空白键" 的模式, 简码区跟其他 输入法一样放常用字, 却可以进一步提升字的输入速度. 有兴趣的人 可以实验一下, 不按空白键时, 感觉上应该快很多. (*) 制作过程: 1. 先列出 BIG5 字元, 作简单的编号, 然後加上初步分析. 处理过的字加上冒号 ":". 112973: 麡: 鹿 齐 112974: 黵: 黑 詹 112975: 鼍 绳右 112976: 齇: 鼻 虎上 且 112977: 齸: 齿 益 112978: 齻: 齿 真 112979: 齺: 齿 邹左 112980: 齹: 差 齿 2. 参考 cjkxref.txt, 列出 gb2312 不存在於 BIG5 的字元. 处理过的加上 "$" 符号. http://examples.oreilly.com/cjkvinfo/unicode/cjkxref.txt 201608: 马 $ 白 山 己 201610: 高 $ 上草 简言 曷 # 渴右 201613: 鬼 $ 石 得右 201614: 乾 $ 简爱 201632: 偯 $ 左示 夭 201634: 兜 $ 简奥 3. 参考 cjkxref.txt, 列出 jisx0208 不存在於 BIG5 & gb2312 的字元. 处理过的加上 "$" 符号. 301601: 陛 $ 日亚 301602: 陕 $ 口 日亚 301612: 鬲 301613: 鬼 $ 日亚 心 301619: 偃 鱼 简参 301621: 做 厚上 土 301630: 偏 $ 鱼 占 301647: 区 $ 国外 井 4. 用一个程式把上述的三个档案合并成 uniok.txt 检查、并补满三码的再把冒号放置於 unicode 编号之後. 并且加上 (b5) (gb) (jp) 等识别的记号. U+4FE0 : 左人 夹 # 侠 (b5) U+4FE1 : 左人 言 # 信 (b5) U+4FE3 $ 左人 口 天 # 棤 (gb) U+4FE4 $ 左人 弟 # 冔 (jp) U+4FE5: 左人 车 (十) # U+4F21 # 冓 (jp) U+4FE6 $ 左人 简寿 # 棱 (gb) 5. 分析好的字, 例如 "用", 查询结果如下: grep 用 uniok.txt U+4F63: 左人 用 (十) # 佣 (b5) U+62E5: 左手 用 (十) # 茧 (gb) U+7528: 用 (十) (竖) # page 111 # 用 (b5) U+752C: 甬 (用) (十) # 甬 (b5) U+752D: 不 用 (十) # 甭 (b5) U+752E: 勿 用 (十) # 甮 (b5) U+752F: 家上 心 用 # 甯 (b5) U+75C8: 病左上 用 (十) # 虒 (gb) U+98DB : 飞 (竖) # 竖 是最後一笔, 常用国字标准字体笔顺手册 page 201. # 飞 (b5) U+9F21: 日鼠 (同用) (十) # (?) # 鵻 (jp) 6. 日後运算的方法: 输入法所用的按键可以转换成数字, 可依此排序, 计算之後列出序号. [2004-10-26] (0-25) * 26^2 + (0-25) * 26 + (0-25) 排序 数字 序号 A A A <= 0 A A B <= 1 变数 3000 个 (假设分析之後, 有三千个字根) 写一个简单的 script, 可以把我分析的表格档转成算式: 约 16289 条 (13060 + 2381 + 848) X 开头的变数的范围是 0, 1, .., 25 X 开头的变数有 3000 个 (假设) U 开头的变数的范围是 0, 1, .., 16288, 内容就是上述的序号, 不重复. U 开头的变数有 16289 个. U+9F98: 龙 龙 龙 # 龘 (b5) "龙" 的 big5 内码是 C073 XC073 * 26 * 26 + XC073 * 26 + XC073 - U09F98 = 0; 所有算式列出之後, 放进运算力强大的电脑系统中, 就可以把这个输入法正式演算出来. (*) 参考资料: 1. unicode. http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=4e00 2. cjkxref. http://examples.oreilly.com/cjkvinfo/unicode/cjkxref.txt 3. cns11643. http://www.cns11643.gov.tw/web/show_seek6.jsp?v1=3&v2=473c http://www.cns11643.gov.tw/web/show_seek6.jsp?v1=3&v3=4533&v4=4550&qry=2 4. 教育部 常用国字标准字体笔顺手册 5. http://www.cccii.org.tw (*) 非参考资料: 1. 妙通输入法 是一个研究台语文的人所做的输入法. http://www.harvo.idv.tw 是以笔画的方式输入, 选字率 > 40%, 最多五码. 2. 中易系统 Chinese Binary System http://www.cbs.com.tw/ 戚桐欣老先生费心做了这麽多资料, 并且四处参加会议, 令人佩服. (*) 手上的书籍部分列表: 001 倚天中文系统 技术手册 002 仓颉输入 -- 王氏口诀法 003 中国海字集 004 科学注音输入法 005 一.二.三 中文输入法 006 何氏中文输入法 007 轻松八用输入法 008 图解仓颉输入全集 009 大易输入法 010 象形王码输入法 第二代 011 输入法字典 完整标准版 012 芳志视窗中文输入法 013 呒虾米输入法 18 版 014 盛兴中文输入法 015 呒虾米输入法 23 版 016 大家学行列(行列 30 输入法) 017 Linux 中文应用手册 018 中文编码学 019 洞悉 Unix 中文系统篇 020 电脑中英文字形经典 021 呒虾米输入法 13 版 022 大易输入法 023 妙通输入法 第二代 024 轻松 95 输入法 025 两岸中文内码输入全集 026 简繁体电脑对照字典 027 电脑简繁体速查手册 028 便捷中文编码法及输入法 (*) 目前状态: 1. 初步分析结果: big5 12877 字 gb2312 2216 字 jis0208 581 字. 2. 检查并补满三码: unicode 708 字 ici countuni2.ici uniok.txt b5 13060 b5ok 12877 gb 2381 gbok 2216 jp 848 jpok 581 uniok 708 3. 待处理部分: big5hkscs, jisx0212, jisx0213, gbk, cns11643, unicode 4.1, cccii (*) 结论: 如果读者用心阅读, 应该会了解, 这个输入法必须 100% 完成 才可以造出实际的编码. 因此, 虽然已经处理过 15000 字, 完成日仍然遥遥无期. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.22.98
1F:推 donkeykong:抱歉小弟没有完全的看完这篇文章,...140.117.197.150 02/24
2F:→ donkeykong:但是对於肯花心思研究 由衷致上敬意140.117.197.150 02/24
3F:推 springgod:看不太懂 但感觉上用多字根把全字拆完还要塞在140.112.251.218 02/25
4F:→ springgod:3码内 会让大脑多花不少时间来"处理"一个字140.112.251.218 02/25
5F:→ springgod:因此虽然字码变少了 但每个键input的时间变长140.112.251.218 02/25
6F:→ springgod:了 另外 我是用行列的 基本上没在选字的耶^^"140.112.251.218 02/25
7F:→ springgod:全看使用者怎麽用吧 每字的键数约2~3140.112.251.218 02/25
8F:推 qllvv:我比较好奇哪有键盘放得下"左人","上家"那麽多键@@ 218.34.154.156 02/25
9F:推 lLaK:出发点不错,不过似乎很难学习耶220.143.225.109 02/27
10F:推 pobov:行列选字? 还是什麽东西 可以吃的吗?140.119.192.246 03/06







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP