本发明涉及文字处理方法,特别涉及一种汉字的计算机输入方法。 汉字输入的出发点是如何首先对汉字进行编码。现行汉字编码主要分为三类:1.形码,如五笔字型编码和各种表形码;音码,如全拼码、双音双拼码、声数码等;音形码,如自然码。
一、音码:
音码是采用拼音作为汉字的编码作为汉字输入的基础。其优点在于:1.简单易学,容易掌握,拼音就是编码,只要会拼音就会输入。2.容易普及,因为拼音本身就具有很大普及性。3.汉语拼音直接对应于26英文字母,键盘记忆量小。4.符合人们的思维方式,我们无论是读书、看报还是写文章,首先反映在脑子里的都是汉字的音,而不是汉字的形。我们用语言交流时,听到的是音,脱口而出的也是音。总之在人们的思维过程中,义的直接载体是音,而不是作为记录符号的字形。5.用音码输入时,能够边想边打,特别适合一般人使用。
其缺点在于:1.同音重码字大多,输入速度慢。2.不认识的字无法输入。3.对拼音的准确性要求高。
(二)形码
形码是将汉字以一定规则进行拆分,以字根为单位进行汉字输入地。这是人们为了避开同音重码的困扰,实现快速输入而设计的。
其优点在于:重码率低,输入速度快。
其缺点在于:1.编码规则复杂,对拆码准确性要求高。且字形简单的字不如复杂的字容易拆码,而大部分常用字字形都较简单,所以常用字输入不如非常用字输入容易。2.记忆量大,如五笔字型需要记忆130多个字根的键盘位置。3.输入规则和编码规则不经过专门学习很难掌握。4.普及性差,虽装机台数多,可用者甚少,只限于一小部分专业录入人员。5.不符合人们的思维过程,边想边打困难。本来一段文章意思是联贯的,可用形码输入时,不得不对每个字进行拆码,这既限制了输入速度,又打断了思维联贯性,在脱离稿件时,不熟悉的字很难反映出其编码,所以它的实际输入速度并不快。
(三)音形码
音形码是介于音码和形码间的一种汉字输入法,它一方面降低了音码重码数量,另一方面又减少了键盘记忆量,因此还是较受欢迎的,但同音重码还是较多。输入时必须去想字形(偏旁),不如音码掌握容易,普及性也较音码为差。
综上所述,音码若能把同音重码多这个障碍消除的话,极有可能成为最易普及的汉字输入法,从近年的汉字输入法录入速度比赛结果来看,优秀的音码方案(如声数法)输入速度还是快于形码的。〔见《电脑》1992年第6期《浅谈音码输入方案》一文〕。
从总体上来看现在汉字编码存在的现象是:“易学的打不快,打得快的不易学”。为什么会这样呢?这与目前各种汉字输入法中所共存的不科学性是分不开的。
现行汉字编码的不科学性主要有以下几点:
(一)汉字编码的出发点不科学
现行编码无论是音码还是形码,都是以国标字库中所有汉字作为编码对象的〔虽然汉字数量多,同音重码率高,但是每个人平时所用的汉字,包括专业字在内,也不过一千多个,而其余那些字几乎用不到,据郑林曦等所编的《按字音查汉字频度表》可知,807个“一级”常用字的使用率高达93.05%,其余五千多字仅占6.95%〕。因此把6763个汉字同时考虑,统一编码是不科学的,那样必然会造成一种同音重码多、输入速度慢或字根多、记忆难、不易掌握的局面。
(二)对常用字和非常用字的划分不科学
1、现行编码对常用字和非常用字划分标准是汉字使用频率。使用频率高的就是常用字,反之则是非常用字,这种划分是不科学的。因为所谓的那些非常用字,大都是专业性很强的汉字,这些字对专业人员来说,却是实际意义上的常用字。对于各类人来说,只要是他常用到的字就是常用字,反之则是非常用字。因此,不能用一个具体标准来划分常用字与非常用字。
(三)对快速输入的看法不正确
现在用重码率的高低来衡量一个编码的优劣似乎已成定势,其实这是不正确的。因为:1.输入速度的快慢,并不仅仅取决于重码率的高低。例如:形码虽然重码率比音码低但是输入时在拆字上的时间也是不能低估的,更何况在没有稿件的情况下,靠脑子想象字形来拆码,速度更慢。
2、盲打没有实际意义。因为应用计算机进行文字处理工作的不仅仅是专业录入人员,随着电脑在中国的普及还将有更多层次的人加入这个行列。人们都是边想边打,能否盲打对他们来说并不重要,他们需要的只是一种简单的,不要死记硬背的汉字输入法。
如上所述,拼音输入法是最简单易学的汉字输入方法,其不能普及和推广的主要障碍是同音重码太多。显然,如果基于拼音输入的汉字输入方法能将那些“无用”之字删掉的话,重码率可大大降低。为此目的,本发明的智能双拼汉字输入方法对同音字按使用频率由高到低进行排列,给该表列设置一个指针,开始时该指针在第一个同音字的前边,如果哪个字被用过了,它就会自动地跳到指针前边,指针前边的重码字的顺序是变化的,最后用过的那个字总是排在第一位,指针后边的重码字不被调入计算机的内存,这样一来,在降低重码率的同时就产生了本发明所称的“个人字库”。同理还可以生成“个人词库”。
为了让计算机能够识别用户输入的汉字编码信息,本发明的输入方法在键盘上设置了一个特殊功能键一“结束符”。这告诉计算机某个汉字编码已经输完,它具有很强的逻辑判断能力,根据码长能准确地区分出字词的类型,根据本发明设定的规则,依据汉字编码输入时的连续的大小写一致的英文字母加“结束符”键可进行无任何换档操作的中英文混合输入。
为了克服已有编码方法中遇到重码时必须立即进行选择的缺陷,提高输入速度,本发明的输入方法具有“统一选择”功能。用户可以在遇到重码时不立即进行选择而是接着输入其它信息,等输入完毕后再统一进行选择。这样一来就可以实现高速盲打,在输入过程中保持良好的思维连贯性。
本发明的目的是提供一种克服已有技术的上述不足的智能双拼汉字输入方法,它通过“个人字(词)库”降低了一般拼音编码方案的重码率,在个人字(词)库中字、词的顺序可随时调整,逻辑判断功能使连续的中英文混合输入成为可能并能识别汉字编码的类型,统一选择功能实现了快速盲打的连续信息输入,总之,本发明的汉字输入方法具有重码率低,输入速度快的优点。
本发明的其它优点参看对本发明的详细描述后将会更清楚。
图1是本发明的键盘设置。
图2(A)和2(B)是表示本发明的个人字(词)库生成的链表的表。
图3表示本发明的逻辑判断键“结束符”根据码的长短自动识别字词类型并自动查找相应的链表的查找关系图。
图4表示个人字(词)库自动生成的逻辑方框图。
图5表示本发明的逻辑判断功能的方框图。
图6(A)和6(B)表示本发明的统一选择功能的方框图。
本发明的智能双拼汉字输入方法的键盘设置如图1所示,在纯中文输入状态下空格键也当作“结束符”使用。每个键上的大写英文字母表示英文26个字母中的一个或表示汉字拼音的声母,小写英文字母组合表示汉语拼合的韵母,中文字表示在本发明中被选用作为一码字的最常用的26个汉字。考虑到也有许多人在给汉字注音时采用注音符号,可将图1中的英文字(声韵母)用注音符号来表示,因此本发明的键盘设置事实上有形式不同而实质一样的两种键盘形式。为方便起见,只参看图1的键盘设置进行如下描述。
汉字输入可分为单字输入和词的输入。
一、单字输入
(1)一码字
选用26个最常用字作为一码字(见图1),这些一码字是击代码键后再打“结束符”即可。
例:人=R+结束符
(2)两码字
输入拼音声母和韵母接着打“结束符”,设有声母的用字母O或E代替。
例:万=WF+结束符 安=EF+结束符
二、词的输入
词分双字词和多字词,两字以上的词,简称多字词。
(1)双字词
输入双字词时,顺次输入每个字的声母和韵母后打“结束符”。
例:国家=GOJB+结束符
(2)多字词
顺次输入每个字的声母,然后打“结束符”。(注:四字词的结束符为“”键)。
例:科学家=KXJ+结束符 尽善尽美=JSJM+结束符
人民大会堂=RMDHT+结束符
注:我们规定多字词代码中,Zh Ch Sh一律用Z C S代替。
以下参看图2-4描述本发明为了减少重码采取的措施一个人字(词)库的生成。
很明显,如果我们能为每一个用户都设计一个字库,那将大大降低重码率并减少内存开销,但由于用户的广泛性和多样性,不可能为用户直接设计出这样一个个人字库。但我们可以让用户自己去建立他们的个人字库,其基本思想是将所有用户用过的字,不论使用频率高低都看作是用户常用字而调入内存,并把那些用户一次也没有用过的字,不管高频字与否,都放在磁盘上内存中所有的字便构成了个人字库。当然,这个字库是变化的,它会随着用户的使用而不断丰富。为了能够建立这样一个个人字库,系统采用了一个活动链表。首先,我们以某种方式对链表中的编码进行了排序,编码相同的(重码)按其使用频率由高到低的顺序排列。其次,我们又在链表的第一个编码前安置了一个指针。最后我们规定,如果链表中哪些字被调用过了,那么那些字将自动跳到指针前边,且系统还会对指针前的编码重新排序,编码相同的,最后用到的排在第一位,原来第一位的排在第二位,依此类推退出系统前,系统还会自动将变化后的链表存盘,在下次进入系统时,系统会自动将所有排在指针前的编码的字模调入内存,也就是将个人字库中的字调入内存。因为每个单链表的记录数都较少,这种分表查法有助于提高查找速度,同进也为语音转换提供了方便。比如在双字词链表下,第一码和第三码为声母,第二码和第四码为韵母。
在多字词链表中,四字以上词的编码与用户文字输入的编码是不一样的。它的编码是在用户输入的前三个编码后加数字,这个数字等于用户输入的编码总数减3。比如:人民大会堂这个词,用户输入的编码为“RMDHT+结束符”而在多字词链表中,它的编码却是“RMD2”
当用户增加新词时,系统会根据词的字数来决定该词应存入的词库。若是两个汉字就存入双字词库中,否则就存入多字词库中,多于四字的编码,系统还会将其自动转换为四位编码。
为了建立个人字库和词库,本系统采用的链表是随时变化的。图2(A)为本系统最初的链表示意图,第一列为汉字,第二列是汉字的双拼编码,第三列是汉字的国际交换码。这是一个汉字编码按递增顺序排列的表,并且相同编码的汉字按使用频率由高到低的顺序排列。我们在这个链表的第一个记录前安置了一个指针,如果哪些字被调用了,也就是说用过了哪些字,那些字将自动跳到指针前边,并自动按编码的升序排列,编码相同的,最后用到的排在第一位,原来第一位的变为第二位,依此类推。假如在上表中我们用过了“揸”和“遵”字,那么链表将变为图2(B)所示,每列的意义同上。这时指针前边所有的汉字就构成了用户的个人字库。这些字将被调入内存,而指针后面的字只在按翻页键时才作磁盘访问。在这个方案中,系统提供了三个链表,它们分别为单字链表,双字词链表和多字词链表,用同样的方法系统会自动调整其余两个词的链表的顺序。
本系统设置了“结束符”,这是个逻辑判断键,它能根据码的长短自动识别字词类形,并自动查找相应的链表,它们的查找关系见图3,第一列为码数,第二列为结束符,第三列为查找链表。
上述个人字库生成的逻辑方框图如图4所示,在方框1中进入本发明的汉字编码输入系统,在方框2中将链表指针前的所有汉字调入内存,在方框3中输入下一个汉字编码,在方框4中查找图2所示的链表,在方框5中判断指针前边是否有相同的编码,若没有就在方框6中到磁盘调用该编码字模,接着在方框7中判断指针后是否有用户所要的字?若有就在方框8中将用户所选的字调到指针前边,对指针前的编码重新排序,若没有就在方框8′中对编码作西文显示,另外,在方框5中作判断时如果结果是肯定的程序就分支到方框11进入内存调用字模,在方框12中判断在这些相同编码中是否有用户所要的字?若没有程序就到达方框7,若有就接着在方框13中判断用户选定的字是否排在同一类编码的第一位?若不是就在方框14中将用户选定的字调整到同类编码的第一位,此后和在方框13中进行了肯定判断一样都到达方框9判断输入是否结束?若是就将链表存盘退出个人字库生成状态,若没有结束就接着返回方框3输入下一个编码。
个人字库优点:
1.因为每个用户平时用到的字最多也不过一千二百个,所以调入内存的字远远少于以前那种分级存储法(3700个或6763个)大大节省了内存开销。
2.个人字库中重码率很低。因为无论什么样的编码,一千多字下的重码远远少于6763个字下的重码数。虽然在开始使用时,因个人字库不完善,用户所要的字很多要到磁盘上去调用,速度稍慢些,但这是暂时的,因为所有的字包括用户专业字在内,只要是用户以前使用过的,内存中就肯定能找到,而不必再到磁盘上去调用了。经过用户多次使用后,用户要用到的字大都被调入内存了。磁盘访问,只是偶尔而已。整个系统的响应速度是相当快。再则,这种“慢”同个人字库优点比起来是微不足道的。
用同样方法可建立个人词库
以下参看图5描述本发明的逻辑判断功能。
一、中西文的识别
不论是什么样的汉字DOS,汉字和西文符号的混合输入总是难以避免的。目前所采用的CCDOS,都是采用人工方式来实现这两种状态的转换的,这相当麻烦,能不能让计算机去自动判断输入信息是中文编码还是西文符号呢?答案是肯定的,因为计算机最大的特点就是它具有逻辑判断能力。其实,直接制定一个能区分中西文的标准并不容易,但我们可以变向地解决这个问题。考虑到各种汉字编码都有一定的输入规则,因此我们可以规定,凡是符合某种编码规则的信息都是中文代码,否则就是西文符号。这样一来,中西文识别就变为了对汉字编码合法性的判断。
有了这种判断功能,我们输入时,就可以在不改变输入状态的情况下,进行中西文同时混合输入。
要想真正地实现这种功能,我们还必须对汉字编码规则进行一些新的规定。因为西文单词是不等长的,所以系统就不能再以固定的码长来识别一个汉字编码是否输入完毕。我们必须在一个汉字编码的后面再加上一个标志,编码已输入完毕符号。这种符号可以利用象空格、逗号、句号这样的在西文单词和汉字编码中绝对不会出现的字符,当然击键是否方便也是必须考虑的。
在这里我们虽然没有给定汉字编码的起始标志符,但是系统会自动判断汉字编码的起始位。系统总是认为用户输入的信息是汉字编码,一旦在一串信息的(这串信息是不定长的)最后一码出现了非法字符,系统就会把这一串信息当作西文符号显示在正文区中,而等待用户再输入新的信息。
假如我们规定汉字编码是连续的大小写一致的英文字母加结束符“”键,那么“I am a student(学生)”。这句话便可以这样输入:
“Iamastudent(xǔe sh eng)。”
因为在汉字编码中没有空格,所以“I”系统会认为是非法汉字编码;而只将它作为西文显示,之后系统又会等待下一个编码的输入。同理am、a也只作西文显示,当输入“student(”后,系统也判断为非法,因为汉字编码中没“(”键。这时,再输入“xǔe sheng”后,系统判断为合法汉字编码,马上转换为相应的汉字,用户接着输入“)”,系统判断为非法,所以只用显示,同理“●”号也只作显示,等用户连续输完后,屏幕显示为:I am a student(学生)。这样一来,中西文混合输入就完全不再需要用户人工转换了,从而提高了输入速度。
二、汉字编码类型的判断
现行的许多汉字系统(如五笔字型)单字和词组都采用等长的编码。从码长上系统无法识别用户输入的是单字还是词组,系统只能到单字和词组的混合链表中去查找该编码,找到单字就是单字,找到词就是词。因为我们的的确确是有意识地把一句话划分为单字或词进行输入的,所以说这种系统又将我们有意识的输入变成了机器无意识的查找。
如果计算机能根据用户输入的编码判断出用户要输入的是单字还是词的话,便可查询相应的单字或词的链表。这无疑可以消除以前那种混合链表所带来的单字和词的重码,缩短链表长度,节省查找时间,为了实现这种设想,我们可以给系统再增加一个新的判断功能,来判断用户输入的汉字编码类型,我们可以利用结束符前码数来作为判断依据。例如:我们规定单字为两码+结束符,词至少三码+结束符的话,上述逻辑判断过程如图5所示。在方框1输入(下一)编码,在方框2判断是否为合法输入,若否就到达方框3按西文处理后返回方框1,若是就到达方框4按汉字编码处理后返回方框1。这就是中西文识别的判断过程;汉字编码类型的判断由方框4开始,在方框5判断结符前是否为二码,若是就到达方框6到单字链表中查找,若否就到达方框7到词组链表中查找。
当然我们还可以把词组链表再细分为双字词链表,多字词链表等,但无论怎样划分,系统都会根据码长来判断编码类型,并到相应链表中去查找相同编码。
总之,有了以上这两种判断功能,系统就具有了很高智能,不但能够判断出用户输入信息是西文符号还是汉字编码;而且还能判断出汉字编码类型,并作出相应处理。
以下参看图6(A)和图6(B)描述本发明的统一选择功能。
汉字编码方案能否实现盲打,并不取决于重码率的高低。我们可以用录音机或用速记符号来快速记录会议内容,等会后再作整理。把这种思想应用到计算机输入上,便产生了本发明的统一选择功能。我们在输入时,可以象录音机录音一样,以拼音的形式作快速记录,等输完后再进行统一选择。也许有人会问那不是会有很多重码吗?其实不然。据郑林曦等编的《按字音查汉字频度表》可知807个一级常用字的使用频率已占了95.03%,这些字中有26个可以作为无重码的键盘常用字输入。再加上个人词库和字库中重码率低,尤其是以词组输入时,几乎没有重码,所以不会有多少重码出现的。再说即使不用这种方式。我们在输入时也一样要作出选择。更何况在统一选择状态下,选择速度远远快于边输边选择。用户平时可不用这种方式,而在输入时,直接用数字键进行选择。
输入时,当用户没有立即进行选择的重码系统会自动按顺序记忆它们的编码,如图6(A)所示。首先在框1中输入(下一个)编码,接着在方框2中判断有无重码?没有就返回方框1,有就再在方框3中判断立即进行选择吗?若是就返回方框1,若不是就在方框4中按顺序记忆该编码后再返回方框1。
对于这些没有选定的重码可以在统一选择功能下一并选择。选择时可以用多种方案,比如用数字键进行,或用空格键加回车键进行。它的基本思想就是使输入和重码选择分开进行,从而提高输入速度。
上述统一选择的逻辑图如图6(B)所示。在方框1中进入本发明的统一选择状态,在方框2中使光标按记忆搜寻重码,停在第(下)一个重码下,将该重码变为反白显示并在提示行中显示相应重码,接着在方框3中等待用户进行选择,若在方框4中选择有效就到达方框5,此时清除提示行,将正文区中选定的重码变为正显示并取消该代码的记忆,在方框6中判断文章是否结束,若是就在方框7中退出统一选择状态,若没有结束就返回方框2,在上述方框4的是否选择有效的判断中,若无效就返回方框3,等待用户进行选择。