具体描述
以下描述是在以一种高效的方式输入(input)或键入(enter)文本的方法和***的背景中提供的,此高效方式使用了通配符和包含通配符的输入字符串的语言模型扩展。这些***的示例包括诸如下文中参照图1概括描述的计算环境中所体现的该类型的输入法编辑器(IME)。这些***的其它示例包括诸如下文中参照图2和/或3概括描述的移动计算环境中的文本消息接发或电子邮件***。图2一般性地示出了移动计算设备,而图3示出了移动电话型计算环境。然而在描述所示实施例的多个方面之前,描述图1-3中所示的合适的示例计算环境是有用的。
图1示出可在其上实现所示实施例的一个或多个方面的合适计算***环境100的一个示例。计算***环境100仅是合适计算环境的一个示例,并无意对本发明的使用或功能的范围暗示任何限制。也不应将计算环境100理解为具有与在示例性操作环境100中示出的任意一个组件或其组合相关的任何依存性或要求。
本发明可在许多其它的通用或专用计算***环境或配置上运行。可适合用于本发明的公知的计算***、环境、和/或配置的示例包括,但并不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程电子消费品、网络PC、微型计算机、大型计算机、电话***、包括以上任何***或设备的分布式计算环境等。
可在诸如程序模块等由计算机执行的计算机可执行指令的一般性环境背景中对本发明进行说明。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。所示实施例还可在任务由通过通信网络所链接的远程处理设备来执行的分布式计算环境中来实践。在分布式计算环境中,程序模块位于包括存储器存储设备的本地和远程计算机存储介质两者中。由程序和模块所执行的任务在以下结合附图进行描述。本领域的技术人员可将这里所提供的描述和附图实现为可被写入任何形式的计算机可读介质的处理器可执行指令。
参照图1,一个示例性***包括计算机110形式的通用计算设备。计算机110的组件可包括,但并不限于,处理单元120、***存储器130、以及将包括***存储器在内的各种***组件耦合至处理单元的***总线121。***总线121可以是包括存储器总线或存储器控制器、***总线、以及使用各种总线架构中任意总线架构的局部总线在内的诸多类型的总线结构中任何总线结构。作为示例而非限制,这些架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也被称为夹层(Mezzanine)总线的***组件互联(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质并包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但并不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储所需信息并可由计算机110访问的任何其它介质。通信介质通常以诸如载波或其它传输机制之类的已调制数据信号的形式体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递媒介。术语“已调制数据信号”是指这样一种信号,它的一个或多个特性已以在信号中编码信息的方式被设置或改变。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质,以及诸如声波、RF、红外及其它无线介质等无线介质。以上介质的任意组合也应被包括在计算机可读介质的范围内。
***存储器130包括诸如只读存储器(ROM)131及随机存取存储器(RAM)132等易失性和/或非易失性存储器形式的计算机存储介质。含有有助于在诸如启动期间在计算机110内的各要素之间传送信息的基本例程的基本输入/输出***(BIOS)133通常被存储在ROM 131中。RAM 132通常包含即刻可为处理单元120存取和/或当前正由处理单元120操作的数据和/或程序模块。作为示例而非限制,图1示出了操作***134、应用程序135、其它程序模块136、以及程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅是作为示例,图1示出了对不可移动、非易失性磁介质进行读取和写入的硬盘驱动器141,对可移动、非易失性磁盘152进行读取或写入的磁盘驱动器151,以及对诸如CD-ROM等可移动、非易失性光盘156或其它光学介质进行读取或写入的光盘驱动器155。可在该示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但并不限于,磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过诸如接口140等不可移动存储器接口连接至***总线121,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150等可移动存储器接口连接至***总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质提供了用于计算机110的计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作***144、应用程序145、其它程序模块146、以及程序数据147。需要注意的是,这些组件可以与操作***134、应用程序135、其它程序136、以及程序数据137相同或不同。这里操作***144、应用程序145、其它程序模块146、以及程序数据147被给予不同编号以说明它们至少是不同的副本。
用户可通过例如键盘162、话筒163、以及诸如鼠标、跟踪球或触摸垫等定点设备161等输入设备向计算机110输入命令和信息。其它输入设备(未示出)可包括操纵杆、游戏垫、盘式卫星天线、扫描器等。这些和其它输入设备经常通过耦合至***总线的用户输入接口160连接至处理单元120,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构来连接。监视器191或其它类型的显示器设备也通过诸如视频接口190等接口连接至***总线121。除了监视器191,计算机还可包括诸如扬声器197和打印机196等可通过输出***接口195连接的其它***输出设备。
计算机110可在使用与诸如远程计算机180等一个或多个远程计算机的逻辑连接的联网环境中操作。远程计算机180可以是个人计算机、手持式设备、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且通常包括以上关于计算机110所描述的部分或所有要素。图1中绘制的逻辑连接包括局域网(LAN)171和广域网(WAN)173,并且还可包括其它网络。这些联网环境在办公室、企业范围的计算机网络、内联网和因特网中是很普遍的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括用于通过诸如因特网等WAN 173建立通信的调制解调器172或其它装置。可为内置或外置的调制解调器172可通过用户输入接口160或其它适当机制连接至***总线121。在联网环境中,关于计算机110所描述的程序模块或其部分,可存储在远程存储器存储设备中。作为示例而非限制,图1示出了驻留于远程计算机180上的远程应用程序185。应该认识到的是,示出的网络连接是示例性的,也可使用在计算机间建立通信链接的其它装置。
图2是移动设备200的框图,它也是用于特定的所示实施例的示例性计算环境。移动设备200包括微处理器202、存储器204、输入/输出(I/O)组件206、以及用于与远程计算机或其它移动设备通信的通信接口208。在一个实施例中,前述组件通过合适的总线210被耦合以用于相互通信。
存储器204可用诸如具有电池备用模块(未示出)的随机存取存储器(RAM)等非易失性电存储器来实现,从而使得在移动设备200的常规电源关闭时储存在存储器204中的信息不会丢失。存储器204的一部分优选地被分配作为用于程序执行的可寻址存储器,而存储器204的另一部分优选地被用作诸如用以模拟盘驱动器上的存储的存储。
存储器204包括操作***212、应用程序214以及对象存储216。在运行期间,操作***212可从存储器204中被处理器202执行。在一个实施例中,操作***212是可从微软公司购得的WINDOS
CE商标的操作***。操作***212可以是设计用于移动设备的类型,并通过一组暴露的应用编程接口和方法来实现可被应用214使用的数据库特征。对象存储216中的对象至少部分地响应于对所暴露的应用编程接口和方法的调用由应用214和操作***212来维护。
通信接口208表示允许移动设备200发送和接收信息的诸多设备和技术。举例来说,这些设备包括有线和无线调制解调器、***和广播调谐器。移动设备200也可直接连接到计算机以与之交换数据。在这些情形中,通信接口208可以是能够发送流信息的红外收发器或者串行或并行通信连接。
输入/输出组件206包括:诸如触敏屏、按钮、滚轮和话筒等各种输入设备,以及包括音频发生器、震动设备以及显示器的各种输出设备。输入/输出组件206可包括移动计算设备中可见到的用于文本键入的各种类型的键盘和小键盘。例如,组件206可包括缩小了物理尺寸的全键盘、显示在触摸屏上的虚拟键盘、移动电话中常见的其中每个数字键被映射到多个字母的这种类型的受限字符小键盘等。上面所列的设备仅是作为示例,而并不需要全部存在于移动设备200上。此外,也可在移动设备200上添加或见到其它输入/输出设备。
诸如移动电话等移动计算设备往往使用数字小键盘形式的受限字符输入设备。图3是移动电话314形式的设备300的简图,该移动电话包括此类数字小键盘316、显示器306以及话筒308。移动电话314还可包括扬声器308、天线320,以及与本发明无关的收发器(未示出)形式的通信电路和其它组件。
数字小键盘316包括多个数字键322和其它键。一般而言,数字小键盘316区别于标准键盘之处在于其不具有对应每一字符的唯一键。因此,数字小键盘316是受限字符输入设备。在一个示例实施例中,小键盘316具有以下数目的键:1键322A、2键322B、3键322C、4键322D、5键322E、6键322F、7键322G、8键322H、9键322I、以及0键322K。数字小键盘316还具有星号(*)键322J和井号(#)键322L。数字小键盘316还可包括图3所示键以外的其它专用键,或者比图3所示的更少的键。数字小键盘316的这些键322可以是实际的物理键,或者在显示器306为触敏屏的情形中显示在显示器306上的虚拟的软键。
数字小键盘316的所有数字键322,除了1键322A和0键322K之外,都对应于字母表中的三或四个字母。2键322B与字母A、B、C对应。3键322C与字母D、E、F对应。4键322D与字母G、H、I对应。5键322E与字母J、K、L对应。6键322F与字母M、N、O对应。7键322G与字母P、Q、R、S对应。8键322H与字母T、U、V对应。最后,9键322I与字母W、X、Y、和Z对应。标点字符和符号既可包含在诸如1键322A等未使用的键上,也可与字母一起包含在其它键322上。此外,每个数字键322可用于键入其上所标记的数字或符号。应当注意,图3所示的小键盘配置是作为示例提供的,所披露的实施例还可使用其它配置。
计算设备100、200和300利用如下所述的通配符文本输入技术。此通配符文本输入技术可显著减少键入想要的文本所需的按键次数。这是通过使用通配符的语言模型扩展来实现的。在诸如小键盘316等小键盘文本键入设备的环境背景中,通配符文本键入技术可结合单触和/或多触文本键入技术使用。
在诸如向搜索引擎中键入查询或向浏览器地址栏中键入web地址等文本输入应用中,经常使用被称为“单词轮转”(word wheeling)的技术。单词轮转可以被理解为一种特殊的情形,其中在用户所键入的任意内容的末尾由应用或***而非用户附加通配符。用户键入前缀。在每个字符之后,***产生以此指定前缀开始的k个最常见的web查询的列表。单词轮转在用户不知道他们应当询问什么问题时,或者用户正在使用像移动电话或PDA这样具有受限键盘或小键盘能力的设备时尤其受欢迎。关键字轮转不仅在用户知道说什么时有帮助,而且在用户不知说什么时也有帮助。某些用户拼写不是很好,有些人话在嘴边却不能很好表达。某些用户只是浏览。他们并不特意寻找任何东西,但他们想要知道其他人正在关注什么。单词轮转对于这些类型的用户是有帮助的。
这些说明性地披露的方法、***和装置的某些实施例使用单词轮转的推广。在这些实施例中,若用户键入诸如“New Y”这样的简单字符串,则***实际上通过在用户输入字符串末尾添加通配符来提示诸如“New York”和“nearyear’s”等多个完整形式。然而这些实施例也允许用户自己键入通配符,甚至是在并非输入字符串的末尾的位置中键入。这里是可由用户键入(*标示由用户键入的通配字符)的输入字符串(左手边)、以及对应于这些字符串的意图输入的文本(右手边)的一些例子:
1.n*y*day→new year’s day
2.n*y*c*→New York City
3.ron*r*g*n→Ronald Reagan
4.b*fast of*→breakfast ot champions
5.raining c*and*→raining cats and dogs
6.g*spokes*→government spokesman
所披露的实施例使用一语言模型(例如三元组型)以找到与输入模式一致的最有可能的通配符扩展。语言模型通常用于语音识别和诸如上下文制约拼写纠正等其它噪声信道应用。对于不同的应用,使用的语言模型可关于不同的训练语料库进行训练。例如,对于web搜索,关于查询日志和web文档的一些组合进行训练将是有用的。对于向诸如Microsoft Word等文本编辑器中键入文本,关于标准word文档进行训练将是有用的。对于IM(即时消息接发)应用,可关于IM日志的集合进行训练,诸如此类。
在这种技术当中存在着极大的个性化的机会。在文本编辑器的情形中,可关于该用户文档来训练语言模型。该训练可在诸如MSN桌面搜索等索引器内执行。从某些方面看,输入文本的通配符扩展可视为拼写纠正的一种替换方案。它在用户对于语法上的搭配不自信的ESL(英语作为第二语言)的背景中也是有用的。例如,考虑其中一个讲外语者键入这样不通顺的短语:“there is lots offuture work.”。将在下文进一步详细描述的所披露的方法,可用于辅助该讲外语者。例如,如果他已键入字符串“there is*of future work*,”,则所述技术可提示文本“there is plenty of future work.”。
为进一步说明通配符文本输入方法,考虑另一个示例。假设用户想要找到Condoleezza Rice,但是不知道如何拼写她的名字。即使该用户能拼写她的名字,由于需要输入的字母个数的关系,在诸如移动电话小键盘等受限字符输入设备上这样做也是繁琐的。使用通配符文本输入方法,用户可将Condoleezza拼写(即,通过输入文本)为2*,其中2键代表单触字符的多种可能性[ABCabc2],而其中*是通配符。用户可随后键入‘#’用于空格。Rice容易拼写:7423。因此,用户键入2*#7423,***在查询日志(或者针对其它特定实现的索引)上搜索以产生k个最佳(最常见)匹配的列表:
1.Anne Rice
2.Book of Shadows
3.Chris Rice
4.Condoleezza Rice
5.Ann Rice
…
8.Condoleeza Rice
在上面所示示例中,与正规表达中的常量匹配的字母被加以下划线。其它字母与通配符匹配。隐式通配符(由***而非用户输入)被附加在输入字符串的末尾。所披露的方法和***还包括在输入字符串的末尾之前的一个或多个通配符。
利用所揭露的通配符技术的文本输入方法有许多潜在用处和好处。例如,字母表排序导致了稀奇古怪的行为。黄页中满是以A、AA、AAA等开头的公司名称。如果前缀匹配工具(例如某些类型的搜索引擎)越来越流行,则公司追求mail(邮箱)、map(地图)等之前的有价值的前缀只是时间问题。通配符可帮助社会避免因这种行为产生的麻烦。如果你想要找到顶级邮箱站点,使用这里描述的文本键入方法,用户可键入“*mail”,且可能找到k个最佳结果值,例如Gmail、Hotmail、Yahoo mail等等。
所揭示的方法还提供了协作与个性化的重要机会。用户快速地认识到他们何时可以不使用通配符。打字因此成为***与用户之间的协作运动。在web环境中协作甚至更为强大。用户发出许多查询,使得什么流行或热门(以及什么不流行或不热门)非常清晰。在此所揭示的文本输入***可被配置成基于这些查询来构造语言模型以将用户导向良好信息(例如,最常见搜索的主题或寻求的结果)。越来越多的用户会到达那里,致使该热门查询在该语言模型中上升。以这种方式,协作可被看作一正反馈循环。会有一种很强的群体本能(herdinstinct);各方都从该从众(follow-the-pack)协作中受益。此外,用户想要个性化。当键入朋友和家人的名字、技术术语等时,个人应当能够比其他用户使用更少的通配符。通过将语言模型与桌面搜索索引相集成,有许多个性化该语言模型的机会。
利用所披露的思想的文本输入方法、装置和***,可以针对不同操作模式来定制以使用不同语言模型、以及/或者用于的不同应用。例如,***可根据使用的文本输入设备的类型(如电话小键盘、软键盘、标准键盘等)来定制。在许多实施例中,无论使用何种类型的文本输入设备,***都会使用语言模型找到k个最佳的通配符扩展。
在不同语言模型方面,有许多可以与所揭示的方法和***一起使用的选择,包括使用许多标准三元组语言模型中的一个或多个。可关于大量的不同语言(例如英语、西班牙语、德语等)来训练该语言模型。还有其它是关于较小的子域来训练的。在一个实施例中,***包括用于搜索流行web查询和流行域的两个专用语言模型。不同的语言模型是不一样的。在使用关于普通英语训练的三元组语言模型(包含大量采集的过去十年中的新闻专线)的一个示例中,输入字符串“pres*rea**d y*t*it is v*imp*”产生的提示文本输入为“PresidentReagan said yesterday that it is very important.”。在本例中使用的引号是用于表示输入字符串的开始和结尾,并不是输入字符串本身的部分。再次地,出于在本公开中进行说明的目的,与来自用户的该示例输入字符串中的常量匹配的字母,在被***提示作为输入的该提示文本中被加以下划线,而其它字母与通配符(本例输入字符串中的*字符)匹配。作为另一示例,使用关于西班牙语训练的三元组模型,输入字符串“pres*rea*”产生的提示文本输入为“presidenteReagan”。
所揭示的文本输入***和方法还可用作调试语言模型的工具。在这样的一个示例中,在英语训练语料库中已混入一些法语。结果,英语语言模型将“en*de”中的*(即通配符)扩展为恰好也是英语单词的某些常用法语单词:raison、circulation、oeuvre、place,以及<OOV>(对应于语言模型术语中的表外词汇(outof vocabulary))。在使用此方法和***时还发现了训练语料库中的其它异常,诸如来自***(AP)新闻的标题。
对于本公开中所描述的思想,还有ESL(English as a Second Language)应用。许多用户拥有比被动词汇表更强的主动词汇表。如果用户卡在了一个单词上,则他们可利用恰当的通配符键入启发性的上下文,有很大可能***将会提出用户正在寻找的单词。在单语上下文中也有类似用法。假设用户不确定如何拼写一个名人的名字。如果他们在输入字符串中提供启发性上下文,则语言模型很可能知道如何正确拼写。参见以下示例:
ron*r*g*n→Ronald Reagan
don*r*g*n→Donald Reagan
c*rice→Condoleezza Rice
总之,在此披露的通配符文本输入思想在许多文本输入应用中都是有帮助的,例如包括不具有全尺寸键盘的设备(手机、PDA、平板电脑等)、文本输入速度较为要紧的应用(例如,即时消息接发、电子邮件等)、在语言技能方面给予辅助的***(例如,提供合适的拼写建议、提示合适的语法上的搭配的ESL应用等)中、以及在浏览中(引导用户至流行话题的***)。
在所揭示的***和方法的一些实施例中使用了索引和压缩。k个最佳字符串匹配问题提出了许多有趣的技术挑战。考虑两类语言模型的使用:三元组语言模型和长列表(用于诸如700万最流行的web查询的有限语言)。长列表是以后缀阵列来索引的。如下文所述,后缀阵列很好地推广到了电话模式。将web查询列表作为N字节的文本来处理。(新行被用字符串末尾的定界符来代替。)后缀阵列S是具有N个整数的序列。该阵列用整数0至N-1来初始化。因此,S[i]=i,0=i<N。这些整数中的每一个代表自文本中的位置i开始并延伸至字符串末尾的字符串。随后S被按照字母表顺序排列。
后缀阵列使得易于寻找任何子字符串的频率和位置。例如,给定子字符串“mail”,我们找到以“mail”开始的S中的第一个和最后一个后缀。这二者之间的间距是频率。此间距中的每个后缀指向“mail”的超级字符串(superstring)。
为了将后缀阵列推广用于示例***的电话模式,用电话顺序字符串比较(phone-strcmp)来替换字母表顺序字符串比较(strcmp)。strcmp和phone-strcmp都是一次一个地比较被考虑的两个字符串的每一字符。在标准字母表排序中,’a’<’b’<’c’,但是在phone-strcmp中,被映射为电话小键盘上的相同键的字母被视为相等。
当在这里使用时,后缀阵列被加以推广以利用流行度权重。目标并不在于找到包含子字符串“mail”的所有查询,而是找到k个最佳(最流行)查询。如果在输出上附加搜索这k个最佳结果的过滤器,则该标准后缀阵列方法将会起作用。然而如果有许多匹配,如对于较短的查询通常如此,则滤波器会花费时间O(N)。
一种改进是按照流行度和字母表顺序两者来排列后缀阵列,在树的偶数深度和奇数深度上交替。在第一层,后缀阵列按照第一顺序排列,然后后缀阵列按照第二顺序排列,依次类推。当搜索按照字母表顺序排序的节点时,可使用标准后缀阵列技术。但当搜索按照流行度排序的节点时,更流行的一半先于另一半被搜索。如果具有许多匹配,如对应于短字符串这种情形,则索引使得快速地找到前k个非常容易,且***并不需要频繁地搜索另一半。如果前缀很罕见,则同时搜索两半会是有利的,因此,对于其中输入子字符串与表中任何内容都不匹配的最坏情况,对半分割(按照流行度分割)是无用的。查找是O(sqrtN)。
通配符匹配与子字符串匹配当然是不同的任务。有限状态机是考虑采用通配符的k个最佳字符串匹配问题的较好方法。在实践中,输入字符串经常包含较长的常量锚杆(anchor)(无通配符的子字符串)。后缀阵列可使用这些锚杆以产生候选列表,这些候选随后被正规表达包(package)过滤。
在许多实际应用中存储器是有限的,特别是在移动环境中,语言模型的压缩变得优先。语言模型的无损压缩已经有很多记载。如果存储器极其有限,则可选择通过应用有损压缩方法来在存储器和准确度损失之间进行权衡。例如对于三元组模型,可以如下使用有损Golomb码压缩。每个三元组<x,y,z>被映射为散列码(hash code)h=(V2x+Vy+z)%P,其中V是词汇表的大小,而P是一适当的质数。P在存储器和准确度损失之间进行权衡——较小的P要求较少存储器但造成了较多损失,反之亦然。N个三元组被散列为h个散列码。排列这些编码。这些差异x被利用Golomb码来编码,在假定差异呈指数分布时——即在散列为泊松(Poisson)分布时差异将所呈现的分布,则该Golomb码为最优Huffman码。作为较佳的近似,排序后的hash值可认为是通过泊松过程创建的。
现参照图4,其示出了具有被配置成实现如上所述地输入文本的方法的文本键入***的***、装置或设备400。设备400可以是诸如图2和3所示的设备200和/或300等移动计算设备,或者可以是诸如图1中所示的计算环境。此实施例不限于任何特定计算环境,这仅被提供用于说明的目的。在示例性实施例中,设备400可以是诸如手机等移动电话、PDA或其它移动装置。这些示例性实施例特别是具有如上所述的受限字符小键盘的类型,或者是有着缩小的尺寸(与标准计算机键盘相比)和/或借助触敏屏虚拟提供的全键盘类型,但是并不限于此。
利用可如上所述的输入设备405,用户提供一输入字符串,此字符串在其除末尾以外的位置包含通配符,或者在末尾及末尾以外的位置均包含通配字符。此外,此字符串中可包含多个通配字符。在所揭示的实施例的一般性讨论中已提供了通配符放置的示例。在使用受限字符小键盘的实施例中,可配置处理电路410以使用诸如上述单触和多触等技术来方便输入字符串的键入。
配置处理电路410以实现用以执行该文本输入法的各种模块、功能和组件。一个此类功能是k个最佳匹配确定功能415。使用表示想要输入的文本但包含所述的一个或多个通配符的输入字符串,处理电路410使用语言模型425以标识k个最佳文本匹配430。所标识的数目k或文本匹配可以是任何想要的数字。可使用任何利用语料库、数据库或其它合适的训练数据来训练的合适语言模型。例如,可使用三元组语言模型。在一个示例性实施例中,使用了利用Golomb码的三元组语言模型。然而实施例并不限于使用任何特定语言模型。在示例性实施例中,从可能的文本匹配的索引420当中标识对应于包含该通配符的输入字符串的k个最佳文本匹配。
在示例性实施例中,k个最佳文本匹配中的至少一部分在显示设备435上被显示给用户。可按照基于分数的等级顺序来显示这些最佳文本匹配。在示例性实施例中,这些分数是使用语言模型确定的统计学分数或概率。利用输入设备405来滚动、浏览、选择等,用户可迅速标识所显示的最佳文本匹配中想要输入的那一文本。该文本然后作为要输入的文本440被提供。这样,使用远少于通常情况下所需的按键或小键盘键击,用户可输入用于特定应用的需要的文本。可在设备400上执行或访问且可对其使用该文本输入方法的应用的示例包括:文本消息接发应用、电子邮件应用、web冲浪、以及其它搜索引擎应用等。然而所揭示的实施例并不限于这些示例应用。
现参照图5,其示出表示文本输入法的流程图500。在一些实施例中,图5所示的方法是使用具有受限字符小键盘的移动设备输入文本的方法,其中该小键盘将多个数字键中的每一按键与多个不同字母相关联。在其它实施例中,图5所示的方法是当该方法在移动或非移动计算环境中实现时使用其它键盘或文本键入设备来输入文本的方法。
如框510所示,该方法包括从用户接收输入字符串的第一部分,此第一部分包括一个或多个通配字符。可以用表示至少一个通配符的一次或多次键击的形式来接收第一部分。此输入字符串的第一部分中也可包括其它非通配符字符。例如,接收输入字符串的第一部分可包括:接收受限字符小键盘、键盘或其它输入设备上的表示该输入字符串的至少一个通配字符的至少一次键击。对于其它类型的输入设备,也可使用其它非键击技术。由此,字符串可以通配字符开始(例如,*mail),或者一个或多个通配字符可出现在该输入字符串的第一部分中的任何位置(例如,h*m*)。
随后,如框515所示,该方法包括以与接收第一部分相同的方式,从用户接收该输入字符串的第二部分。此第二部分包括表示至少一个非通配符字符的键击等。该第二部分中不允许有通配符。如任选框517(以虚线显示的)所示,根据需要,可在该输入字符串中键入另一部分,包括在该字符串的末尾放置通配字符,尽管在某些实施例中所揭示的***可在该末尾位置自动放置通配符。此外,框510和517所示的步骤可包括以单触或多触方式或技术来接收输入字符串部分。
在所示方法的其它实施例中,可在参照框510和515所述的字符串键入步骤之外添加其它步骤。例如,这些步骤在图5中以虚线示出。如框520所示,该方法包括使用语言模型来对输入字符串执行通配符扩展,以标识与包含通配字符的输入字符串相对应的k个最佳匹配。在示例性实施例中,此步骤包括:根据来自语言模型的分数从可能的文本匹配索引当中标识k个最佳匹配。如上所述,可使用任何合适的语言模型,其中一个示例性实施例是通过Golomb码实现的三元组语言模型。
接下来,如框525所示,该方法可包括显示与包含通配字符的输入字符串相对应的所标识的k个最佳文本匹配中的至少一部分的步骤。此步骤还可包括,在接收到输入字符串的第一、第二和任选的第三部分时,以单词轮转的形式显示这k个最佳文本匹配。在这些实施例中,针对已键入字符串的所有部分确定k个最佳匹配,即使是在所有部分的键入完成之前也是如此。最后,如框530所示,该方法可包括接收选择这k个最佳文本匹配之一作为输入文本的用户输入。
现回头参照图4,在另一实施例中,***400可标识输入法编辑器(IME)***。例如,***400可表示用于通过输入第一语言(如英语)的文本字符串来输入第二语言(例如,诸如汉语、日语等亚洲语言)的文本的此类IME***,其中第一语言的文本字符串表示所需要的第二语言的文本的第一语言形式的拼音发音。例如,如在已知的IME中所做的那样,可使用输入设备405来输入第一语言字符以组成第二语言的文本的第一语言形似的拼音发音。但是,根据在此所揭示的思想,以第一语言提供的输入字符串包括通配字符以减少输入第一语言形式的拼音发音所需的时间。处理电路410(具有通配符扩展415)可被配置成使用适当训练的语言模型425来标识与第一语言的输入字符串相对应的第二语言的k个最佳文本匹配430。这可通过使用索引420来完成。随后可在显示设备435上向用户显示这k个最佳的第二语言文本匹配,而用户可选择想要输入的第二语言文本。
举例来说,英语输入字符串‘y*n’可完成为拼音发音‘yan’和‘yuan’,它们可产生诸如眼、烟、沿、盐、远、员、元...等汉语文本匹配。
图6所示的流程图600中示出了在此类IME中输入文本的方法。如框605所示,该方法包括接收一输入字符串的步骤,该输入字符串以第一语言表示组成所需要的第二语言文本的第一语言形式的拼音发音的至少一部分的字符,其中该输入字符串包括至少一个通配字符。随后,如框610所示,该方法包括使用语言模型标识与接收到的包括至少一个通配字符的输入字符串相对应的第二语言的文本匹配的步骤。与在上述其它实施例中一样,它包括输入字符串的通配符扩展。在框615所示的步骤,该方法包括将所标识的与接收到的包括至少一个通配字符的输入字符串相对应的第二语言的文本匹配显示给用户。最后,该方法包括如框620所示的响应用户输入选择所标识的第二语言的文本匹配之一作为输入文本的步骤。
尽管以特定结构特征和/或方法动作的语言描述了所述主题,但应当理解由所附权利要求限定的主题并不限于前述的特定特征或动作。所披露的以上特定特征和动作仅被公开作为实现权利要求的示例形式。