具体实施方式
本发明实施例提供一种英文输入方法及系统,主要用于当用户在不熟悉或忘记英文单词如何拼写的前提下,可以快速的输入英文,该方法包括:从输入的包含通配符的英文字母组合中,截取第一个通配符之前的英文字母串;查找并获取相应位置包含有所截取英文字母串的全部英文单词,并通过使全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配合格的英文单词作为候选词;输出从所述候选词中选择的与输入的包含通配符的英文字母组合匹配的英文单词。该方法简单可使用户快速的输入英文,增加用户体验,提高用户输入英文的效率。
为便于理解,下面结合附图和具体实施例对本发明作进一步说明。
实施例一
本实施例提供一种英文输入方法,当用户输入英文时,在不熟悉或忘记英文单词如何拼写的前提下,利用该方法可以快速的输入英文,如图1所示,该方法具体按下述步骤进行:
步骤S1,从输入的包含通配符的英文字母组合中,截取第一个通配符之前的英文字母串;
步骤S2,查找并获取相应位置(相应位置是指与所截取英文字母串在输入的英文字母组合中的相同位置)包含有所截取英文字母串的全部英文单词,并通过使全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配合格的英文单词作为输入的包含通配符的英文字母组合的候选词;
步骤S3,从确定的候选词中选择与输入的包含通配符的英文字母组合匹配的英文单词进行输出。上述方法步骤S1中,截取第一个通配符之前的英文字母串的过程,如图2所示,具体按下述步骤进行:
步骤S11,判断第一个通配符之前是否有英文字母,若有则执行步骤S22,若没有则执行步骤S23;
步骤S12,第一个通配符之前有英文字母,截取第一个通配符之前的英文字母串;
步骤S13,第一个通配符之前没有英文字母,则准备截取的英文字母串为空。
上述方法步骤S2中,查找并获取相应位置包含有所截取英文字母串的全部英文单词,并通过使全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配通过的英文单词作为输入的包含通配符的英文字母串的候选词的过程,如图3所示,具体包括:
步骤S21,判断截取的第一个通配符之前的英文字母串是否为空串,若不是则执行步骤S22,若是,则执行步骤S23;
步骤S22,截取的英文字母串为第一个通配符之前的英文字母串,在英文词库中查找出以所截取英文字母串为前缀的第一个英文单词至最后一个英文单词,得到与所截取的英文字母串匹配的全部英文单词,执行步骤24;
步骤S23,截取的英文字母串为空串,此时说明第一通配符之前没有英文字母,则将英文词库中包含的所有英文单词作为查找用的全部英文单词,执行步骤24;
步骤24,使全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配合格的英文单词作为输入的包含通配符的英文字母组合的候选词。
上述方法中在词库中查找英文单词时,是先从词库的用户词库中查找出第一个英文单词至最后一个英文单词,再从词库的系统词库中查找第一个英文单词至最后一个英文单词。这样可以保证用户定义的英文单词被优先使用,提高用户查找自己常用英文单词的效率。
在上述方法中,在步骤S2中的查找并获取相应位置包含有所截取英文字母串的全部英文单词之后,还可以先对全部英文单词排序后再进行各英文单词与输入英文字母组合中包含的通配符匹配,来得到与输入的包含通配符的英文字母组合相对应的候选词,如图4所示,具体排序的方法可以按下述步骤进行:
步骤S25,按获取的各英文单词最近一次使用时间或输入的总次数由大到小的顺序进行排序;
步骤S26,将排序后全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,匹配合格后的英文单词作为输入的包含通配符的英文字母组合的候选词。
实际中,上述英文输入方法可以在计算机中采用软件的方式实现,下面结合在计算机的输入法软件中实现本发明实施例的英文输入方法对其进行具体说明。
本发明实施例的英文输入方法,可以支持在英文输入的过程中输入通配符(包括但不限于星号*和问号?)代替对应位置处的字母,从查找列出的相对应的候选词中选择想输入的英文单词,来实现英文的快速输入。例如:准备输入patent这个英文单词,但输入时却忘记怎么拼写,输入时可以在忘记的字母处用通配符代替,则可以输入:Pa*t、p?pent、p??ent、pa*e?t等,输入后如图5-8所示,根据输入的包含通配符的英文字母组合后,从词库中自动查找并列出候选的英文单词,用户便可以从列出的候选词中快速找到准备输入的单词进行输入。
为实现上述输入方法中,其中用到的英文词库的结构如图9所示,一般英文词库中包括用户词库和核心的系统词库,其中,英文词库中的各英文单词按照字母顺序排序,数字代表单词的词频,词频信息可以根据相应的英文语料统计得到。用户词库具体可以采用红黑树数据结构实现,排序准则也是按照字母顺序排序,即逐个字母按照字母表的顺序比较大小后,得到按字母表A-Z从头到尾的次序进行排序,与核心的系统词库不同的是,用户词库结构中不记录词频信息,而只记录最后一次输入时间和输入次数。具体实现时,核心的系统词库可以采用计算机编程语言的数组数据结构类型来实现,用户词库可以采用红黑树数据结构类型来实现,但具体实现方式并不局限使用这两种数据结构。
选取英文单词的时候优先查找用户词库,再去查找核心的系统词库。系统词库和用户词库的查找均可以采用lowerbound和upperbound算法分别找出匹配用户输入(即以用户输入的英文字母组合中的通配符前的英文字母串为前缀的英文单词)的第一个英文单词和最后一个英文单词,确定包含通配符前的英文字母串的英文单词的匹配区间。然后对匹配区间进行排序(对于核心的系统词库,可以按照词频从大到小排序,对用户词库,可以按照输入时间或者输入次数从大到小进行排序,也可以采用其它的排序方式),最后将排序后的全部单词的顺序展示到候选词列表中。其中,lowerbound和upperbound算法可以用来找到一个排序的序列中匹配某个输入内容的第一个和最后一个元素,在利用计算机编程语言实现时,此算法可适用于各种数据结构,包括数组和红黑树等数据结构。实际中,lowerbound和upperbound算法具体可以利用计算机的C++编程语言中的标准模板库STL中给出的lowerbound和upperbound算法示例来实现。
利用上述结构的英文词库,根据用户输入的包含通配符的英文字母组合来生成候选词列表的流程具体为:
当用户输入任意字母组合或一个英文单词后,输入法将其写入用户词库,即将其插入到用户词库使用的红黑树的数据结构中,同时读取系统时间作为最后输入时间,并且将其输入次数加1,若输入的英文单词在用户词库中已经存在,则只更新其最后输入时间和输入次数。为实现支持根据输入的包含通配符的英文字母组合,来自动列出对应的候选词列表,当输入的英文字母组合中包含通配符时,需要截取第一个通配符之前或之后的英文字母串作为查找用英文字母串到词库中查找匹配区间,并将匹配区间内的英文单词在排序后得到的单词序列逐个与通配符进行匹配,以检查此英文单词是否符合通配符的匹配条件,如果符合匹配条件,则输出到候选词列表,否则不输出。
图10所示为根据输入的包含通配符的字母组合生成候选词列表的流程,先从用户词库进行候选词列表生成,具体为:
步骤S1001,截取用户输入字符组合中第一个通配符之前的英文字母串部分;
步骤S1002,在用户词库中用lowerbound和upperbound算法分别找到以截取的英文字母串为前缀的第一个英文单词和最后一个英文单词;
步骤S1003,对第一个英文单词和最后一个英文单词之间的所有英文单词按照时间或输入次数由大到小的顺序排列;
步骤S1004,对排序后的英文单词序列中英文单词逐个进行通配符匹配,并把符合匹配条件的英文单词输出到候选词列表中;
然后从系统词库进行候选词列表生成,具体为:
步骤S1005,在系统词库中用lowerbound和upperbound算法分别找到以截取的英文字母串为前缀的第一个英文单词和最后一个英文单词;
步骤S1006,对第一个英文单词和最后一个英文单词之间的所有英文单词按照时间或输入次数由大到小的顺序排列;
步骤S1007,对排序后的英文单词序列中的英文单词逐个进行通配符匹配,并把符合匹配条件的英文单词输出到候选词列表中。
利用上述方法输入时,以用户准备输入patent这个英文单词为例,若输入时忘记这个英文单词的准确拼写方法,只记得前两个字母为pa,最后一个字母为t,那么可以输入pa*t,按照上述处理流程,首先截取第一个通配符前的英文字母串,即pa,然后用lowerbound和upperbound算法分别找出英文词库中以pa为前缀的所有英文单词形成的匹配区间,得到如图11所示的英文单词列表,然后对此匹配区间内的所有英文单词进行排序,然后对排序后的英文单词序列中的英文单词逐个与输入的英文单词中包含的通配符进行通配符匹配(通配符是正则表达式的一种简单形式,通配符的匹配在形成计算机软件的C++编程语言中实现时,可以通过调用正则表达式库的相应函数来实现,常用的正则表达式库有ATL CAtlRegExp函数,GRETA函数,Boost::regex函数等,一般常采用ATL CAtlRegExp函数,具体匹配过程在此不再赘诉),并把匹配的单词输出到候选词列表中,从而可以从候选词列表中找到并输入想要输入的英文单词,得到后的结果如图12所示。
本实施例中的英文输入方法,具有处理过程简单,可以在输入英文时,输入包含通配符的英文单词,在自动列出的候选词列表中,快速进行英文单词的输入,提高了用户对英文的输入效率。
实施例二
本实施例提供一种英文输入系统,主要是基于上述实施例一中给出的英文输入方法,可实现在用户不熟悉或忘记英文单词如何拼写的前提下,快速的输入英文,如图13所示,该系统具体包括:
输入单元101、截取单元102、查找获取单元103、英文词库单元104、选择单元105和输出单元106;
其中,输入单元101与截取单元102连接,用于输入包含通配符的英文字母组合;
截取单元102分别与输入单元101和查找获取单元103连接,用于从输入单元101输入的包含通配符的英文字母组合中,截取第一个通配符之前的英文字母串;
查找获取单元103分别与截取单元102和英文词库单元104连接,用于从英文词库单元104中查找并获取相应位置包含有所截取英文字母串的全部英文单词,并使全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配合格的英文单词作为候选词;实际中,英文词库单元104具体结构如图14所示,可以包括:用户词库子单元1041和系统词库子单元1042;
选择单元105分别与查找获取单元103和输出单元106连接,用于从查找获取单元103查找获取的候选词中选择与输入的包含通配符的英文字母组合匹配的英文单词;
输出单元106与查找获取单元103连接,用于输出选择单元105选中的英文单词。
上述系统中的截取单元102的构成如图15所示,具体包括:
判断模块1021和截取处理模块1022;
其中,判断模块1021与处理模块1022连接,用于判断输入单元101输入的包含通配符的英文字母组合中第一通配符之前是否有英文字母;
截取处理模块1022与判断模块1021连接,用于当判断模块1021确定第一个通配符之前有英文字母,则截取第一个通配符之前的英文字母串;当判断模块1021确定第一个通配符之前没有英文字母,则将截取的英文字母串标识为空串。
上述系统中的查找获取单元103的构成如图16所示,具体包括:
查找处理模块1031、获取模块1033和通配符匹配模块1034;
其中,查找处理模块1031与获取模块1033连接,用于当截取的英文字母串为第一个通配符之前的英文字母串,在词库中查找出以所截取英文字母串为前缀的第一个英文单词至最后一个英文单词得到全部英文单词;或者,当截取的英文字母串标识为空串时,则将词库中包含的所有英文单词作为查找用的全部英文单词;
获取模块1033分别与查找处理模块1031和通配符匹配模块1034连接,用于获取查找处理模块1031从词库中查找到的全部英文单词;
通配符匹配模块1034与获取模块1033连接,用于对获取模块1033得到的全部英文单词与输入英文字母组合中包含的通配符一一进行匹配,将匹配合格的英文单词作为输入单元101输入的包含通配符的英文字母组合的候选词。
在该查找获取单元103的基础上,还可以包括排序处理模块1032,排序处理模块与获取模块1033连接,用于按获取模块1033获取的全部英文单词中的各英文单词最近一次使用时间或输入的总次数由大到小的顺序进行排序,使通配符匹配模块1034可以在排序处理模块1032对获取模块1033获取的全部英文单词进行排序后再进行匹配。
综上所述,本发明实施例的英文输入方法中通过在输入英文单词时,可以包含通配符来代替忘记的字母,在词库中确定与该输入单词对应的全部可用英文单词后,再通过对全部英文单词中的各单词进行通配符匹配,匹配合格后的单词作为候选词,从形成的候选词列表中可以方便用户进行英文的输入。该方法处理过程简单,可以在用户忘记英文单词拼写或不熟悉英文的情况下,快速进行英文的输入,提高了输入英文的效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,也不因各实施例的先后次序对本发明造成任何限制,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。