当前位置:恩施知识网 > 健康之路 > 正文

秒懂中文拼音输入法实现的数学原理是什么?,汉字输入法原理

英文字母只有26个,可以一个键盘一个字母的输入。
中文常用字有3500个,中华字海中收入全量简体字有8万5千个,GB2312 编码收入汉字20902个。也就是说无法在一个汉字一个键盘的方式实现输入。
现在回头看,中文输入法,基本经历了自然音节编码输入,到偏旁笔画拆字输入,再回归自然音节输入的过程。
输入法输入汉字的快慢与汉字编码长度相关,也就是输入汉字需要敲击几次键盘。
一、输入法前生今世
70年底末,个人电脑开始诞生。
80年代初,个人计算机开

英文字母只有26个,可以一个键盘一个字母的输入。

中文常用字有3500个,中华字海中收入全量简体字有8万5千个,GB2312 编码收入汉字20902个。也就是说无法在一个汉字一个键盘的方式实现输入。

现在回头看,中文输入法,基本经历了自然音节编码输入,到偏旁笔画拆字输入,再回归自然音节输入的过程。

输入法输入汉字的快慢与汉字编码长度相关,也就是输入汉字需要敲击几次键盘。

一、输入法前生今世

70年底末,个人电脑开始诞生。

80年代初,个人计算机开始使用五笔和拼音输入。

五笔输入法快速,但是学习成本高,需要背诵词根,严重制约了电脑的普及。需要经过长时间的训练。

拼音输入法,常常需要翻很多页才能找到所需要的汉字。

90年代,拼音输入法软件开始支持词组输入和整句输入,能够做到一边打拼音的同时显示汉字。

1993年朱守涛先生发明智能ABC输入法,并被微软收购纳入windows系统中。

1994年的自通输入法,1996年的神拼输入法,支持汉语整句输入。然而,整句输入错误率高没能解决输入汉字不方便的问题。

1998年,谭亚军发明拼音之星软件,支持实时显示,具有字母输入容错功能,没有词也能自动推荐类似的词。

1999年,出现了拼音加加,自由拼音和考拉输入法,支持不切换中英文的情况下,直接Enter输入英文,提升了中英文混合输入效率。

2000年,智能狂拼提供更智能的输入,紫光拼音在考拉输入法基础上发展而来,提供更大词库,并具有了智能组词。

2006年,搜狐公司推出搜狗输入法,该输入法基于搜索引擎技术的新一代拼音输入法产品,用户可以通过互联网备份自己的个性化词库,搜狗拼音输入法一经推出很快取得巨大成功。

谷歌、腾讯、百度和微软也相继推出类似的智能拼音输入法,谷歌拼音输入、QQ拼音输入、百度输入法、必应输入法。

智能手机时代,基本就是搜狗、百度、google、必应输入法的天下了。

目前大家使拼音打字是相当快了,速度已远超英文输入。

二、输入法的数学原理

输入法的本质时将方块形状的汉字输入到计算机中,将人为约定的信息记录编码-汉字,转化为计算机约定的编码(如UTF-8)的转化过程。

1、输入法与编码

键盘上有26个字母 10个数字。

汉字编码分为两部分:对拼音的编码和消除歧义的编码。汉字编码的长度取决于这两方面,只有两个编码都短时,输入才够快。

双拼的主要问题:

一是键盘是只有26个字母,而汉字的声母 韵母有50多个,很多韵母共用一个字母键,增加了歧义,就需要不断的翻页。

二是增加了每次击键时间,人在脱稿输入时,拆字过程会使得思维变缓慢。

三是双拼对读音的容错性不好,前鼻音an、en、in和后鼻音ang、eng、ing,卷舌音ch、sh、zh和平舌音,编码完全没有相似性。大部分人前鼻音和后鼻音、卷舌音和非卷舌音多少有点分不清,在输入声母和韵母后,翻了好几页也没有找到自己要得字。

2、输入一个汉字需要敲击几次键盘?

GBK2312 一共有6700多个常用汉字,每一个汉字出现的概率:

P1, P2,P3,... , P6700

大致估算需要10个比特。

输入法有26个字母,每个字母可以代表log26大概是4.7比特,

也就是说平均一个汉字需要敲击10/4.7 约等于2.1次键。

如果把汉字组成词,平均输入一个字可以少敲几次键盘,

不考虑上下文情况下,以词为单位统计,汉字信息熵大概是8bit,则平均输入一个汉字要敲击8/4.7 约等于1.7次键盘。

考虑上下文情况下,对汉语建立基于词的统计语言模型,汉字信息熵可以降到6bit 左右。则平均输入一个汉字敲击6/4.7 月等于1.3次键,那么这是汉字的输入已经比英语快得多了。

紫光拼音,是通过建立大词库解立大词库,词越来越多,越来越长,甚至将整句唐诗作为一个词,没有根本做到利用上下文。

利用上下文最好的办法是借助语言模型,而语言模型对内存要求高,而输入法不能占有过多的内容,因此目前google、搜狗、百度、微软几家输入法基本在同一档次。

3、拼音转汉字

其实就是拼音到汉字的转换解码函数,每输入一个字母,就类似导航中车辆每走一步,利用动态规划方法不断调整输出。

4、个性化语言模型

现有汉字拼音输入法距离信息论极限还有很大距离,从理论上讲,只要语言模型足够大,拼音输入法的平均敲击次数就可以接近理论值。

个性化的特点是,不同人写东西主题不同,用词习惯不同,说话和写作水平不同,应该各自有自己的语言模型。

通过不断收集个人写的内容,训练一个特定的语言模型,可以较快的接近信息理论值。实现快速输入的目的。

秒懂中文拼音输入法实现的数学原理是什么?,汉字输入法原理

叙述使用计算机(击键)输入中文的原理?

首先你要对Basic语言有一定了解才可看明白的.
中文输入法的实现过程:
首先,说一下ASCII码与CHR$字符的关系,我们都清楚从0到31是文本控制符,32到127都是英文、数字及
一些常用字符。如:a$ = CHR$(65) ,对应的 a$ = "A"。而中文字符的ASCII范围是从160到255。中文字是由两个字
符组成的,所以一个中文字是由两个从160到255的组合字符构成。如 a$ = CHR$(206) + CHR$(210)。对应变量
a$ = "我"。相反如果想知道一个中文字是由那两个ASCII码组成,我们可以将它拆成两个字符,用ASC()函数就可
知道它的相对ASCII码值。如:
PRINT ASC( LEFT$(a$ ,1));
PRINT ASC(RIGHT$(a$ ,1))
结果显示:206 210
现在明白了中文字的ASCII码组合,我们先来做最简单的“区位”输入法。区位输入的码表纯粹是ASCII的
顺序排列。所以我们只要将区位前两位数+160,后两位数也+160。再将两个数加起来。例如:
QW = 2532
ZWF = QW 100 + 160 区位前两位数+160
ZWB = QW MOD 100 + 160 后两位数+160
A$ = CHR$(ZWF) + CHR$(ZWB) 两个数加起来形成区位表码对应的字符

我们看到区位输入法的实现就是如此鸡毛蒜皮的事件。现在我们再来实现“拼音”输入法。如果大家执行以下
代码:
FOR F = 160 TO 255
FOR B= 160 TO 255
PRINT CHR$(F) + CHR$(B) ;
NEXT B
NEXT F
稍认真看看规律就不难发现它的ASCII码值是按拼音来排列的。除了声调,拼音的重码是非常多的。这样我们就无须每
个字都作拼音码表检索。反之是用拼音来检索所有重码的字就更简单了。如:输入“wo”,即从(206,210)开始就
是拼音“wo”所有重码的字符。其它也依次类推。“拼音”输入法虽然没区位简单,但也是不难实现的。用上述的方法
来实现“拼音”输入是最简捷的方法,但存在一个缺点:就是它只能输入日常常用的字,即只是从160到214之间,算一算
大概有5000个常用字。还有3000多个不常用字的排序方法与之不同,后3000多字是以笔画方式排序的。如果要想实现
一个完整的,就是能输入所有常用及不常用汉字的“拼音”输入法,那么就要专门建立一个“拼音”输入码表检索文件。
在这里就不多谈了。如果有兴趣自己试试。。。。
简单的“拼音”输入法我们都实现了,但“拼音”的输入速度就以它的重码有着莫大的关系。所以我们现在来实现
最常用的、效率高、重码率低、一个我们中国人“王永民”先生设计的输入法“五笔”输入法。这个不用说了,会打
字的一般都认识“五笔”。打五笔我们就打得多了,但“五笔”输入法是如何实现呢?不清楚的QB朋友不用抓头皮,
看下去你就会理直气壮的说:“原来就这么简单!!!”
“五笔”不同于以上“拼音”与“区位”输入法,它在ASCII码表里是没有一个排列规律的,ASCII码这个国际通
用的码表排列,我们是不能随便就更改。既然更改ASCII码表的排列是不可能的事情,我们只好自己做个“五笔”编
码专用的码表好了!!。请看以下源代码程序:
WBX$ = " ggtt=五笔 lwty=输入 ifc=法 yijg=就是 vftc=那么 tuuj=简单 "
WBX$ = WBX$ + " q=我 bn=也 go=来 yaya=试试 rhf=看 drgo=原来 r=的 pugm=实现 " 定义一个基本的码表
CLS
PRINT WBX$
PRINT
PRINT "请你输入:"
PRINT "原来五笔输入法的实现就是那么的简单我也来试试看"
LOCATE 10, 5
RecInputChr$ = " " 初始化显示编码及定义光标位置
PRINT "五笔编码: "
DO
IK$ = INKEY$ 读入键盘的ASCII码值
IF IK$ = CHR$(27) THEN EXIT DO 按ESC键退出
IF IK$ = CHR$(13) THEN 按Enter键重置编码
InputChr$ = ""
ELSEIF IK$ = CHR$(8) THEN 按BackSpace键后退
IF InputChr$ <> "" THEN InputChr$ = LEFT$(InputChr$, LEN(InputChr$) - 1)
ELSEIF IK$ <> "" AND IK$ <> CHR$(32) THEN 如果键入的不是空格键而且键盘有键按下时编码字符被键入新编码
InputChr$ = InputChr$ + IK$
END IF
IF IK$ = CHR$(32) OR LEN(InputChr$) = 4 THEN 如果按了空格键或够4码即执行码表检索
II$ = " " + RTRIM$(InputChr$) + "="
ST = INSTR(1, WBX$, II$)
IF ST > 0 THEN
ST = ST + LEN(InputChr$) + 2
EN = INSTR(ST, WBX$, " ")
IF EN = 0 THEN EN = LEN(WBX$)
ZW$ = MID$(WBX$, ST, EN - ST) 检索到的编码字符
TXT$ = TXT$ + ZW$ 输入栏字符被输入编码的汉字
LOCATE 6, 1: PRINT TXT$ 显示输入的内容
END IF
InputChr$ = "" 编码字符被重置
END IF
IF InputChr$ <> RecInputChr$ THEN 如果当前编码与上次编码有改变即刷新
LOCATE 10, 15
PRINT InputChr$ + " " 显示编码字符
LOCATE 6, LEN(TXT$) + 1, 1 定义输入栏光标位置
RecInputChr$ = InputChr$ 给上次编码赋最新编码内容值
END IF
LOOP

秒懂中文拼音输入法实现的数学原理是什么?,汉字输入法原理

常用的拼音输入法,五笔字型输入法实际上实现了

常用的拼音输入法,五笔字型输入法实际上实现了 输入码和机内码 之间的转化,从而实现了中文的输入。
免责申明:以上内容属作者个人观点,版权归原作者所有,不代表恩施知识网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.esly.wang/jiankang/47298.html 感谢你把文章分享给有需要的朋友!
上一篇:取消艺体生加分政策,艺术类特长生是否取消 下一篇:期中考试的成绩出来了为什么不公布排名和成绩「期中考试的成绩出来了为什么不公布排名和成绩」

文章评论