具体实施方式
图1A是图示显示输入和对该输入的可选替选的示例输入法编辑器(IME)界面的截屏。IME界面可以包括用于提供第一书写***(例如,拼音)中的输入的第一界面元素(例如,组合框),以及用于显示在不同的第二书写***中的可选替选(例如,汉字-中文的候选音译)的第二界面元素(例如,候选窗口)。在图1A中,输入是“pin yin shuru fa”,以及可选替选是汉字-中文的五个候选音译,即“拼音输入法”(例如,拼音的“pī n yī n shū rù fǎ”);“拼音输入”(例如,拼音的“pī n yī n shū rù”);“拼音”(例如,拼音的“pī n yīn”);“品”(例如,拼音的“pǐ n”);以及“拼”(例如,拼音的“pī n”)。
总的来说,输入可以包括一个或多个字符序列。作为示例,输入可以是字符、包含多个字符的项目(例如词或短语)、或包含多个项目的句子。有时,输入可以是期望音译的完整语音拼写。例如,在图1A中,输入“pin yin shu ru fa”可以是“拼音输入法”的完整语音拼写。在一些情况下,用户输入完全拼音表示(完整语音拼写)可能是不方便的,例如尤其在移动设备(例如,移动电话)上。因此,用户有时可能输入比完全拼音表示少的多个字符(例如,缩写)。例如,用户可以将“pysrf”作为输入提供,并且IME可以将输入“pysrf”映射到完全拼音表示“pin yin shu ru fa”。
在两个示例中,例如,当输入包括打字错误时,用户对输入进行修改可能均是不方便的。在如同图1A的IME或用户界面中,用户将需要例如通过一次为将文本光标的当前位置与打字错误的位置分离的每一个可选对象(例如每一个可选替选、或每一个划界的罗马字符组)按下LEFT/RIGHT(左/右)光标键,将文本光标(例如,***符或|条)移动到打字错误的位置。文本光标识别当前的文本输入或修改位置。
图1B是图示显示带有打字错误的输入和对该输入的可选替选的示例输入法编辑器界面的截屏。在图1B中,用户意在提供输入“Pin yinshu ru fa shi zhe yang gong zuo de”(增加了强调)。然而,用户在预期的字符序列“shu”(例如拼音音节)中没有输入字符“s”。因此,输入当前包括字符序列“Pin yin hu ru fa shi zhe yang gong zuo de”(增加了强调)。因此,可选替选(例如,中文的音译候选)可能不同于用户意在获取的内容。
在图1B中,注意到,文本光标当前位于可选替选“拼音呼入法是这样工作的”上,如第一可选替选的高亮所示。为了校正打字错误,用户将按下LEFT光标键九次(例如,以通过(1)“de”,(2)“zuo”,(3)“gong”,(4)“yang”,(5)“zhe”,(6)“shi”,(7)“fa”,(8)“ru”以及(9)“hu”)、或RIGHT光标键七次(例如,以通过(1)“拼音”,(2)“品”,(3)“拼”,(4)“频”,(5)“pin”,(6)“yin”以及(7)“hu”),来将文本光标移动到“hu”并且***缺少的字符“s”。
图2是图示图1A的示例输入法编辑器界面的截屏,其中输入的不同部分被加标签。不同部分对应于不同语言单元,例如关于字符的单元,关于音节的单元,关于项目(例如,一个或多个词)的单元以及关于句子的单元。根据操作粒度,例如可以针对单元作为整体执行浏览和编辑操作(例如,高亮、删除、复制、粘贴、替换)的级别,每一个语言单元对应于可操作单元。
总的来说,操作粒度级包括字符级、代符级、项目级以及句子级。在字符级,可以针对在原始输入的第一书写***中的字符执行操作。在代符级,可以针对由第一书写***中的字符所表示的代符(例如,音节)执行操作。在代符组级,可以针对代符组(例如,项目或短语)执行操作。句子级将整个输入看作操作单元,例如,该整个输入可以是或可以不是句子。
在图2中,根据用于拼音书写***的示例操作粒度级,为拼音输入加标签。具体地,字符级被加标签为“拼音字符”级,其中针对单个拉丁字符执行操作。代符级被加标签为“拼音代符”级,其中针对拼音代符,例如拼音音节或拼音音节的缩写,对应于中文字符的最小音译单元,执行操作。代符组级被加标签为“短语/代符组”级,其中针对代符组,例如拼音项目或短语执行操作。句子级被加标签为“句子”级。注意到,图2中的级标签实际上不在所图示的IME界面中显示。
在图2中,输入“pin yin shu ru fa”包括五个拼音代符:“pin”、“yin”、“shu”、“ru”以及“fa”,其每一个可以表示中文字符的拼音音节。作为另一个示例,输入“p y shu r fa”也表示五个拼音音节,其中“p”、“y”、“r”是拼音音节的缩写。一个或多个五个拼音代符的各种组合可以是拼音代符组,其对应于汉字-中文项目。
图3是图示观察到的文本输入序列和由观察到的文本输入序列表示的潜在项目序列的框图。图3中所图示的数据可以被存储在语言模型中的格阵中。可以使用语言模型来为观察到的文本序列,例如图3中的文本序列“pin yin shu ru fa”生成候选音译,如参考图21进一步描述的。在图3的格阵中,可以通过遍历不同路径通过格阵项来选择最可能的候选音译。具体地,一些示例候选音译包括“拼音输入法”、“拼因数入法”、“频因输入法”以及“贫引书如发”。在示例中,最佳路径,即最可能的候选音译,是“拼音输入法”。将输入分割成表示目标书写***中的项目的字符子序列,可以由语言模型提供。可以使用常规方法来生成并使用语言模型。
图4是示出用于在输入法编辑器中提供浏览和编辑功能的示例过程400的流程图。过程400包括将用户输入的多个字符分成402一个或多个代符。代符是一个或多个字符的组。作为示例,当用户提供输入“pinyinshurufa”时,将输入中的字符分成五个代符“pin”、“yin”、“shu”、“ru”以及“fa”,如图2中所示。过程400还包括将代符聚组403成一个或多个代符组。在示例中,可以将五个字符代符“pin”、“yin”、“shu”、“ru”以及“fa”聚组成两个代符组(也被称为“短语代符”)“pinyin”和“shurufa”。
过程400还包括根据操作粒度为代符组生成404一个或多个边界。在一些实施方式中,通过使用语言模型来识别最可能的音译候选,例如由通过语言模型的格阵的最可能路径所表示的音译候选,来生成一个或多个边界。在示例中,可以识别为代符组“pinyin”和“shurufa”划界的边界。此外,可以识别为代符“pin”和“yin”划界的边界,以及为代符“shu”、“ru”和“fa”划界的边界。
过程400还包括响应于接收指示触发器的激活的输入,可视地指示406用于代符组的边界。可视地指示边界可以包括为由边界划界的代符组加标签,例如紧挨每一个代符组显示数字或字母。还可以使用不同颜色、图案或用来区分代符组的其他视觉方面来可视地指示边界。
在对输入的浏览和编辑期间,用户可以使用视觉指示符来快速辨识代符组,并且直接导航到特定代符组,例如,不用将文本光标移动通过在特定代符组和文本光标的当前位置之间的代符组。
图5是图示显示输入的示例输入法编辑器界面的截屏,其中输入的不同部分被加标签。在图5中,输入“pinyinshurufadegongneng”是用来表示拼音的罗马字符序列。注意到,用户没有典型地输入分隔符(例如,空格、“|”字符)来明确划界该罗马字符之间的边界。
图5中的IME界面示出了在输入的拼音“pinyinshurufadegongneng”被分成八个拼音代符“pin”、“yin”、“shu”、“ru”、“fa”、“de”、“gong”以及“neng”之后的输入版本。识别将八个拼音代符中的每一个与邻近拼音代符划界的边界,例如代符边界。此外,IME可以从八个拼音代符识别四个代符组“pinyin”、“shurufa”、“de”以及“gongneng”。识别将四个代符组中的每一个与邻近拼音代符划界的边界,例如代符组边界。可以从使用语言模型来识别的分割确定边界。
图6-18是图示用于浏览和编辑输入的示例输入法编辑器界面和交互的截屏。具体地,图6-14示出浏览操作,例如执行来将文本光标从一个可操作单元直接移动到另一个可操作单元的操作。图15-18示出编辑操作,例如针对可操作单元作为整体执行来修改该可操作单元的操作。
图6示出在检测到触发器事件之前的示例IME界面。作为示例,触发器事件可以是从用户接收指示用户意在激活浏览通过或编辑输入的可操作单元的功能的命令输入。作为示例,命令输入可以是热键的激活,例如通过按下控制(“CTRL”)键。命令输入还可以是一个或多个物理键,例如在物理键盘设备上的键,或虚拟键,例如在显示器上键的可视表示,的激活。
当按下CTRL键时,在IME界面上显示区分代符组“pinyin”、“shurufa”、“de”以及“gongneng”的视觉指示符。在图7中,代符组“pinyin”被加标签有数字“0”,代符组“shurufa”被加标签有数字“1”,代符组“de”被加标签有数字“2”,以及代符组“gongneng”被加标签有数字“3”。
当触发器事件结束时,可以从显示移除视觉指示符。作为示例,触发器事件可以在CTRL键被按下期间继续,并且在CTRL键被释放时结束。作为另一个示例,触发器事件可以在CTRL键被按下一次时开始,并且在CTRL键被再次按下时结束。在图8中,触发器事件已结束,并且IME界面返回到如图6中的状态,例如,其中标签“0”、“1”、“2”和“3”消失。
当响应于触发器事件而显示标签时,图9中的IME界面示出与在图6中相同的状态。注意到,在用户界面中,例如***符的文本光标当前位于代符组“gongneng”的右边。通过提供命令输入,可以选择特定代符组,并且可以将文本光标同时移动到与特定代符组邻近的位置,例如,在特定代符组和在输入中在特定代符组之前或之后发生的邻近代符组之间的位置。
在图10中,当同时按下CTRL键和数字键(CTRL+数字)时,文本光标被移动到以对应数字加标签的代符组边界。如图10中所图示,当同时按下CTRL键和数字“2”键时,文本光标被移动到以“2”加标签的代符组边界,例如紧靠代符组“de”的左边的位置。如图10中所图示,在一些实施方式中,从显示移除与在输入中在所选择的、特定代符组之后发生的代符组相关联的视觉指示符。在图10中,已从显示移除了标签“2”和“3”。
在触摸屏显示器上显示IME界面的一些实施方式中,可以通过触摸在触摸屏显示器上的视觉指示符的图形表示来选择视觉指示符。
在一些实施方式中,对在输入中在选择的特定代符组之后发生的代符组的视觉属性(例如颜色、大小)进行修改,以指示从用于确定可选替选的考虑临时移除这些代符组。移除被认为是临时的,因为当触发器事件结束时,这些代符组可以被添加回到考虑作为输入的一部分。当触发器事件结束时,用户更可能具有输入的在这些代符组之前发生的完成编辑的部分。
在图10中,代符组“de”和“gong neng”的字体颜色已被修改,例如,被改变成更浅的颜色,以指示在IME界面的当前状态下不考虑“de gong neng”。因此,IME确定并提供为输入的不包括“gong neng”的部分显示可选替选。注意到,在图9中,关于输入“pin yin shu rufade gong neng”的第一可选替选“拼音输入法的公能”(例如,拼音的“pī n yī n shū rù fǎ de gō ng néng”)与关于输入的在图10中被考虑的部分即“pin yin shu ru fa”的第一可选替选“拼音输入法”(例如,pī n yī n shū rù fǎ)不相同。
在图11中,IME用户界面的状态与图9中的相同。再次,注意到,在用户界面中,文本光标位于代符组“gongneng”的右边。在一些实施方式中,通过提供方向输入将文本光标从一个代符组边界直接移动到另一个代符组边界。例如,在图12中,当同时按下CTRL键和LEFT键(例如,“←”光标键)时,文本光标从图11中所示的位置被移动到图12中所示的位置,即在文本光标的原始位置的左边的第一代符组边界的位置。
类似地,图13-14示出可以如何使用方向输入来将光标从一个代符边界直接移动到另一个代符边界。在示例中,CTRL+RIGHT(例如,CTRL+←)将文本光标移动到在文本光标的原始位置的右边的第一代符组的位置,即从紧靠代符“de”的右边的位置到紧靠代符“gong”的右边的位置。其他浏览操作(例如,朝其他方向(例如,向上、向下)移动文本光标)是可能的。
在图15-16中,针对代符执行编辑操作,例如退格操作。注意到,在图15中,在用户界面中,文本光标位于代符“fa”的右边。在图18中,当同时按下CTRL键和BACKSPACE键时,位于紧靠文本光标的左边的地方的代符即“fa”被删除。
在图17-18中,针对代符执行编辑操作,例如删除操作。注意到,在图17中,在用户界面中,文本光标位于紧靠代符“fa”的左边的地方。在图18中,当同时按下CTRL键和DELETE键(“DEL”键)时,位于紧靠文本光标的右边的地方的代符即“fa”被删除。其他编辑操作(例如复制、粘贴、替换)是可能的。
上面的描述描述了特定实施方式。随后是这些和其他实施方式的一般特征的另外描述。
在一些实施方式中,接收第一书写***中的字符输入序列。例如,第一书写***可以是拉丁。在图5中,字符输入序列的示例是“pinyinshurufadegongneng”。
在字符输入序列中,识别一个或多个第一连续字符子序列。每一个子序列表示在不同的第二书写***中的音节。该不同的第二书写***可以是中文拼音,其中音节对应于汉字字符。在图5中,第一子序列的示例是“pin”、“yin”、“shu”、“ru”、“fa”、“de”、“gong”以及“neng”。
在字符输入序列中,识别一个或多个第二子序列。每一个第二子序列包括一个或多个连续第一子序列,并且表示在不同的第二书写***中的项目。在图5中,示例第二子序列包括“pinyin”(包括连续第一子序列“pin”和“yin”)、“shurufa”(包括连续第一子序列“shu”、“ru”和“fa”)、“de”以及“gongneng”(包括连续第一子序列“gong”和“neng”)。
确定为一个或多个第二子序列划界的一个或多个边界。在图5中,关于第二子序列的边界的示例是在“pinyin”和“shurufa”之间的代符组边界。
生成一个或多个可选指示符以在用户界面中显示。一个或多个可选指示符中的每一个识别由一个或多个边界划界的相应第二子序列。在图7中,示例可选指示符包括识别四个第二子序列“pinyin”、“shurufa”、“de”和“gongneng”的标签“0”、“1”、“2”和“3”。
在一些实施方式中,从整个字符输入序列确定在第三书写***中的一个或多个第一输入候选,并且将一个或多个第一输入候选显示为对字符输入序列的可选替选。例如,第三书写***可以是汉字、片假名或谚文。在图5中,在用户界面上为“pinyinshurufadegongneng”生成并显示示例第一输入候选“拼音输入法的功能”、“拼音输入法”、“拼音输入”、“拼音”以及“品”。
在一些实施方式中,当接收了对第一可选指示符的用户选择时,从第三字符子序列确定在第三书写***中的一个或多个第二输入候选。第三子序列包括如下顺序的所有第二子序列:直至第一可选指示符所识别的特定第二子序列为止的所有第二子序列在输入序列中出现的顺序。作为示例,在图10中,当用户选择第一可选指示符“2”时,从包括第二子序列“pin yin”和“shurufa”的第三子序列“pinyin shurufa”确定第二输入候选“拼音输入法”。
将一个或多个第二输入候选而不是第一输入候选显示为对第三字符子序列的可选替选。作为示例,在图10中,从“pin yin shu ru fa”确定第二输入候选“拼音输入法”,并且将其,而不是“pin yin shu rufa de gong neng”的第一输入候选“拼音输入法的功能”,显示为对第三字符子序列的可选替选,如图9中所示。
在一些实施方式中,在接收将文本光标移动到特定第一子序列的用户输入之后,从第三字符子序列确定第三书写***中的一个或多个第二输入候选。第三子序列包括如下顺序的所有完整第二子序列:直至特定第一子序列为止的所有完整第二子序列在输入序列中出现的顺序,后跟直至特定第一子序列为止并且包括该特定第一子序列的所有第一子序列在输入序列中出现的顺序。在图14中,当用户将文本光标移动到“neng”时,从“pinyin shurufa de gong”确定第二输入候选“拼音输入法的”。
将一个或多个第二输入候选而不是第一输入候选显示为对第三字符子序列的可选替选。作为示例,在图12中,将“pin yin shu ru fa de”的第二输入候选“拼音输入法的”,而不是“pin yin shu ru fa de gongneng”的第一输入候选“拼音输入法的功能”,显示为对第三字符子序列的可选候选。
图19是示出用于在输入法编辑器中提供浏览和编辑功能的另一个示例过程1900的流程图。过程1900包括接收1902第一书写***中的字符输入序列。过程1900还包括在字符输入序列中识别1903一个或多个第一连续字符子序列。每一个子序列表示在不同的第二书写***中的音节。过程1900还包括在字符输入序列中识别1904一个或多个第二子序列。每一个第二子序列包括一个或多个连续第一子序列并且表示在不同的第二书写***中的项目。
过程1900还包括确定1905为一个或多个第二子序列划界的一个或多个边界。过程1900还包括生成1906一个或多个可选指示符以在用户界面中显示。一个或多个可选指示符中的每一个识别由一个或多个边界划界的相应第二子序列。
图20是可以利用来实现在本文中描述的***和方法的示例***2000的框图。示例***2000可以例如在计算机设备,例如个人计算机设备、或其他电子设备,例如移动电话、移动通信设备、个人数字助理(PDA)、全球定位***(GPS)导航设备等中实现。
示例***2000包括处理设备2002、第一数据存储2004、第二数据存储2006、输入设备2008、输出设备2010以及网络接口2012。可以使用包括例如数据总线和母板的总线***2014来建立并控制在组件2002、2004、2006、2008、2010和2012之间的数据通信。也可以使用其他***体系结构。
处理设备2002可以例如包括一个或多个微处理器。第一数据存储2004可以例如包括随机存取存储器存储设备,诸如动态随机存取存储器、或其他类型的计算机可读介质存储器设备。第二数据存储2006可以例如包括一个或多个硬盘驱动器、闪存和/或只读存储器、或其他类型的计算机可读介质存储器设备。
示例输入设备2008可以包括键盘、鼠标、尖笔等,以及示例输出设备2010可以包括显示设备、音频设备等。网络接口2012可以例如包括可操作来将数据传送给网络2016以及传送来自网络2016的数据的有线或无线网络设备。网络2016可以包括一个或多个局域网(LAN)、广域网(WAN),诸如因特网、无线网络,诸如蜂窝网络、或所有上述的组合。
在一些实施方式中,***2000可以包括来自诸如数据存储2006的数据存储的输入法编辑器(IME)代码2001。输入法编辑器代码2001可以包括当执行时促使处理设备2002执行输入法编辑功能的指令。输入法编辑器代码2001可以例如包括可以在web浏览器环境中执行的解释指令,诸如脚本指令,例如JavaScript或ECMAScript指令。还可以使用其他实施方式,例如单机应用、小应用程序、插件模块等,以供在用户界面中使用,例如显示对于移动设备通过使用键区映射或对于移动设备或个人计算机通过使用键盘映射来接收的用户输入的用户界面。
输入法编辑器代码2001的执行生成或启动输入法编辑器实例(IMEI)2003。输入法编辑器实例2003便于在***2000处处理一个或多个输入法,在这期间,***2000可以接收针对字符或符号的输入,诸如表示拼音的罗马字符。例如,用户可以使用输入设备2008(例如,键盘,诸如针对罗马文字的键盘、与手写识别引擎一起使用的尖笔等)中的一个或多个来输入拼音输入以识别汉字项目。在一些情况下,汉字项目由多于一个拼音输入组成。
第一数据存储2004和/或第二数据存储2006可以存储输入的关联。基于用户输入,输入法编辑器实例2003可以使用数据存储2004和/或数据存储2006中的信息来识别输入所表示的一个或多个候选选择。在一些实施方式中,如果多于一个候选选择被识别,则在输出设备2010上显示候选选择。使用输入设备2008,用户可以从候选选择中选择例如用户期望输入的汉字项目。
在一些实施方式中,在***2000上的输入法编辑器实例2003可以接收一个或多个拼音输入,并且将所述输入转换成汉字项目。输入法编辑器实例2003可以例如使用接收自键击的拼音音节(例如,罗马字符)的组合来表示汉字项目。每一个罗马字符可以例如对应于针对罗马文字的键盘中的键。使用拼音输入法编辑器,用户可以通过使用包括表示汉字项目的发音的一个或多个拼音音节的输入来输入汉字项目。然而,也可以便于用于其他语言和书写***的输入法。
在一些实施方式中,还可以使用能够访问***2000的远程计算***2018来编辑语标文字。例如,***2000可以是经由网络2016提供语标文字编辑能力的服务器。在一个示例中,用户可以使用例如客户端计算机的远程计算***来编辑存储在数据存储2004和/或数据存储2006中的语标文字。***2000可以例如选择字符,并且通过网络接口2012从用户接收输入。处理设备2002可以例如识别与所选择的字符邻近的一个或多个字符,并且基于接收到的输入和邻近字符来识别一个或多个候选选择。***2000可以将包括候选选择的数据通信传送回远程计算***。
图21包括可以利用来实现图20中的输入法编辑器(例如,IMEI2003)的示例软件的框图。***2100包括用户接口2102和软件2104。用户2106可以通过用户接口2102访问***2100。软件2104包括应用2105、IME引擎2106、操作***(OS)2107、语言模型2108以及检测引擎2110。操作***2107是可以在软件2104(例如,应用2105和IME引擎2106)和用户2106之间提供用户接口2102的特定软件。
如图21中所示,语言模型2108独立于IME引擎2106。具体地,语言模型2108被包括在软件2104内作为单独软件组件。其他实施方式是可能的。例如,语言模型2108可以位于远程的位置(例如,在图1的远程***118处)。作为另一个示例,语言模型2108可以被包括在IME引擎2106内。
语言模型2108可以定义一个或多个语言子模型,例如日语子模型、中文子模型等。每一个语言子模型可以例如定义可以用来确定用户在输入一组输入(例如,用于生成为翻译、音译或其他类型的语音表示的候选的输入)时的可能意图的特定规则集,例如特定于语言的语法、短语集、非谓语动词等。每一个语言子模型还可以包括特定用户的用户历史,例如特定用户经常使用的词和短语的词典。
检测引擎2110包括输入模块2112和计时模块2114。输入模块2112可以例如接收到特定应用2105的输入(例如,表示第一书写***中的字符的键击),并且将接收到的输入发送给IME引擎2106。在一些实施方式中,检测引擎2110是IME引擎2106的组件。
检测引擎2110可以检测第一书写***中的输入(例如,包括罗马字符的拼音输入),并且确定是否将该输入发送给IME引擎2106。IME引擎2106可以例如使用输入法编辑器代码101以及相关联的数据存储104和106来实现,并且当输入(例如,诸如罗马字符的字形)被检测到时或基于来自计时模块2114的预先确定的延时,向接口(例如,用户接口2102)提供第二书写***中的输出候选(例如,诸如汉字项目的词汇项目)。
***2100的组件可以被通信地耦接到彼此中的一个或多个。尽管上面识别的组件被描述为是独立或不同的,然而,可以将组件中的一个或多个组合成单个过程或例程。在本文中提供的功能描述,包括对不同功能的职责的分离,是作为示例的。也可以使用其他存储体系结构。具体地,必要时或依据设计偏好,可以进行功能职责的其他聚组或其他划分。例如,IME引擎2106可以执行检测引擎2110的功能。作为另一个示例,输入模块2112和计时模块2114可以被组合成单个模块。
在本说明书中描述的主题和功能操作的实施例可以以数字电子电路、或者以计算机软件、固件或硬件,包括在本说明书中公开的结构以及其结构等同物、或者以以上一个或多个的组合来实现。可以将在本说明书中描述的主题的实施例实现为一个或多个计算机程序产品,即一个或多个计算机程序指令模块,其被编码在有形程序载体上以供数据处理装置执行或控制数据处理装置的操作。有形程序载体可以是计算机可读介质。计算机可读介质可以是机器可读存储设备、机器可读存储基片、存储器设备、或以上一个或多个的组合。
术语“数据处理装置”包含用于处理数据的所有装置、设备以及机器,包括作为示例:可编程处理器、计算机、或多个处理器或计算机。除硬件外,装置可以包括为讨论中的计算机程序创建执行环境的代码,例如构成处理器固件、协议堆栈、数据库管理***、操作***、或以上一个或多个的组合的代码。
计算机程序,也称作程序、软件、软件应用、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释语言、或者说明性或过程性语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序、或适于在计算环境中使用的其他单元。计算机程序不必对应于文件***中的文件。可以将程序存储在保留其他程序或数据的文件,例如存储在标记语言文档中的一个或多个脚本的一部分、专用于讨论中的程序的单个文件或者多个协调文件,例如存储一个或多个模块、子程序或部分代码的文件中。可以将计算机程序部署为在一个计算机上或者在位于一个地点或跨多个地点分布并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器执行以通过操作输入数据并且生成输出来执行功能。所述过程和逻辑流还可以由专用逻辑电路执行,以及装置还可以被实现为专用逻辑电路,该专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适于执行计算机程序的处理器包括作为示例:通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的主要元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个海量存储设备,例如磁的、磁光盘或光盘,或可操作地耦接以从所述一个或多个海量存储设备接收数据或向所述一个或多个海量存储设备传送数据,或两者。然而,计算机不必具有这样的设备。此外,可以将计算机嵌入另一个设备中,所述设备例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器,仅列出一些。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括作为示例:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充,或合并入专用逻辑电路。
为了提供与用户的交互,在本说明书中描述的主题的实施例可以在具有下述的计算机上实现:用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示)监视器;以及用户通过其可以向计算机提供输入的键盘和指示设备,例如鼠标或跟踪球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感知反馈,例如视觉反馈、听觉反馈或触觉反馈;以及可以以任何形式,包括声学、话音或触觉的输入,接收来自用户的输入。
在本说明书中描述的主题的实施例可以在包括下述的计算***中实现:后端组件,例如作为数据服务器;或者中间件组件,例如应用服务器;或者前端组件,例如具有用户通过其可以与在本说明书中描述的主题的实施方式交互的图形用户界面或Web浏览器的客户端计算机;或者一个或多个这样的后端、中间件或前端组件的任何组合。***的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算***可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络交互。客户端和服务器的关系依靠在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生。
虽然本说明书包含许多特定实施方式细节,但是这些细节不应当被解释为对任何实施方式或可以主张的内容的范围的限制,而应当被解释为对可以具体到特定实施方式的特定实施例的特征的描述。还可以将在本说明书中在分离的实施例的情境下描述的某些特征组合在单个实施例中实现。相反地,也可以将在单个实施例的情境下描述的各种特征分离地在多个实施例中实现或在任何适当的子组合中实现。此外,尽管可能在上面将特征描述为在某些组合中起作用,甚至最初主张如此,但是可以在一些情况下,将来自所主张的组合的一个或多个特征从组合中删去,并且可以将所主张的组合指向子组合或者子组合的变体。
类似地,虽然在附图中按照特定顺序描绘了操作,但是不应当将这理解为需要按照所示的特定顺序或者按照连续顺序执行这样的操作、或者需要执行所有图示的操作,才能达到期望的结果。在某些情况下,多任务以及并行处理可以是有利的。此外,不应当将在上述实施例中的各种***组件的分离理解为在所有实施例中均需要这样的分离,而应当理解的是,通常可以将所述程序组分和***集成到一起成为单个软件产品或封装成多个软件产品。
已描述了在本说明书中描述的主题的特定实施例。其他实施例在所附权利要求的范围内。例如,在权利要求中记载的动作可以按照不同顺序来执行,并且仍然达到期望的结果。作为一个示例,在附图中描绘的过程不必需要所示的特定顺序或连续顺序,来实现期望的结果。在某些实施方式中,多任务以及并行处理可以是有利的。