具体实施方式
在图1中大体示出了并在图2中示意性地描绘出了改进的手持电子设备4。示例手持电子设备4包括外壳6,外壳6上放置有处理器单元,该处理器单元包括输入装置8、输出装置12、处理器16、存储器20和至少第一例程。例如,非限制性地,处理器16可以是微处理器(μP),并响应于来自输入装置8的输入,向输出装置12提供输出信号。处理器16还与存储器20接口。在美国专利No.6,452,588和No.6,489,950中包括有手持电子设备的示例,将其所记载的内容合并在此。
如从图1可理解的,输入装置8包括小键盘24和拇指轮32。如下文将详细描述的,小键盘24呈缩减QWERTY键盘的典型形式,包括用作输入组件的多个按键28。但是要注意,小键盘24可以是其他配置,例如AZERTY键盘、QWERTZ键盘或其他键盘排列,不论是当前已知或未知的,或是缩减或未缩减的。在这点上,在键盘、小键盘或其他输入组件排列的上下文中,“缩减”及其变体应该广义地表示这样的布置,其中至少一个输入组件分配有给定集合内的多个字符,因而由所述至少一个输入组件的激励的预期结果产生模糊不清,其中所述给定集合内的多个字符可以是罗马字母集合中的多个字母。
在这点上,如下文将更加详细地论述的,有利地,手持电子设备4的系统结构组织成可独立于小键盘24的特定布局来操作。由此,手持电子设备4的系统结构可以与近乎任何小键盘布局结合来采用,而基本上不需要对系统结构进行任何有意图的改变。还要注意,在此提出的一些特征可用在缩减键盘或未缩减键盘上,或两者上。
按键28放置在外壳6的正面上,拇指轮32放置在外壳6的一侧。拇指轮32可以用作另一输入组件,并且可以如箭头34所示地双向旋转,以向处理器16提供选择输入,并可以如箭头38所示地沿大体朝向外壳6的方向按下,以向处理器16提供另一选择输入。
在小键盘24的按键28之中,有<NEXT>键40和<ENTER>键44。可以按下<NEXT>键40,以向处理器16提供选择输入,并提供与拇指轮32的旋转输入所提供的输入基本相同的选择输入。因为<NEXT>键40设置在小键盘24的多个其他按键28的邻近,所以用户在文本输入操作期间,可以向处理器16提供选择输入,而基本上无需将手移离小键盘24。如下文将详细描述的,<NEXT>键40附加并有利地包括放置在其上的图形42,在特定情况下,输出装置12还在其上显示所显示的图形46,以识别<NEXT>键40是能够向处理器16提供选择输入的。在这点上,输出装置12所显示的图形46与<NEXT>键上的图形42基本相似,由此识别<NEXT>键40能够向处理器16提供需要的选择输入。
如图1中所见的,按键28中的许多包括布置在其上的多个字符48。如在此采用的,“多个”及其变体应该广义地表示任何数量,包括数量1,在特定情况下,还可以表示数量0。在小键盘24的典型描述中,按键28中的许多包括两个字符,例如包括分配给该按键的第一字符52和第二字符56。要理解,“字符”应该广义地理解为包括字母、数字、符号等,还可以包括表意字符及其组成部分等。
小键盘24的按键28之一包括作为其字符48的字母“Q”和“W”,相邻按键28包括作为其字符48的字母“E”和“R”。可见,虽然按键28中的许多包括两个字符28,但是小键盘24的按键28上的字符48排列大体上是QWERTY排列。
输出装置12包括其上可以提供输出64的显示器60。图1的显示器60上描绘了示例输出64。输出64包括文本组成部分68和变量组成部分72。变量组成部分72包括缺省部分76和变量部分80。显示器还包括补字号84(caret),补字号84一般用于示出将在哪里接收来自输入装置8的下一输入。
输出64的文本组成部分68在显示器60上正输入文本的位置处,提供对输出64的缺省部分76的描述。变量组成部分72一般放置在文本组成部分68的附近,并且除缺省建议输出76之外,还提供对多种替换文本选择的描述,即对缺省建议输出76的替换输出的描述,这些替换文本选择是响应于按键28的按键激励的输入序列,由输入歧义消解功能建议的。
如下文将详细描述的,缺省部分76是由歧义消解功能建议的,作为对用户提供的模糊输入的最有可能的歧义消解解释。变量部分80包括预定数量的对同一模糊输入的替换建议解释,如果需要,用户可以从中选择。所显示的图形46典型地设置在变量组成部分72中,邻近变量部分80,尽管如此,要理解,在不背离本发明构思的前提下,所显示的图形46可以按照其他方式,设置在其他位置。还要注意,示例变量部分80在此示出为在缺省部分76下面垂直延伸,但是要理解,在不背离本发明构思的前提下,可以提供其他多种排列方式。
另外,在小键盘24的按键28中,还有可以设置用于删除文本输入的<DELETE>键86。如下文将详细描述的,<DELETE>键86还可以用于向处理器16提供替换输入,以供歧义消解功能使用。
图2A中示意性地描绘了存储器20。存储器20可以是多种类型的内部和/或外部存储介质之一,例如,非限制性地,RAM、ROM、EPROM、EEPROM等,这些存储介质以计算机的内部存储区的形式提供用于数据存储的存储寄存器,可以是易失性存储器或非易失性存储器。存储器20还包括大体上由数字22示出的用于数据处理的多个例程。例程22可以是多种形式之一,例如,非限制性地,软件、固件等。如下文将详细描述的,例程22包括作为应用程序的前述歧义消解功能,以及其他例程。
从图2a可理解,存储器20还包括在多个表、集合、列表和/或其他形式中存储和/或组织的数据。具体地,存储器20包括普通单词列表88、新单词数据库92和频率学习数据库96。存储器20的多个区内存储有多个语言对象100和频率对象104。一般而言,语言对象100中每一个都与相关的频率对象104相关联。语言对象100包括多个单词对象108和多个n元语法(N-gram)对象112。单词对象108一般代表语言中的完整单词或存储在存储器22中的定制单词。例如,如果存储器中存储的语言是英语,则每个单元对象108一般代表英语语言中的单词,或代表定制单词。
与基本上每个单词对象108相关联的是具有频率值的频率对象104,所述频率值指示由单词对象108代表的给定单词的相关语言中的相对频率。在这点上,普通单词列表88包括单词对象108的语言资料库(corpus)及其相关频率对象104,它们共同代表在例如给定语言之类的给定本国语中的多种单词及其相对频率。可以按照多种方式来推导出普通单词列表88,例如,通过分析多个文本和其他语言资源,确定语言资源内的多个单词、以及多个单词在语言资源内出现的相对概率,即相对频率。
普通单词列表88内存储的N-gram对象112是相关语言中的短字符串,例如,典型的长度是1到3个字符,并典型地代表相关语言中的单词断片,尽管如此,N-gram对象112中的一些本身可以是单词。但是,就N-gram对象112也是相关语言中的单词来说,相同单词可能会分离地存储,作为普通单词列表88内的单词对象108。如这里采用的,“串”及其变体应该广义地表示具有一个或多个字符或组成部分的对象,并可以表示完整的单词、单词断片、定制单词或表达等。
在手持电子设备4的本典型实施例中,N-gram对象112包括1-gram对象,即长度为一个字符的串对象,2-gram对象,即长度为两个字符的串对象,以及3-gram对象,即长度为三个字符的串对象,所有这些被统称作N-gram对象112。实质上,普通单词列表88中的每个N-gram对象112相似地与普通单词列表88内存储的相关频率对象104相关联,但是与给定的N-gram对象112相关联的频率对象104具有频率值,该频率值指示在相关语言的任意单词内的任意位置处存在由特定N-gram对象112代表的字符串的相对概率。N-gram对象112及其相关频率对象104是普通单词列表88的语言资料库的一部分,并以与单词对象108及其相关频率对象104的获得方式相似的形式获得,尽管如此,在获得N-gram对象112时执行的分析将会略微不同,这是因为该分析将涉及对多个单词内的多个字符串的分析,而不是主要依赖于给定单词的相对出现次数。
当示例语言是英语时,手持电子设备4的本典型实施例包括26个1-gram的N-gram对象112,即针对英语所基于的罗马字母表中的26个字母中每一个的一个1-gram对象,本典型实施例还包括676个(即26的平方个)2-gram的N-gram对象112,代表罗马字母表内26个字母的每一个两字母的排列。
N-gram对象112还包括特定数量的3-gram N-gram对象112,主要是在相关语言中具有相对高的频率的那些3-gram对象。考虑到数据存储大小,并且因为2-gram的N-gram对象112已能够提供与相关语言有关的大量信息,所以手持电子设备4的本典型实施例包括比罗马字母表的26个字母的所有三字母排列少的三字母排列。如下文将详细描述的,N-gram对象112及其相关频率对象104提供可以归因于字符串的频率数据,对于该字符串,无法识别或还未识别对应的单词对象108;该频率数据典型地用作后退数据源,虽然情况不必定如此。
在本典型实施例中,语言对象100和频率对象104基本上非易失性地(inviolate)保持在普通单词列表88中,意味着在普通单词列表88内,基本语言资料库基本保持不变,由手持电子设备4提供的、下文所描述的学习功能与一般存储在存储器20中的其他位置处的其他对象相结合地进行操作,例如,其他位置包括新单词数据库92和频率学习数据库96。
新单词数据库92和频率学习数据库96存储附加的单词对象108及其相关频率对象104,以向用户提供定制体验,其中用户相对更频繁使用的单词等将与比普通单词列表88中可能反映的频率更高的频率值相关联。更具体地,新单词数据库92包括用户定义的、一般无法在普通单词列表88的单词对象108中找到的单词对象108。新单词数据库92中的每个单词对象108具有与之关联的、也存储在新单词数据库92中的相关频率对象104。频率学习数据库96存储单词对象108及其相关频率对象104,该相关频率对象104指示用户以比普通单词列表88中可能反映的频率更高频率使用这些单词。这样,新单词数据库92和频率学习数据库96提供两种学习功能,即,它们共同提供学习新单词的能力、以及学习针对已知单词的变化频率值的能力。
图3a和3b以示例形式描绘了手持电子设备4的歧义消解功能的特定方案的总体操作。其他特征、功能等在别处示出并描述。
在204,检测输入,该输入可以是对输入装置8的任何部分的任何类型的激励或其他操作。例如,示例输入可以包括对其上具有多个字符48的按键28的激励,或对输入装置8的任何其他类型的激励或操作。
当在204检测到输入时,在208复位定时器。下文中将更加详细地描述定时器的使用。
然后,在212,歧义消解功能确定当前输入是否是操作性输入,例如选择输入、定界符输入、移动输入、替换输入或不构成其上具有多个字符48的按键28的激励的任何其他输入。如果在212确定输入不是操作性输入,则在216,通过将该输入添加到可以包括或尚未包括输入的当前输入序列中,来继续处理。
在204检测的多个输入用于产生输入序列,针对这些输入序列将执行歧义消解功能。在每个“会话”中,使用对其上具有多个字符48的按键28的每个激励,创建输入序列。因为输入序列典型地由对其上具有多个字符48的按键28的至少一个激励组成,所以输入序列将是模糊不清的。例如,当完成单词时,当前会话结束,发起新的会话。
在任何给定会话期间,随着按键28的每个相继激励,在手持电子设备4上逐渐创建输入序列。具体地,一旦在任何给定会话期间检测到定界符输入,则终止该会话,并发起新的会话。将由对具有多个相关字符48的按键28之一的激励所产生的每个输入依次添加到当前输入序列中。在给定会话期间,随着输入序列变长,一般使用按键28的每个激励,即输入,针对整个输入序列执行歧义消解功能。换言之,在给定会话内,歧义消解功能尝试用多个按键28的每个相继激励,将变长的输入序列作为单元(unit)来歧义消解。
如图3a中的216所示,在当前会话期间,一旦代表对分配有多个相关字符48的按键28之一的最近激励的当前输入已添加到当前输入序列中,则在220,歧义消解功能产生分配给在产生该输入序列中所激励的多个按键28的字符48的几乎所有排列。在这点上,“排列”表示受按键28的激励顺序限制的、可以由每个所激励的按键28的字符48产生的多个串。输入序列中的字符的多种排列用作前缀对象。
例如,如果当前会话的当前输入序列是按键“AS”和“OP”的模糊输入,当考虑激励按键28的序列时,这两个按键28的每一个的第一字符52和第二字符56的多种排列将是“SO”、“SP”、“AP”和“AO”,其中每一个是在220处相对应当前输入序列而产生的前缀对象。如下文将详细解释的,歧义消解功能试图针对每个前缀对象,识别该前缀对象可能是其前缀的单词对象108之一。
对于每个产生的前缀对象,在224,参考存储器20,如果可能,针对每个前缀对象,识别与该前缀对象相对应的存储器20中的单词对象108之一,这意味着由该前缀对象代表的字母序列可能是所识别的单词对象108的前缀,或者基本上与整个单词对象108相同。在这点上,要识别的单词对象108是最高频率单词对象108。即,歧义消解功能试图识别与该前缀对象相对应的、并与频率对象104相关联的单词对象108,其中该频率对象104具有比与对应于该前缀对象的其他单词对象108相关联的其他频率对象104的任何一个更高的频率值。
要注意,在这点上,普通单词列表88中的单词对象108一般组织在与多个单词的头两个字母相对应的数据表中。例如,与前缀“CO”相关联的数据表包括诸如“CODE”、“COIN”、“COMMUNICATION”等的所有单词。根据任意给定数据表内的单词对象108的数量,数据表还可以包括子数据表,其中用三个字符或更长的前缀来组织单词对象108。继续前述示例,例如,如果“CO”数据表包括多于256个的单词对象108,则“CO”数据表还包括与最频繁出现的三字符前缀相对应的单词对象108的一个或多个子数据表。例如,“CO”数据表还可以包括“COM”子数据表和“CON”子数据表。如果子数据表包括多于预定数目的单词对象108,例如,数量256,则子数据表可以进一步包括子数据表,例如可以根据四字母前缀组织的子数据表。要注意,前述单词对象108的数量256与存储器20的一个字节内可以存储的最大数值相对应。
由此,在224,当每个前缀对象要用于识别对应的单词对象108时,例如此时的前缀对象是“AP”,则参考“AP”数据表。因为“AP”数据表中的所有单词对象108将与前缀对象“AP”相对应,所以识别出“AP”数据表中的单词对象108,该单词对象108与具有比“AP”数据表中的其他频率对象104的任何一个相对更高的频率值的频率对象104相关联。接着,将所识别的单词对象108及其相关频率对象104存储在结果寄存器中,该结果寄存器用作所产生的前缀对象与存储器20的内容的多种比较的结果。
要注意,前缀对象中的一个或多个,可能是全部,将是存储器20中未识别的对应单词对象108的前缀对象。这些前缀对象被认为是孤生(orphan)前缀对象,分别存储或保留,以便将来使用。在这点上,要注意,例如如果用户试图输入新单词,或者例如用户执行了错误键入,没有单词与该错误键入的输入相对应,则前缀对象中的许多或全部可能变为孤生对象。
一旦在224获得了结果,则在228,歧义消解功能确定是否应该产生人为变量(artificial variant)。为了确定是否需要人为变量,在228的过程分路到230,即图4中大体示出并开始于数字304的人为变量过程。然后,在308,歧义消解功能确定结果中的前缀对象之一是否与当前按键输入的检测之前的缺省输出76相对应。如果结果中的前缀对象与先前的缺省输出相对应,则表示当前输入序列与单词对象108相对应,并且必然地,先前的缺省输出也在当前会话的先前歧义消解周期中与单词对象108相对应。
下一步分析是在310确定是否由于选择输入使先前缺省输出成为缺省输出,例如下文将详细论述的图3b的254处的可能引起标志设置的选择输入。在先前缺省输出不是选择输入的结果的情况下,不需要人为变量,过程在312返回到232处的主过程。但是,如果在310确定先前缺省输出是选择输入的结果,则在316产生人为变量。
更具体地,在316产生的人为变量的每一个包括先前缺省输出,外加分配给当前输入的按键28的字符48之一。这样,如果当前输入的按键28具有两个字符,即第一字符52和第二字符56,则在316产生两个人为变量。人为变量之一将包括先前缺省输出外加第一字符52。另一人为变量将包括先前缺省输出外加第二字符56。
但是,如果在308确定结果中的前缀对象都不与先前缺省输出相对应,则下一步在314必须确定先前缺省输出是否在当前会话的先前歧义消解周期中与单词对象108相对应。如果对于314处的询问的答案是否定的,则在318仍然必须确定是否由于可能引起标志设置的选择输入而使先前缺省输出成为缺省输出。在先前缺省输出不是选择输入的结果的情况下,不需要人为变量,过程在312返回到232处的主过程。但是,如果在318确定先前缺省输出是选择输入的结果,则在316产生人为变量。
另一方面,如果对于314处的询问的答案是肯定的,则表示先前缺省输出已与单词对象相对应,但是对于当前输入,与当前输入相结合的先前缺省输出不再与任何单词对象108相对应,从而在316再次产生人为变量。
在316处产生人为变量之后,该方法在320确定该结果是否包括任何前缀对象。如果不包括,则在312,处理返回232处的主过程。但是,如果在320确定该结果包括至少第一前缀对象,则表示当前输入序列与单词对象108相对应,在324,处理转移到创建附加人为变量的处理。具体地,识别该结果的前缀对象,该前缀对象是与在该结果中具有其他频率对象104之中的相对最高频率值的频率对象104相关联的,通过从所识别的前缀对象中删除最末字符,并用产生所识别的前缀对象的最末字符48的同一当前输入按键28上的对立字符48来取代所删除的最末字符,来创建人为变量。在特定按键28分配有多于两个字符48的情况下,每个对立字符48将用于产生附加的人为变量。
一旦在228识别出需要人为变量,并如图4所示和如上所述的,已产生这些人为变量,则处理在232继续,在232,从该结果中删除与相对较低的频率值相关联的复制单词对象108。例如,如下文将具体论述的,这种复制单词对象108可以由频率学习数据库96产生。如果该结果中的单词对象108与人为变量之一相匹配,则因为该人为变量将被分配有输出64中的优选地位,可能处于比已识别的任何单词对象108更加优选的位置,所以一般将从结果中去除单词对象108及其相关频率对象104。
一旦已在232去除了复制单词对象108及其相关频率对象104,则在236,按照频率值的降序,在输出集合中排列剩余的前缀对象。也可以将上述孤生前缀对象添加到输出集合中,尽管是在比找到的对应单词对象108的任何前缀对象的频率值相对更低的频率值的位置处。如果已创建了人为变量,则还有必要确保将人为变量放置在输出集合中的优选位置上。要理解,可以,但不是必须的,给人为变量赋予优选位置,即向其分配比该结果的前缀对象相对更高的优先级或频率。
如果在240确定已设置了标志,表示用户已通过表达选择输入或通过移动输入的替换输入,执行了选择输入,则认为缺省输出76是“锁定”的,表示直到该会话结束,所选变量都将是缺省前缀。如果在240确定已设置了标志,则处理将前进到244,在此,如果需要,将改变输出集合的内容,以将包括所选前缀对象的输出设置为缺省输出76,无论它是与单词对象108相对应,还是人为变量。在这点上,要理解,在会话期间,可以设置标志附加次数,在这种情况下,与之后的标志复位相关联的所选前缀变成“锁定”的缺省输出76,直到该会话结束,或直到检测到另一选择输入。
然后,处理在248继续,到达输出步骤,此后,如上所述地产生输出64。更具体地,在250,处理前进到大体上在图6中示出并在下文中描述的子系统。之后,处理在检测到另外输入的204处继续。另一方面,如果在240确定还未设置标志,则处理直接到达248,而不在244对输出集合的内容进行改变。
手持电子设备4可以配置成暂时停用(suspend)包括在输出64中但未被下一输入选择的任意孤生前缀对象。这可以仅限于出现在变量部分80中的孤生前缀对象,或可以应用于输出64中任何位置的孤生前缀对象。手持电子设备4还可以配置成在类似的情况下类似地暂时停用人为变量。这种暂时停用的原因在于,如果适合,每个这种孤生前缀对象和/或人为变量可能衍生与下一输入按键28上的字符48的数量相等的多个子代(offspring)孤生前缀对象。即,每个子代将包括父辈孤生前缀对象或人为变量,外加下一输入按键28的字符48之一。因为孤生前缀对象和人为变量实质上不与单词对象108相对应,所以从父辈孤生前缀对象和人为变量衍生的子代对象将同样不与单词对象108相对应。如下文将解释的,因为暂时停用的孤生前缀对象和/或人为变量稍后可以作为衍生的孤生前缀对象和/或人为变量的父辈再次出现,所以相比于完全删除的孤生前缀对象和/或人为变量,可以认为将这些孤生前缀对象和/或人为变量暂时停用。
如果在212确定检测到的输入是操作性输入,则处理继续确定该操作性输入的特定性质。例如,如果在252确定当前输入是选择输入,则处理在254继续。在254,将输出64的缺省部分76的单词对象108及其相关频率对象104、以及由选择输入所选择的变量输出部分80的单词对象108及其相关频率对象104存储在临时学习数据寄存器中。另外,设置标志。接着,处理返回到204处的对附加输入的检测。
如果在260确定输入是定界符输入,则处理在264继续,在264,终止当前会话,并在266,处理转移到如图5a的404处所示的学习功能子系统。例如,定界符输入可以包括:<SPACE>键116的激励,这可以输入定界符符号并在单词结尾处添加空格;<ENTER>键44的激励,这可以相似地输入定界符符号并输入空格;以及如箭头38所指示的拇指轮32的平移,这可以输入定界符输入,而不会额外输入空格。
在408,首先确定在260检测定界符符号时的缺省输出是否与存储器20中的单词对象108匹配。如果不匹配,则表示缺省输出是用户创建的输出,应该将其添加到新单词数据库92,以便将来使用。在这种情况下,处理前进到412,在412,将缺省输出存储在新单词数据库92中,作为新单词对象108。另外,在新单词数据库92中存储频率对象104,并将其与前述新单词对象108相关联。给予该新频率对象104相对高的频率值,典型地在可能频率值的预定范围的前四分之一或三分之一内。
在这点上,给予频率对象104的绝对频率值一般在0到65,535的范围中。最大值代表可以在存储器20的两个字节内存储的最大数。尤其因为新单词是用户使用的,并且可能被再次使用,所以向存储在新单词数据库92中的新频率对象104分配这个范围的前四分之一或三分之一内的绝对频率值。
对于频率对象104,还要注意,在诸如前述“CO”数据表之类的给定数据表中,只针对数据表内具有最高频率值的频率对象104存储绝对频率值。同一数据表中的其他所有频率对象104具有存储为相对前述最大绝对频率值归一化的百分比值的频率值。即,在识别出给定数据表内具有最高频率值的频率对象104之后,给同一数据表中的其他所有频率对象104分配绝对最大值的百分比,该百分比代表特定频率对象104的相对较小的绝对频率值与前述最大值频率对象104的绝对频率值之比。有利地,这种百分比值可以存储在存储器的单个字节内,从而节省了手持电子设备4内的存储空间。
当创建了新单词对象108和新频率对象104,并将其存储在新单词数据库92内时,处理转移到420,在420,学习过程终止。接着,处理返回在204的主过程。
如果在408确定缺省输出76中的单词对象108与存储器20内的单词对象108匹配,则处理在416继续,在416,确定是否已设置了前述标志,诸如在检测到选择输入、替换输入或移动输入时发生的标志设置操作。如果结果是还未设置标志,则表示用户还未表达变量前缀对象优先于缺省前缀对象,从而不需要进行频率学习。在这种情况下,处理在420继续,在420,学习过程终止。接着,处理在254返回主过程。
但是,如果在416确定已设置了标志,则处理器20从临时学习数据寄存器中检索最近保存的缺省和变量单词对象108,以及它们的相关频率对象104。接着在428,确定缺省和变量单词对象108先前是否成为频率学习操作的主题。例如,可以通过确定变量单词对象108及其相关频率对象104是否是从频率学习数据库96中获得的,来进行确定。如果缺省和变量单词对象108先前未成为频率学习操作的主题,则处理在432继续,在432,将变量单词对象108存储在频率学习数据库96中,并产生修改的频率对象104,该频率对象104具有比先前与变量单词对象108相关联的频率对象104的频率值更大的频率值。在该示例情况下,即缺省单词对象108和变量单词对象108经历第一次频率学习操作,例如,可以将给予修改的频率对象104如下频率值:该频率值等于先前与变量单词对象108相关联的频率对象104的频率值以及两个频率值之差的一半的和,这两个频率值分别是与缺省单词对象108相关联的频率对象104的频率值,以及先前与变量单词对象108相关联的频率对象104的频率值。当在频率学习数据库96中存储了变量单词对象108和修改的频率对象104时,处理在420继续,在420,学习过程终止,处理在254返回主过程。
如果在428确定缺省单词对象108和变量单词对象108先前成为过频率学习操作的主题,则处理继续到436,在436,将比与缺省单词对象108相关联的频率对象104的频率值更高的频率值给予修改的频率对象104。在频率学习数据库96中存储了变量单词对象108和修改的频率对象104之后,处理继续到420,在420,学习过程终止,处理在254返回主过程。
对于学习功能,还要注意,学习功能还检测缺省单词对象108和变量单词对象104是否都是从频率学习数据库96中获得的。在这点上,当在224识别出单词对象108与产生的前缀对象相对应时,则针对这种对应的单词对象108及对应的频率对象104,查询存储器中的所有数据源。因为频率学习数据库96中存储有也存储在普通单词列表88或新单词数据库92中的单词对象108,所以从频率学习数据库96中获得的单词对象108及其相关频率对象104典型地是已从普通单词列表88或新单词数据库92中获得的单词对象108的复制。但是,从频率学习数据库96中获得的相关频率对象104典型地具有比从普通单词列表88中获得的相关频率对象104的频率值更大的频率值。这反映了频率学习数据库96的本质是向频繁使用的单词对象108赋予比其在普通单词列表88中可能具有的频率值更大的频率值。
因此,可见,一般直到检测到定界符输入,才启动图5a和5b所示的上述学习功能,这表示对于每个会话,学习只发生一次。另外,如果最终缺省输出不是用户定义的新单词,则作为频率学习功能的主题的单词对象108是与在选择发生时的缺省输出76和所选变量输出80相关联的单词对象108,而不必要与最终成为会话结束时的缺省输出的对象相关。此外,如果在单个会话中发生多个可学习事件,则频率学习功能只对与当前会话终止之前的最终可学习事件(即选择事件、替换事件或移动事件)相关联的单词对象108进行操作。
对于识别多个单词对象108与产生的前缀对象相对应,还要注意,除了普通单词列表88、新单词数据库92和频率学习数据库96之外,存储器22可以包括多个额外的数据源99,所有这些都可以看作语言来源。图2a中示出了两个示例的其他数据源99,要理解,存储器22可以包括任何数目的其他数据源99。例如,其他数据源99可以非限制性地包括地址数据库、快速文本数据库或其他数据源。例如,示例的快速文本数据库可以包括单词、表达式或其他数据的集合,例如,其中每一个与缩写的字符串相关联。例如,快速文本数据库可能将串“br”与单词集合“Best Regards”相关联,这样,用户能够键入串“br”,而接收到输出“Best Regards”。
为了识别与给定前缀对象相关联的单词对象108,手持电子设备4可以查询存储器22中的所有数据源。例如,手持电子设备4可以查询普通单词列表88、新单词数据库92、频率学习数据库96和其他数据源99,以识别与前缀对象相关联的单词对象108。其他数据源99的内容可以看作单词对象108,处理器20可以产生频率对象104,该频率对象104将与这种单词对象108相关联,并向该频率对象104分配诸如前述频率范围的前三分之一或四分之一中的频率值。例如,假设所分配的频率值足够高,则串“br”可以典型地被输出到显示器60。如果关于与快速文本数据库中的单词对象108相关联的输出部分,例如“br”,检测到定界符输入,则用户可以接收到输出“Best Regards”,要理解,对于示例串“br”,用户还可以输入选择输入。
其他数据源99的任何一个的内容可以看作单词对象108,并可以与产生的具有在前述频率范围的前一部分中的所分配频率值的频率对象104相关联。在识别这种单词对象108之后,如果适合,则新单词学习功能可以按照前述方式,对这种单词对象108进行操作。
再次参考图3a,当处理前进到在232的过滤步骤时,滤除具有相对较低频率值的复制单词对象108及其相关频率对象104,剩余结果可以包括变量单词对象108和缺省单词对象108,两者都是从频率学习数据库96中获得的。在这种情况下,可以预见,如果用户重复且交替地使用一个单词和另一单词,则随着时间的过去,与这种单词相关联的频率对象104将增大,远远超过前述针对频率对象104的最大绝对频率值。由此,如果确定学习功能中的缺省单词对象108和变量单词对象108都是从频率学习数据库96中获得的,则不再将变量单词对象108存储在频率学习数据库96中并将其与具有相对较高的频率值的频率对象104相关联,而由学习功能存储缺省单词对象108,并将其与修改的频率对象104相关联,该修改的频率对象104具有比与变量单词对象108相关联的频率对象104的频率值相对更低的频率值。这种方案有利地避免了频率值的过度和不必要的增加。
如果在268确定当前输入是移动输入,例如当用户在当前会话期间试图对如完整单词或前缀对象的对象进行编辑时所采用的输入,则在272将补字号84移动到所需位置,并在276设置标志。接着,处理返回到204,在204可以检测额外输入的位置。
在这点上,要理解,可以检测来自输入装置8的多种移动输入。例如,如图1的箭头34所示的拇指轮32的旋转可以提供移动输入,<NEXT>键40的激励或其他这种输入,有可能与输入装置8中的其他装置相组合的输入,都可以提供移动输入。在检测到这种移动输入的情况下,例如在编辑输入的情况下,还额外地将移动输入作为选择输入来检测。由此,如在252所检测的选择输入的情况一样,相对于输出64的缺省部分76,有效地锁定所选变量。在同一会话内的任何缺省输出76将必须包括先前所选的变量。
但是,在编辑的情况下,除了正被编辑的字符外,有效地锁定正被编辑的特定显示对象。因此,在这点上,保持正被编辑的对象的其他字符,即未被编辑的字符,并将其用作用于识别正被编辑的对象相对应的其他单词对象108等的上下文。如果不是这种情况,试图对单词中间的字母进行编辑的用户可能将与正被编辑的对象的字符略微不同或完全不同的多个对象看作新输出64,这是因为在没有保持上下文的情况下,可能产生了包括正被编辑的对象的多个键击字符的所有排列的完全新的前缀对象集合。新单词对象108可能被识别为与新的前缀对象相对应,则仅仅在对单个字符进行编辑时,所有的新的前缀对象就可能显著地改变输出64。通过保持当前在正被编辑的对象中的其他字符,并采用这些其他字符作为上下文信息,用户可以更加容易地编辑显示在显示器69上的单词。
在手持电子设备4的本典型实施例中,如果在252确定输入不是选择输入,在260确定输入不是定界符输入,并在268确定输入不是移动输入,则在手持电子设备4的本典型实施例中,仅剩余的操作性输入一般是对小键盘24的按键28的<DELETE>键86的检测。当检测到<DELETE>键86时,在280删除缺省输出的最末字符。此时,在284,处理一般等待,直到检测到另一输入。接着,在288,确定在284检测到的新输入是否同于与在280刚删除的最末字符相关的最近输入。如果是,则除了最末字符是产生最末字符的按键激励的对立字符之外,缺省输出76与先前缺省输出相同。处理继续到292,在292,将在临时学习数据寄存器中存储学习数据,即与先前缺省输出76相关联的单词对象108及其相关频率对象104、以及与新的缺省输出76相关联的单词对象108及其频率对象104,并设置标志。这种按键序列,即输入、<DELETE>键86和与先前相同的输入,是替换输入。这种替换输入用产生缺省输出76的最末字符48的按键28的对立最末字符取代缺省最末字符。替换输入被看作用于锁定当前会话的缺省输出76的选择输入,并在260检测到定界符输入时,触发标志,该标志将启动学习功能。
但是,如果结果是该系统在288检测到在284检测到的新输入不同于紧接在<DELETE>键86的检测之前的输入,则处理在212继续,在212,确定输入是操作性输入或具有一个或多个字符48的按键输入,之后,处理继续。
还要注意,当主过程到达248的输出阶段时,启动附加过程,该过程确定是否应该创建输出64的变量组成部分72。在图6的单元504处,从248开始附加功能的处理。最初,该方法在508向显示器60输出输出64的文本组成部分68。处理还确定是否应该显示变量组成部分72。
具体地,在512确定是否已在当前会话期间显示了变量组成部分72。如果已显示了变量组成部分72,则处理在516继续,在516,显示从当前会话内的当前歧义消解周期中产生的新变量组成部分72。接着,处理返回520处的终止点,之后,处理返回204处的主过程。但是,如果在512确定在当前会话期间还未显示变量组成部分72,则在524,处理继续确定在当前输入与紧接的先前输入之间经过的时间是否比预定持续时间长。如果更长,则处理在516继续,在516,显示变量组成部分72,并且处理通过520返回204处的主过程。但是,如果在524确定在当前输入与紧接的先前输入之间经过的时间比预定持续时间短,则不显示变量组成部分72,处理返回520处的终止点,之后,处理返回204处的主过程。
因此,有利的是,如果用户相对快速地输入键击,则不向显示器60输出变量组成部分72,否则可能会对试图快速输入键击的用户造成视觉分散的影响。如果在给定会话中的任何时间向显示器60输出变量组成部分72,例如如果相继输入之间的时间超过预定持续时间,则变量组成部分72将在整个会话中继续显示。但是,当启动新的会话时,如果用户继续相对快速地输入键击,则将变量组成部分72从显示器上撤除。
图1和图7-11中示出了示例输入序列。在本示例中,用户试图输入单词“APPLOADER”,该单词目前未存储在存储器20中。在图1中,用户已敲击“AS”按键28。因为存储器20中的数据表是根据两字母前缀而组织的,所以从存储器内的N-gram对象112中获得第一键击时的输出64的内容。第一键击“AS”与第一N-gram对象112“A”及其相关频率对象104、以及另一N-gram对象112“S”及其相关频率对象104相对应。虽然与“S”相关联的频率对象104具有比与“A”相关联的频率对象104的频率值更大的频率值,但是要注意“A”本身是完整的单词。不论相关的频率值如何,完整单词总是优先于不与完整单词匹配的其他前缀对象,被设置为缺省输出76。这样,在图1中,输出64的缺省部分76是“A”。
在图7中,用户额外输入了“0P”按键28。图7中示出了变量。因为前缀对象“SO”也是单词,所以将其设置为缺省输出76。在图8中,用户再次输入“OP”按键28,还输入“L”按键28。要注意,这里示出的示例“L”按键28只包括单个字符48“L”。
假设在当前示例中,至此还未检测到操作性输入。缺省输出76是可能与单词“APPLE”相对应的“APPL”。前缀“APPL”示出在文本组成部分68、以及变量组成部分72的缺省部分76中。变量部分80中的变量前缀对象包括可能与单词“APOLOGIZE”相对应的“APOL”、以及可能与单词“SPOLIATION”相对应的前缀“SPOL”。
特别要注意,附加变量“AOOL”、“AOPL”、“SOPL”和“SOOL”也示为变量组成部分72中的变量80。因为没有单词对象108与这些前缀对象相对应,所以将这些前缀对象看作未识别出对应的单词对象108的孤生前缀对象。在这点上,优选地可以是变量组成部分72包括特定数量的条目,在本典型实施例中,该数量是7个条目。当在224获得结果时,如果结果中的前缀对象数量少于预定数量,则歧义消解功能将尝试提供附加的输出,直到提供了预定数目的输出。在未创建人为变量的情况下,由孤生前缀对象提供附加的变量条目。但是,要注意,如果已产生了人为变量,则它们可能优先于孤生前缀对象,也可能优先于结果的前缀对象。
还要注意,这种孤生前缀对象实际上可以是来自暂时停用的父辈孤生前缀对象和/或人为变量的子代孤生前缀对象。根据下文解释的频率排序或其他排序,可以再次输出这种子代孤生前缀对象。
按照N-gram对象112的使用频率及其关联频率对象104的降序,对孤生前缀对象进行排序。因为孤生前缀对象没有对应的具有相关频率对象104的单词对象108,所以与多个N-gram对象112相关的频率对象104必须用作后退(fallback)对象。
使用N-gram对象112,例如,歧义消解功能首先确定任意具有三个字符的N-gram对象112是否是任意孤生前缀对象的最末三个字符的匹配。因为手持电子设备4的本典型实施例包括以最大长度为三个字符为示例的N-gram对象112,所以给定三个字符的示例,但是要理解,如果存储器22包括四个字符或更长的N-gram对象,则歧义消解功能典型地将首先确定存储器22中具有最大长度的N-gram对象是否与孤生前缀对象最末的相同数量的字符匹配。
如果只有一个前缀对象以这种方式与三个字符的N-gram对象112相对应,则在变量输出80中的多个孤生前缀对象中,首先列出这个孤生前缀对象。如果其他孤生前缀对象与具有三个字符的N-gram对象112匹配,则分析与这些识别的N-gram对象112相关的频率对象104,并按照频率降序,对所匹配的孤生前缀对象排序。
如果确定无法获得与三个字符的N-gram对象112的匹配,则采用两字符N-gram对象112。因为存储器20包括两字符N-gram对象112的所有排列,所以每个孤生前缀对象的最末两个字符可以与对应的两字符N-gram对象112相匹配。在实现这种匹配之后,分析与这些识别的N-gram对象112相关的频率对象104,并按照与所识别的N-gram对象112相关的频率对象104的频率值的降序,对孤生前缀对象排序。还要注意,可以使用N-gram对象112及其相关频率对象104,相似地对人为变量进行排序。
在图9中,用户已额外输入了“OP”按键28。在这种情况下,如图9中可见,输出64的缺省部分76已变为可能与单词“APOLOGIZE”相对应的前缀对象“APOLO”,而图8中紧接在当前输入之前的输出64的缺省部分76是可能与单词“APPLE”相对应的“APPL”。再次假设还未检测到操作性输入,图9中的缺省前缀对象不与图8的先前缺省前缀对象相对应。这样,产生第一人为变量“APOLP”,在本示例中将其放在优先位置。通过删除缺省前缀对象“APOLO”的最末字符,并用产生输出64缺省部分76的最末字符的按键28上的对立字符48(在图9的本示例中是“P”)替代该最末字符,产生上述人为变量“APOLP”,所以前述人为变量是“APOLP”。
此外,因为先前缺省输出“APPL”与诸如与单词“APPLE”相对应的单词对象108相对应,并且因为添加的当前输入使先前缺省输出“APPL”不再与单词对象108相对应,所以产生两个附加的人为变量。一个人为变量是“APPLP”,另一人为变量是“APPLO”,它们与先前缺省输出“APPL”外加受激励以产生当前输入的按键28的字符48相对应。相似地输出这些人为变量,作为输出64的变量部分80的一部分。
如图9中可见,输出64的缺省部分76“APOLO”看起来不再与可能需要作为“APPLOADER”的前缀的部分相匹配,用户可能预料到所需单词“APPLOADER”还没有存储在存储器20中。这样,用户通过滚动拇指轮32,或通过激励<NEXT>键40,来提供选择输入,直到变量串“APPLO”被加亮。接着,用户继续敲击并输入“AS”按键。
图10示出了这一动作的输出64。这里,串“APPLOA”是输出64的缺省部分76。因为作为对变量串“APPLO”的选择输入的结果,变量串“APPLOA”成为输出64的缺省部分76(这里未明显示出),并且因为变量串“APPLO”不与单词对象108相对应,所以创建字符串“APPLOA”和“APPLOS”,作为人为变量。另外,因为图9的先前缺省“APOLO”先前与单词对象108相对应,但是现在不再与图10的输出64的缺省部分76相对应,所以也产生附加的人为变量“APOLOA”和“APOLOS”。给这种人为变量赋予优先于三个所显示的孤生前缀对象的位置。
因为本示例中的当前输入序列不再与任何单词对象108相对应,所以对于当前会话中的进一步输入,不再执行与尝试寻找对应单词对象108有关的方法部分。即,因为没有单词对象108与当前输入序列相对应,所以进一步的输入将类似地不与任何单词对象108相对应。避免在存储器20中搜索这种不存在的单词对象108,节省了时间,避免浪费处理操作。
随着用户继续敲击,用户最终将成功地输入单词“APPLOADER”,并将输入定界符输入。当在输入“APPLOADER”之后检测到定界符输入时,启动学习功能。因为单词“APPLOADER”不与存储器20中的单词对象相对应,所以产生与“APPLOADER”相对应的新单词对象108,并在新单词数据库92中存储该新单词对象108、以及对应的新频率对象104,其中向新频率对象104赋予在可能频率范围的前三分之一或四分之一中的绝对频率。在这点上,要注意,新单词数据库92和频率学习数据库96一般是以与在普通单词列表88中找到的两字符前缀数据表相似的两字符前缀数据表来组织的。这样,最初给新频率对象104分配绝对频率值,但是在存储该绝对频率值时,如果它不是数据表内的最大值,则将其改变为包括相对于数据表内的最大频率值而归一化的归一化频率值百分比。
作为后一示例,在图11中,用户正在敲击输入单词“APLOGIZE”。用户已输入按键序列“AS”“OP”“OP”“L”“OP”。因为“APPLOADER”现在已作为单词对象108添加到新单词数据库92,并已与具有相对高的频率值的频率对象104相关联,所以与“APPLOADER”相对应的前缀对象“APPLO”优先于与所需单词“APLOGIZE”相对应的变量前缀对象“APOLO”,已被显示作为输出64的缺省部分76。因为单词“APLOGIZE”与至少存储在普通单词列表88中的单词对象108相对,所以用户可以简单地继续输入与将会是单词“APLOGIZE”中前缀对象“APOLO”之后的字母的附加字母“GIZE”相对应的键击,以获得单词“APLOGIZE”。可选地,在看到图11中示出的输出64时,用户可以输入选择输入,以肯定地选择变量前缀对象“APOLO”。在这种情况下,在检测到定界符符号时,将触发学习功能,在进行选择输入时与字符串“APOLO”相对应的单词对象将存储在频率学习数据库92中,并将与修改的频率对象104相关联。该修改的频率对象104具有相似地存储在频率学习数据库92中的相对较高的频率值。
图12中大体示出了手持电子设备4的其他特征。在一些情况下,需要禁用歧义消解功能。例如,当需要输入口令时,歧义消解典型地比普通文本输入更加费事。这样,当系统焦点集中在与口令域相对应的组成部分上时,该组成部分向API指示需要特殊处理,API禁用歧义消解功能,取而代之地使多次敲击输入解释系统之类的系统有效。可选地,其他输入解释系统可以包括和弦系统、或按下-保持/按下-释放解释系统。这样,虽然在歧义消解功能有效时输入的输入是模糊输入,但是通过使诸如示例的多次敲击系统之类的可选解释系统有效,每个输入可以是大体上无歧义的。
如可从图12中理解的,在口令域120内,将每个无歧义的输入显示非常短的时间,接着用诸如星号之类的另一输入将其替代。示出了字符“R”是显示出来的,要理解这种显示只延续非常短的时间。
如在图1和7-11中可见,输出64包括在变量组成部分72的下端附近显示的图形46,所显示的图形46与<NEXT>键40的图形42非常相似。这种描绘向用户指示可以激励小键盘24的按键28来选择变量输出。对所显示的图形46的描绘在用户头脑中提供了输出64与<NEXT>键40之间的关联。另外,如果用户采用<NEXT>键40来提供选择输入,则用户能够激励<NEXT>键40,而无需在文本输入期间将他的手移动到相对于外壳6的远离手的原来位置的地方,这减少了不必要的手的动作,例如如果用户需要移动手来激励拇指轮32时所需的动作。这节省了时间和精力。
还要注意,如果没有单词对象108与包括特定的预定符号的文本输入相对应,则该系统可以将该符号的存在检测作为定界符信号。例如,如果用户希望输入“one-off”,用户可以在开始时输入按键序列“OP”“BN”“ER”“ZX”“OP”,其中“ZX”激励旨在表示设置在该按键上的连字符符号。可选地,用户可以不敲击“ZX”按键,而激励<ALT>输入来无歧义地指示连字符。
假设存储器20还未包括“one-off”的单词对象108,则歧义消解功能将检测连字符是定界符输入。这样,在定界符输入之前的按键输入与在定界符输入之后的按键输入之间划定界限。这样,将所需输入作为之间带有连字符的两个分离单词,即“ONE”和“OFF”来搜索。通过在更加狭窄的范围内识别需要搜索的单词,这种方式方便了处理。
虽然详细描述了本发明的特定实施例,但是本领域的技术人员将理解,根据本公开的总体说明,可以开发针对这些详细内容的多种修改和可选方案。因此,所公开的特定配置只是示例性的,不限制本发明范围,本发明范围是由所附权利要求及其任何等同物的全部范围赋予的。