拼音输入法的数学原理


声明:引用请注明出处http://blog.csdn.net/lg1259156776/


引言

过去的25年里,中文输入法经历从自然音节编码输入,到偏旁笔画拆字输入,再回归自然音节输入的过程。和任何事物的发展一样,这个螺旋式的回归不是简单的重复,而是一种升华。[摘自吴军的数学之美]


输入法

输入法需要解决两个问题:一是对拼音编码(或者是拆分偏旁的编码);二是消除歧义性的编码。只有两个方面都缩短时,汉字的输入才能变快。早期的输入法只重视了第一部分,过分追求最短编码,而忽略了消除歧义性的编码。比如采用拼音输入首字母的方法对汉字进行编码,这样虽然单个汉字的编码缩短了不少,但是有大量的重复编码,即一个编码对应n多个汉字,为了找到相应的汉字需要翻好多页,这样的输入法是不可能输入很快的。而中间发展的五笔输入法,通过偏旁笔画拆分能够很好地消除奇异性,也就是说编码的重复性低,但是对于输入人员的要求比较高,首先得记忆复杂的编码,其次还得思考输入汉字如何进行拆分,如果拆分错误,找来找去还找不到对应的汉字,这样就使得输入效率变低。也许对于专业人士,可能具有良好的演示效果,但是对于这种大众化的应用,最好还是编码越简单越自然越好。

ps:在我们老家,还有好多人都不太懂拼音输入,更别提五笔输入了。所以,大众化的应用最好还是简单有效的好。

研究表明,脱稿打字会严重中断思维,如果一个输入法中断了人们的思维过程,就和人的自然行为不相符合。认知科学已经证明,人一心无二用。如果要求再输入汉字的时候还要去中断思维去想待输入汉字的编码按键,这样就很容易导致思维中断,这样的输入法的认可度也就会很低。所以,这也是后期输入法回归到自然全拼音节编码输入的原因。这个时期的编码输入与早期的拼音编码输入是不同的,考虑的本质是不一样的。早期采用拼音输入是还没有找到复杂的编码方式,而后期的回归是处于“自然”输入的考虑。两者有本质的差别。


汉字输入需要敲多少次键

统计一下汉字的信息熵,GB2312简体中文字符集一共有6700多个常用汉字,用键盘上的26个字母对汉字进行编码。可以统计一下每个汉字的使用相对频率,可以计算出它的信息熵,香农第一定理指出了,对于一个信息,任何编码的长度都不小于它的信息熵。因此,可以在不考虑上下文相关性,大致可以估算出信息熵在10个比特以内。而输入法只能用26个字母进行输入,每个字母可以代表log26≈4.7比特,其实也就是26个字母的最大信息熵,−∑26i=1126log126≈4.7,这样输入一个汉字平均需要敲键盘10/4.7≈2.1次。现在是以单字作为统计,如果以词为单位统计信息熵,在没有考虑上下文信息情况下,这样每个汉字的平均信息熵就会减少,汉字的信息熵大约8比特。以词为单位输入一个汉字平均只需要敲击1.7次键盘。这就是现在所有输入法都是基于词输入的根本原因。如果考虑到上下文的信息,对汉语建立一个基于词的统计语言模型,这样输入一个汉字只要敲击6/4.7=1.3次键。如果一个中文输入法能够做到这一点,就比英文输入快多了。


拼音转汉字的算法

类似地图上的最短路径规划,采用动态规划。实际上输入法是一个将拼音串转变为汉字串的转换器。每个拼音对应多个汉字,把一个拼音串对应的汉字从左到右连起来,就构成了一张有向图。选取具有最大概率的路径,通过取对数取反,就转变为了选取最短路径的算法。而拼音串到汉字串的转移概率可以采用马尔可夫模型的一步转移概率来解决。

个性化的语言模型

现在的输入法都不是一个静态的,指的是所有的语料在安装好输入法应用后就不变了。实际上像微软、搜狗等输入法都具有学习用户输入习惯的功能,比如输入一个不常用的词,第一次输入时还需要往后翻好几页才能找到这个词,但是随着该词的输入次数增多,输入法就能学习到用户的输入个性,当再次输入时,该不常用的词的排名就会靠前。

实际上为用户定制个性化的语言模型是在客户端的一种不错的尝试。个性化的出发点是不同人平时写的东西主题不同,由于文化的差异,用词习惯不同,说话和写作的水平不同,因此对于消除歧义的多个词的排名顺序也就应当不一样,因此也应该各有各的语言模型。

例如搜狗输入法就有个性化的定制,比如对于某些主题、专业词汇等,如医学词汇,物理化学等。用户在安装应用时可以选择自己的常用输入主题,从而实现个性化的定制。

最后,通用语言模型+个性化用户定制的模型相结合,能够实现很高的输入效率。


2015-9-23 艺少

转载于:https://www.cnblogs.com/huty/p/8519129.html

拼音输入法的数学原理相关推荐

  1. 《数学之美》第21章 拼音输入法的数学原理

    1 输入法和编码 将一个方块形状的汉字输入到计算机中,本质上是一个将人为约定的信息记录编码--汉字,转换成计算机约定的编码(国际码或者UTF-8)的信息转换过程. 对汉字的编码分为两部分:对拼音的编码 ...

  2. 数学之美:拼音输入法的数学原理

    现代输入法大多首选拼音输入法,其原因便是拼音符合人的认知规律,尽管需要多输入几个字母,但速度并不慢.它不需要专门去学习,输入时不用中断思维去考虑,而且对于前后鼻音具有很好的冗余性. 而拼音转汉字的算法 ...

  3. 《数学之美》第二十一章——拼音输入法的数学原理

    提高输入法的效率主要在于两方面: 输入汉字的平均击键次数接近理论上的最小值 寻找一个键的时间不要太长 1. 输入法与编码 讨论了全拼输入法对比于双拼输入法的优势,主要在于双拼输入法有更多的歧义性,虽然 ...

  4. java 对数取反_数学之美读书笔记-拼音输入法的数学原理

    从理论上分析,输入汉字到底能有多快?这里需要用到信息论中的香农第一定理.假定在国标GB2312里面,一共有6700多个常用的汉字.如果不考虑汉字频率的分布,用键盘上的26个字母对汉字进行编码,两个字母 ...

  5. 数学之美11--拼音输入法的数学原理

    第21章 拼音输入法的数学原理 1.输入法与编码: a.对汉字的编码分为两个部分: i.对拼音的编码 ii.对消除歧义的编码 b.拼音输入法的优势: i.不需要专门的学习 ii.输入自然,不会中断思维 ...

  6. 输入年月日 输出该日期是星期几。javascript_快速提升拼音输入法的几个技巧 高手都会用!...

    由于五笔输入法的难度性,拼音输入法已经成为了主流,可是你知道吗?拼音输入法中还有一些小技巧: 注意:这里所说的拼音输入法包含:微软拼音.搜狗拼音.百度拼音.QQ拼音等,本文示范使用微软拼音(因为实在不 ...

  7. 电脑手写输入法_QQ拼音输入法除了能打字,竟然还有 N 多妙用!

    击上方[word精品教程]-右上角[...]-[设为星标⭐] 即可第一时间获取最新办公资讯 作者:佚名  来源:时代通讯(id:xt-shidaitongxun)不离拼音输入条,就可以干基本的拼音汉字 ...

  8. 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落

    曾经韩国的报纸是这样的: 现在的则是这样的: (上面两图均来自网络,如有侵权请告知) 二战之后,曾经广泛使用汉字的朝韩跟越南都走上了废除汉字之路.日本虽然依然使用汉字,却也发布了<当用汉字表&g ...

  9. python假如输入错误重新输入_用Python写一个拼音输入法

    拼音输入法的简单实现可以归结为使用维特比算法求解汉字隐马尔可夫模型的问题:将用户输入的拼音转换为字层,使用维特比算法求解得到概率最大的一个"字链",这个"字链" ...

最新文章

  1. STL容器迭代过程中删除元素技巧
  2. python删除类方法_python中向类中动态添加新特性及删除属性方法
  3. 【桌面虚拟化】之四设计方法
  4. spark mllib 朴素贝叶斯 naive bayes
  5. java 基本数据类型及自己主动类型提升
  6. LOJ2195 旅行
  7. jmeter--正则提取json串中一个大括号对象里指定字段值的的另一个字段的值
  8. Python高级——HTTP协议
  9. 【BZOJ4300】绝世好题,位运算相关DP
  10. 机器人电焊电流电压怎么调_西安焊接机器人工作站的主要设备有哪些?西安瑞斯曼...
  11. LibreOffice的使用技巧
  12. 数据结构与算法---常用三大排序算法
  13. 不要在作死的边缘试探(最后那个英雄手势挺好玩儿的)
  14. k310.4安装客户端提示self-registration error
  15. Qt学习之路之启动浏览器
  16. SQL Server 2008 R2 彻底卸载
  17. 冒泡排序c语言标准代码,C语言实现冒泡排序法和选择排序法代码参考
  18. 《ERP原理》期末复习——第一章 初识ERP(企业资源计划)
  19. css字号 h5_css——移动端h5不支持font-family里面的楷体、微软雅黑等字体
  20. mate桌面美化 Linux,ubuntu mate 15.04桌面的美化

热门文章

  1. 10 Reasons Why Your Projects Should Use the Dojo
  2. C#操作mysql中临时表不自动删除
  3. 【转载】“银弹”Hack(IE6、7、8beta1)
  4. 剑指offer(Java实现) 顺时针打印矩阵
  5. 一个1990年代的小故事
  6. 【正一专栏】巴萨耗光了所有的激情和精力
  7. 机器学习知识点(八)感知机模型Java实现
  8. 开发期间模板引擎页面修改以后,要实时生效 || 登陆成功,防止表单重复提交,可以重定向||只有登录之后才能访问相关的页面
  9. JQuery eval函数
  10. Python 技术篇-用os库实现本地文件重命名实例演示