博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助
非读万国之书,则不能读一国之书
  NalaGinrut.cublog.cn

关于作者
姓名:荒月
职业:准嵌入式工程师
年龄:24
位置:成都
个性介绍:随性、随和、随缘
|| << >> ||
我的分类


改进型嵌入式全拼(一)
    最近总算是把老板布置的东东做完了。断断续续用了近3个星期,一直都想很快解决,好继续钻研ARM,结果欲速则不达,多花了些时间。大概是我考虑得太多,有的方面希望能够尽善尽美,结果却还是不令人满意。不过嵌入本来就是个成本敏感的东西,我觉得我这样子去考虑问题也没什么错。
    好了,言归正传。
    我曾经在网上看到过基于51的全拼输入法设计的一种方案,大概流程是这样:读入拼音字符串->查表取字->返回中文字符串地址。这应该是最简单的输入法模型了,不过这个方案我不是很喜欢,原因是它的表是建立在程序里的,并不是独立的。也就是说汉字和拼音都写到源代码里了,在我看来太过于死板了,第一次写程序岂不是要将汉字逐个输入?如果不是网上已经有源程序可以复制粘贴的话,打死我也绝不用这个办法。而且汉字表与拼音表之间有非常严格一一对应关系,倘若删了一个汉字而没有正确更改相应位置的拼音,则牵一发而动全身,所有的输出可能都是错的。另一个关键因素是,无独立字典且不能随意生成字典,对于字典的扩展或者精简是非常不利的因素。
    所以我想做一个带分离字典,并提供字典生成功能的方案。
    首要解决的问题是,如何能够最大程度地偷懒并且成功实现目标。我属于懒人,不愿意把大量时间花在打字员才该做的工作上,所以我利用了windows的全拼字典——winpy.txt,对这个有兴趣的到网上一搜便知。不过尽管想偷懒,有些繁琐的工作还是不得不做的,winpy.txt的文件头及词组是不需要的,还有其多音字提供了两组拼音,这是不需要的。请不必担心多音字的查找问题,winpy.txt多此一举地将多音字加了两组拼音,却又在其第二读音处提供了该汉字。比如:对于拼音表来说,在ai里面有“呆”字,而在dai里面同样有“呆”字;对于汉字表来说,“呆”自身同时也提供了ai和dai两组拼音,想办法去除一组即可。这些用手工去除也比较方便,因为都是按字母顺序来的,当然编程也可以。
    这是第一步精简,第二步精简是将整个字典转换为非unicode,这样便于操作,也能减小字典占用空间。第三步精简是将txt文件转为unix格式,这样做的好处仍然是两个:减少空间,便于操作。由于windows下的txt格式其换行符是两个:'\r'和'\n',而unix下只有'\n',又减一半。更重要的是便于之后的判断取字。初始大概1M,最终应该能有162k。当然这样的精简还远远不够,我们之后还需要进行第四步的精简,在后文将会提到。(待续)
 

 TAG 嵌入式 全拼 输入法
发表于: 2007-04-01,修改于: 2007-04-01 11:43,已浏览465次,有评论0条 推荐 投诉


网友评论
 发表评论