使用多嵌套排序来改善排序结果
背景
搜索对计算机用户而言已经变为应用程序和操作系统的重要特征。甚至,它成为计算机市场上高度有利可图的部分。一方面,广告客户购买关键词和/或当遇到某些搜索项时对期望的列出位置支付额外费用。另一方面,消费者主要关注搜索的质量,且通常基于其以往的性能和声誉来选择搜索应用程序或引擎。
更通常地,用户启动文本搜索来在因特网、其网络或其本地PC上查找特定内容。搜索请求可按照各种格式提交。取决于他/她正在寻找的内容和搜索的位置,用户可使用关键词、短语或词语的任何组合。搜索引擎的任务是检索与用户查询相关的文档。当存在与相同或类似项相关的若干文档时,必须有某种适当的技术来以反映其与查询和用户的相关性程度的次序将其呈现给用户。因此,对检索出的文档排序可能是信息检索中最有挑战性的任务。由于大多数用户一般仅查看列表(由搜索引擎返回)顶部的前几个结果,因此对这些结果实现高准确度变为日益重要。
常规排序系统继续努力来产生良好的排序但仍有问题。这部分是由于可响应于查询而返回的文档的巨大数目。为了正确地看待这个问题,当前在因特网或Web上大约有250亿个文档(例如,网站、图像、URL)。因此,响应于任何一个查询返回数千(如果不是数百万)文档上可行的。尽管当前的排序系统作出了对这样大量文档准确排序的尝试,但顶部的几个结果仍可能不是与查询和/或用户最相关的。这是由于若干原因产生的。一个原因可能是因为这样的常规排序系统可能尝试以排序较高的结果为代价来提高低排序结果,可能会降低顶部返回的结果的相关性。第二个可能的原因可能是使用单个排序算法来解决整个问题(对所有可能的查询)可能限制过多。因此,仍需要改善检索出的项目的排序同时最小化排序系统性能的花费。
概述
以下呈现了简化概述,以提供对此处所述的系统和/或方法的某些方面的基本理解。本概述不是对此处所述的系统和/或方法的概观。它并非旨在标识关键/重要元素,也非旨在描绘这样的系统和/或方法的范围。其概述的唯一目的是以一种简化的形式来介绍一些概念,作为稍后呈现的更为详细的描述的序言。
本申请涉及一种便于改善排序结果的系统和/或方法。具体地,该系统和方法应用多个嵌套级的排序技术以对之前排序的项目的子集重新排序。可按此方式采用不同的排序技术,但是为了讨论并为简明起见,此处将讨论一种排序技术。
本系统和方法涉及将排序任务分成多级,其中对高或较高排序的项目的递减子集应用排序技术。假定排序技术采用被训练来对项目排序的神经网络。可对信息的较小集合训练多个网络以产生向用户呈现的更相关的前几个项目。例如,想象用户向搜索组件提交了查询。搜索组件可针对给定查询检索超过一百万个项目,其中项目可对应于文档、文件、图像或URL。可训练第一神经网络来对该项目的初始集定序或排序。从排序项目的初始集中取前几个(例如,前2500个)结果,并训练可用于对其重新定序的第二神经网络。可使用修改后的项目集合——在此示例中为前2500个项目——训练第二神经网络。之后,可经由第二神经网络对这2500个项目重新排序。从这重新排序的2500个项目中,取得高排序项目(例如,前1000个)的更小的子集,并训练第三神经网络以随后对其重新定序。在前1000个被重新排序之后,可使用排序在顶部的项目的更小的子集以训练另一网络——例如前100个。前100个可按类似方式重新排序,以产生前10个项目,这前10个项目也可被重新排序。总的效果是在分开的级中对前2500个结果重新排序,这有效地提高了搜索组件的总体排序性能。大多数用户仅审阅针对给定查询发回的前几个结果。通过使用以上系统和方法,可对前几个结果重复地重新排序以改善其相关性和排序次序。因使用这样的分级系统而得到的改善可部分地源自在每一级,在该级使用的学习机器仅必须学习正在解决的总排序问题的小的子问题的事实。分级系统的第二个优点是由于对某些应用(诸如,Web搜索)结果必须实时返回的事实。因此,如果仅使用单个算法来执行排序,则该算法必须非常快。然而,在分级方法中,每一问题涉及少得多的数据,且因此可在每一级应用更复杂(且更慢)的排序方法。
为了实现前述及相关目的,在这里结合下列描述及附图来描述本发明的某些说明性方面。然而,这些方面仅指示了可采用本发明的原理的各种方法中的几种,且本发明旨在包括所有这些方面及其等效方面。通过结合附图对本发明的下列详细描述,本发明的其它优点以及新颖特征将是显而易见的。
附图简述
图1是便于通过重新排序高排序项目来改善针对给定查询返回的项目的排序的排序系统的框图。
图2是便于通过使用多嵌套排序方法来重新排序高排序项目以改善针对给定查询返回的项目的排序的排序系统的框图。
图3是示出使用多嵌套排序方法来便于将针对给定查询的最相关项目放置在搜索结果列表顶部或其附近的项目排序的框图。
图4是示出对项目进行排序的伸缩式(telescoping)方法的框图,具体是高排序项目的递减子集之间的关系和其在嵌套神经网络的训练及与其的交互中的使用。
图5是示出便于通过重新排序高排序项目来改善针对给定查询返回的项目的排序的示例性方法的流程图。
图6是示出便于通过使用多嵌套排序方法来重新排序高排序项目以改善针对给定查询返回的项目的排序的示例性方法的流程图。
图7是示出便于通过修剪或修改个别或连续用于训练相应的排序组件的训练集来改善针对给定查询返回的项目的排序的示例性方法的流程图。
图8是示出便于通过使用多嵌套排序方法来重新排序高排序项目的递减子集以改善针对给定查询返回的项目的排序的示例性方法的流程图。
图9是极小规模地示出根据由搜索组件检索出的一组项目对高排序项目重新定序的示意图。
图10是示出如响应于查询向用户呈现的修改后搜索结果的示例性用户界面。
图11示出了用于实现本发明各方面的示例性环境。
详细描述
现在参考附图详细描述本系统和/或方法,在整个描述中相同的参考标号表示相同的元素。在以下描述中,为说明起见,阐明了众多具体细节以提供对本系统和/或方法的彻底理解。然而,显然,本系统和/或方法可以在没有这些具体细节的情况下实施。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。
如此处所使用的,术语“组件”和“系统”指的是计算机相关实体,它可以是硬件、硬件和软件的结合、软件、或者执行中的软件。例如,组件可以但不限于是,运行在处理器上运行的进程、处理器、对象、可执行代码、执行的线程、程序、和计算机。作为说明,运行在服务器上的应用程序和服务器本身都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程中,且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。
本系统和/或方法可在每一级结合与识别和标识高排序项目的最佳子集相关的各种推断方案和/或技术,以使用多嵌套排序方法进行重新排序。具体地,针对重新排序选择的高排序项目的最佳子集可基于所检索项目的数目而对用户提交的每一查询改变。例如,一开始可在第一级重新排序前1500个项目,而在第二级,可从前面重新排序的项目中选择前250个项目以进行另一次重新排序。在其它查询中,系统可确定项目的递减子集的不同分割是更适当的。即,这样的推断方案或人工智能可用来自动使这些判断基于所检索的项目的数目和/或结合用户偏好。所检索的项目的表面相关性也可在判定过程中予以考虑。例如,可根据赋予项目的值来评估相关性。该值可用于根据哪些项目应被认为是高排序项目来确定阈值。因此,推断方案可确定例如在给定查询的特定级,是对1000个经排序项目中的前100个还是前50个重新排序。在后续一级中,可选择项目的更小子集来进行进一步的重新排序(例如,100个项目中的前10个)。这可重复直到给用户留下最高排序的项目。也可通过利用一个或多个各种推断方案来便于选择进行重新排序的级的数目。然而,应注意,对要重新排序的子集的大小的每一选择,必须离线训练排序算法。
如在此处使用时,术语“推断”通常指的是根据经由事件和/或数据捕捉的一组观察来推出或推断系统、环境、和/或用户状态的过程。例如,推断可用于标识特定的上下文或动作,或可生成状态上的概率分布。推断可以是概率性的,即是说,基于对数据和事件的考虑计算所关注状态上的概率分布。推断也可以指用于从一组事件和/或数据合成更高级事件的技术。这样的推断导致从一组观察到的事件和/或储存的事件数据构造新的事件或动作,无论事件是否在时间上紧密相关,也无论事件和数据是来自一个还是若干个事件和数据源。
对响应于用户查询检索到的项目排序使得与用户最相关的项目出现在结果列表的顶部,对大多数常规搜索引擎而言仍是相对成问题的任务。提出了解决该问题的涉及机器学习算法的各种解决方案,然而大多数方案应用于每个查询结果的全集来学习其排序。不幸的是,学习如何针对任何可能的查询来排序大量文档是非常困难的任务。
如以下图1-8描述的本申请使用机器学习方法来学习以相对于结果列表的顶部的高度准确性进行排序。更具体地,可采用多嵌套排序方法来分级地(例如,一个或多个)执行重新排序,每一级生成结果的新分布。创建新分布的方式可基于获取排序列表的最顶部处的少数文档或项目的良好排序。每一后续级的训练集被修剪以仅包括前一排序器排序较高的结果。这将问题分成较小且较容易的子任务,且分开学习每一级的排序。此外,由于子任务较小,因此可应用更复杂(且更慢)的排序算法。假定基本排序器已经产生相关文档被置于排序列表的顶部附近的良好排序。因此,每一以下排序器的目的在于仅学习高分值结果的重新排序。
而且,假定置于排序列表底部的相关文档更难以学习且因此排序算法或模块不太可能显著改善其排序是合理的。从而,每一训练集可被修剪以从训练集中排除这样的困难的相关项目,使得学习可集中于对列表顶部处的项目的排序(或重新排序)。
存在可用于实现分级重新排序高排序项目的众多不同的排序模型。为简明和易于讨论起见,将结合在Burges等人于2005年波恩在关于机器学习的第22届国际会议的期刊上发表的“Learning to Rank Using Gradient Descent(学习使用梯度下降来排序)”中所述的神经网络算法描述本申请。该算法将被称为RankNet(排序网络)。在常规实践中,可通过对输入提供带标签示例、通过网络正向传播、基于网络的输出和从带标签数据获取的期望输出计算误差函数的值,并最终递增地调节权重以减少误差函数的值(例如,当对所有训练数据平均时)来训练神经网络。
此处所讨论的神经网络算法(例如参见如上所述的序列号为11/066,514的美国申请)涉及学习排序数据集以最小化作为示例对的函数的成本。具体地,该神经网络可通过使用示例对学习一组数据点的排序并学习对具有较高相关性分值的示例赋予较高值的有关对的函数。该神经网络排序算法可在多嵌套排序器的每一级(例如,一个或多个级)应用。该算法对示例进行训练,且其输出用于产生数据点的最终排序。反向传播阶段可调整成适合基于成对误差的成本函数。对多嵌套排序器的每一级处完成的训练集的修改可被视为将关于文档在排序列表中的位置的信息引入训练过程并对学习高分值结果的定序施加更大权重的尝试。
此处提供的多嵌套排序器便于将排序问题分成更小且更可管理的任务。即,代替一次处理检索到的百万个项目,集中于这数百万个的顶部的子集以仅改善该顶部子集的排序。因此,在每一级之后,可生成结果的一种新分布,使得学习算法集中于对顶部结果重新排序。使用排序列表顶部处的结果集而非成对的准确性来测量排序器的性能。从而,该方法也可通过更强调学习如何对高分值文档重新排序来桥接训练期间所使用的成本函数与评估测量值之间的间隙。参考图1-8进一步描述多嵌套排序方法。
现在参考图1,这是便于通过重新排序高排序项目来改善针对给定查询返回的项目的排序的排序系统100的一般框图。系统100包括针对给定查询检索初始项目集的搜索组件110。例如,假定用户执行了对“儿童疾病和抗生素”的搜索。搜索组件110可检索与这些搜索词相关的多个项目。检索出的项目然后可被用作多嵌套排序组件120的第一训练集。该多嵌套排序组件120可对高排序项目的一个或多个递减子集排序或重新排序,以便于获取搜索结果列表顶部处的最相关项目。
多嵌套排序组件120可包括多个神经网络。使用训练项目集来单独训练每一神经网络以学习排序。更具体地,在如上所引用的RankNet中,每一神经网络可学习使用基于示例对的概率性成本函数来进行排序。在训练期间,神经网络按照以下次序示出一对示例:例如,期望所示的第一示例的排序比第二示例高;且用于更新网络的成本函数取决于对这两个示例的网络输出。例如,假定样本A被给予网络输入,接着是样本B;并假定期望使网络将样本A排序成高于样本B。如果网络对A输出了比B低的数,则成本较大,且网络相应地更新其权重——以减少成本。而且,在训练阶段期间,可假定第一示例总是或几乎总是排序成高于第二示例。然而,在测试阶段期间,神经网络可将单个示例映射到然后用于排序数据的数。
响应于查询检索到的初始项目集可按此方式排序。根据该排序的项目列表,高排序项目的子集可通过使用该项目子集来训练另一神经网络来重新排序。实际上,例如想象在100,000个(经排序的)结果中,系统取得前2500个项目,并对该2500个项目的递减子集执行多次重新排序迭代。结果,可取决于所执行的重新排序的级数对前10个项目(来自前2500个项目)重新排序和/重新混洗一次或多次。因而,比较在级=0(重新排序前)和级=3(在3次嵌套迭代后)时列表中顶部位置的项目可产生或可以不产生不同的项目。然而,在某些情况中,顶部位置中的项目可至少改变一次。
现在参考图2,这是便于通过使用多嵌套排序方法来重新排序高排序项目以改善针对给定查询返回的项目的排序的排序系统200的框图。具体地,系统200包括接收初始训练数据集(例如,响应于查询检索到的项目)的排序组件210。排序组件210可学习使用基于样本对的概率成本函数来排序。更具体地,排序组件210可采用一种学习算法,对该算法给定R
d中的一组样本对[A,B]以及样本A的排序高于样本B的目标概率
。采用以下形式的模型:
一组样本的排序次序由f所取的实值所指定,更具体地,假定f(x
1)>f(x
2)意味着该模型使x
1的排序高于x
2。使用逻辑函数
来对输出到概率的映射建模,其中
且
(xi的排序高于xj)。也可对神经网络采用成本函数以学习排序。成本函数可变为两个连续训练样本的输出的差的函数:
,假定第一样本具有比第二样本高或相同的排序。
因此,排序组件210可提供经排序项目220,借此可将经排序项目的子集用作新的或修改后的训练集230。可将该新的训练集提供给多嵌套排序组件240,其中在每一级处可通过训练集修改组件250递减地修改训练集。当创建了新的或修改后的训练集时,它可用于神经网络训练260以在特定级针对给定项目子集创建神经网络。
图3示意性地示出了通过在各级处对项目子集应用排序函数或模型以便于将针对给定查询的最相关项目置于搜索结果列表顶部或附近的高排序项目的重新排序。用户或搜索和检索系统可确定级数和/或要在每一级重新排序的(高排序)项目的数目。如图3中所示,所选高排序项目可在一个或多个级处重新排序,借此在每个连续级处,从前一项目子集减少经重新排序的项目的子集。实际上,例如想象有一训练查询集Q=(q1,...,q|Q|),且针对每一查询qi,有由在搜索引擎中使用的基本排序器排序在前R1个结果(在所检索的R1个项目中)之中的一组文档Di=(di1,...,diR1)。关于这些项目的排序的信息(例如其分值)可用作后续排序级的输入。
多嵌套排序方法应用排序算法(例如,图1和2中的排序组件)来在一个或多个级处重新排序顶部的结果。在每一级处,向排序组件/算法/函数提供包含高排序项目的递减子集的每个查询结果的新分布。因此,在每一级后,以以下方式修剪训练集:在第一级300处,对前R1个结果的整个集合应用排序函数(305),其中例如R1=每个查询2500个文档(例如,对象、文件、URL、图像等)。训练过程计算第一网络,Net1(310)。可根据使用Net1计算出的递减分值来对结果排序(315)。之后,修改训练集,使得仅对每一查询保留根据Net1收到最高分值的前R2个文档。
第二级320产生Net2,且仅对下一训练集保留前R3得分的文档。该修剪过程可被称为伸缩式,相当于在第一级后固定排序从R1到(R2-1)的文档的Net1排序,用Net2重新排序前R2个文档,在第二级之后再次固定排序置于从R2到(R3-1)的文档的排序,用Net3重新排序前R3个结果,并依此类推(例如,级3、级4等)。因此,在多嵌套排序的每一级之后,产生可供评估的每个查询所有R1个结果的排序列表。级的数目和每一级中项目的数目可变化。从而,对一个查询,可使用四级,其中R1=2500,R2=1000,R3=100,R4=10,而在另一查询中,可使用三级,其中R1=2500,R2=100,R3=10。应理解,每一级处项目的数目可不同于在之前示例中所使用的数目,只要它们出现在递减的子集中即可。可对确认和测试集合应用类似或相同的伸缩式过程。
如在以上示例性场景中所述,该方法将问题分成小片,使得每一网络具有较小和较简单的任务要执行。此外,数据集的修剪将排序列表底部的假定困难的相关文档从训练集中移除,并使算法关注于高得分相关文档的排序。
回想起为示例性目的所描述的排序算法的成本函数依赖于两个连续训练样本的输出的差。如此处所述,样本为响应于特定查询由搜索引擎返回的文档或其它项目。随后,在每一迭代之后,训练样本网络的输出生成其相对于查询的排序。由于成本函数的当前形式,排序算法试图学习文档的正确成对次序而不考虑其在排序列表中的位置。因此,在训练期间网络有可能通过即使以稍微下移列表顶部的某些相关结果为代价也显著上移处于列表底部的文档来改善成对错误。实验数据示出这的确可能在训练期间发生。
现在转向图4,这是示出对项目进行排序的伸缩式方法的框图,更具体地是高排序项目递减子集之间的关系与其在训练嵌套神经网络及与其的交互中的使用。该示意图示出了取得高排序项目的初始集并然后修剪其每一连续子集的伸缩式方面。用于对项目排序的神经网络也可基于这样的子集来连续修改。作为排序的伸缩式本质的结果,重新排序搜索结果列表中更相关的项目以便于在列表的顶部获得最相关的项目。
如图中所示,高排序项目的初始集410(从由搜索组件检索到并随后排序的项目的列表中取得)可用于训练第一神经网络420。经训练的神经网络420然后可用于项目410以便获得连续的高排序项目子集430。这可对用户期望的进行的多次迭代继续,以便于精细调节搜索结果列表顶部的项目。这在图4中示出,其中神经网络netG(G是大于等于1的整数)可由相应的修改后的训练集训练。
现在将通过一连串动作描述各个方法。可以理解和领会,本系统和/或方法不受动作次序的限制,根据本申请,某些动作可按不同次序发生和/或与此处所示和所述的其它动作并发。例如,本领域技术人员将会理解并明白,可以将方法替换表示为一连串相互关联的状态或事件,诸如状态图中。而且,并不是所有示出的动作都是执行根据本申请的方法所必需的。
现在参考图5,这是示出便于通过重新排序高排序项目来改善针对给定查询返回的项目的排序的示例性方法500的流程图。方法500涉及在510由搜索组件针对给定查询检索项目初始集。可使用任何排序函数或算法来对该项目集排序以获得项目的初始排序。随后在520,方法500可重新排序高排序项目的一个或多个递减子集以便于将对查询最相关的项目置于搜索结果列表的顶部。一旦执行了所期望的项目重新排序,就可向用户呈现搜索结果列表。因此,想象响应于用户查询返回了500,000个项目。代替试图提高较低排序项目(例如,列表底部附近或低于阈值)的排序,该方法将其精力集中于高排序项目。因此,可选择列表上的前3000个项目。作为结果,以连续方式重新排序前3000个项目的嵌套组,使得项目的当前排序可部分由之前的排序确定。
转向图6,这是示出便于通过使用多嵌套排序方法来重新排序高排序项目以改善针对给定查询返回的项目的排序的示例性方法600的流程图。方法600涉及在610处响应于查询检索多个项目。在620,可使用任何期望的排序函数或模型来对项目排序。为了改善较高排序项目(例如,前V个项目,其中V是大于1的整数)的排序,可在630使用多嵌套排序方法来对较高排序项目重新排序。即,可在各级处对较高排序的项目应用相同或相似的排序函数(例如,在项目的递减子集中),而非一次对整个项目组应用该排序函数。例如,可取得前2500个项目并重新排序以产生前2500个项目的新次序。随后,可取得前100个项目并重新排序以产生前100个项目的新次序——同时,其余2400个项目的排序(排序低于前100)保持不变。如果需要,可例如对前10个项目执行另一级的重新排序。在640,可向用户呈现由搜索组件检索出的重新排序项目和其余项目。
在以下的图7和8中,应理解所述的方法(700、800)可适用于任何定序问题,其中顶部项目(或更一般地,项目的某个子集)的排序的准确性比其它地方的排序重要。搜索引擎是这个成立的应用的众多示例之一,且不必是所涉及的查询。
现在参考图7,这是示出便于通过修剪或修改个别和连续用于训练相应的排序组件的训练集来改善针对给定查询返回的项目的排序的示例性方法700的流程图。方法700涉及在710处经由搜索组件或引擎响应于查询而检索项目。在720,可使用训练集计算或训练排序组件。在730,可使用排序组件对搜索组件检索到的项目排序。在740,可通过排除较低排序的项目(例如,其相关性更难确定的低分值项目)来修改或修剪训练集。结果,排序组件可关注于对更相关的高分值项目的排序。在750,可使用修改后的训练集来训练新的或修改后的排序组件。在760,其余项目(例如,未被排除的那些)可由修改后的排序组件再次排序。在740到760发生的过程可按需重复,借此由其相应的修改后的训练集对高排序项目的递减子集重新排序。
在图8中,这是示出便于通过使用多嵌套排序方法来对高排序项目的递减子集重新排序以改善针对给定查询返回的项目的排序的示例性方法800的流程图。方法800涉及在810从针对给定查询检索出的排序项目列表中提取高排序项目。例如,想象取得检索出的二百万个文档中的前1000个文档。在820,可基于(提取出的)高排序项目训练排序组件(例如,机器学习的神经网络)。因此,可将前1000个项目用作训练集。在830,这些项目可由最近训练的排序组件重新排序。这意味着,在该重新排序过程中不考虑来自经由搜索组件检索到的二百万个文档的任何信息。在840,可提取重新排序的高排序项目的子集以再次修改排序组件的训练。因此现在想象从重新排序的1000个项目的列表中取得前100个项目,并使用该前100个项目作为新的或修改后的训练集以重新训练排序组件。然后在850,可由修改后的排序组件对这100个项目重新排序。这可通过现在从这100个项目列表中取得前10个项目并按类似的方式对其重新排序来再次重复。如可见地,列表上的前10个项目可在每一级中重复地重新定序。
现在转向图9,图示小规模地示出了对搜索结果的重新排序,更具体地是对高排序项目的重新排序。想象用户输入了Web查询“stroller(手推车)”,且返回了众多项目并对其排序。框900提供了从这种排序中得到的前5个项目的列表。为了获取对前5个项目(例如,URL)的改善的定序,可采用多嵌套方法来在各级中(例如,一个或多个级)对项目重新定序。在更实际的规模上,系统可处理针对该查询检索到的二百五十万个项目,并因此对前5000个项目进行重新定序以最终改善前10个项目的定序和/或顶部项目可对用户相当有利。因此,在对项目重新排序之后,获得5个项目的新次序(910)。最终结果列表可如图10所示向用户呈现。多嵌套排序组件所消耗的处理时间是可忽略不计的,且基本上不会引起用户注意;且在结果列表的顶部提供最相关项目时改善的准确性极大地增加了用户对搜索组件的满意程度。
为了提供有关本发明的各个方面的附加上下文,图11以及下列论述旨在对可在其中实现本申请的各个方面的合适的操作环境1110提供简要、一般描述。当在由一个或多个计算机或其它设备执行的诸如程序模块等的计算机可执行指令的一般上下文对本系统和/或方法进行描述时,本领域技术人员将认识到,本发明还能够结合其它程序模块和/或作为硬件和软件的组合来实施。
然而,通常,程序模块包括执行特定任务或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作环境1110只是合适操作环境的一个示例,并不旨在对本系统和/或方法的使用范围或功能提出限制。其它适于与本发明一起使用的公知的计算机系统、环境、和/或配置,包括但不限于:个人计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程的消费者电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备的分布式计算环境等等。
参考图11,用于实现本系统和/或方法各方面的示例性环境1110包括计算机1112。计算机1112包括处理单元1114、系统存储器1116和系统总线1118。系统总线1118将包括但不限于系统存储器1116的系统组件耦合至处理单元1114。处理单元1114可以是任何各种可用的处理器。也可以使用双微处理器和其它多处理器体系结构作为处理单元1114。
系统总线1118可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,11位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展的ISA(EISA)、智能驱动器电子接口(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、通用串行总线(USB)、高级图形接口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)以及小型计算机系统接口(SCSI)。
系统存储器1116包括易失性存储器1120和非易失性存储器1122。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机1112中元件之间传递信息的基本例程,它通常存储在非易失性存储器1122中。作为说明,而非限制,非易失性存储器1122可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器1120可以包括用作外部高速缓存的随机存取存储器(RAM)。作为说明,而非限制,RAM以多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接RambusRAM(DRRAM)。
计算机1112也包括可移动/不可以移动、易失性/非易失性计算机存储介质。例如,图11示出盘片存储1124。盘片存储1124包括,但不限于,如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、Ls-100驱动器、闪存卡或记忆棒的设备。另外,盘片存储1124可以包括独立或与其它存储介质结合的存储介质,包括但不限于,诸如光盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)等的光盘驱动器。为了便于将盘片存储设备1124连接至系统总线1118,一般使用诸如接口1126等可移动或不可移动接口。
可以理解,图11描述了作为用户和在合适的操作环境1110中描述的基本计算机资源之间的中介的软件。这样的软件包括操作系统1128。可被存储在盘片存储1124上的操作系统1128用来控制和分配计算机系统1112的资源。系统应用程序1130通过存储在系统存储器1116或者盘片存储1124上的程序模块1132和程序数据1134利用了操作系统1128执行的资源管理。可以理解,本系统和/或方法可以使用各种操作系统或操作系统的组合来实现。
用户通过输入设备1136向计算机1112输入命令或信息。输入设备1136包括,但不限于,诸如鼠标、跟踪球、指示笔等定点设备、触摸垫、键盘、麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、TV调谐器卡、数码相机、数码摄像机、网络摄像头等。这些和其它输入设备经由接口端口1138通过系统总线1118连接至处理单元1114。接口端口1138包括,例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1140使用某些与输入设备1136相同类型的端口。从而,例如,USB端口可以用于向计算机1112提供输入,并向输出设备1140提供来自计算机1112的输出信息。提供输出适配器1142来示出,存在类似监视器、扬声器和打印机以及其它需要专用适配器的输出设备1140的某些输出设备1140。作为说明而非限制,输出适配器1142包括提供输出设备1140和系统总线1118之间的连接手段的显卡和声卡。应该注意,诸如远程计算机1144等其它设备和/或设备系统同时提供输入和输出能力两者。
计算机1112可使用至一台或多台远程计算机,诸如远程计算机1144的逻辑连接在网络化环境中操作。远程计算机1144可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的装置、对等设备或其它常见网络节点等,且通常包括上文相对于计算机1112描述的许多或所有元件。为简明起见,对于远程计算机1144仅示出存储器存储设备1146。远程计算机1144通过网络接口1148被逻辑连接至计算机1112,并且然后通过通信连接1150被物理地连接。网络接口1148包括诸如局域网(LAN)和广域网(WAN)的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网/IEEE 1102.3、令牌环/IEEE 1102.5等。WAN技术包括,但不限于,点对点链路、类似综合业务数字网(ISDN)及其变体的电路交换网络、分组交换网络和数字用户线(DSL)。
通信连接1150指的是用来将网络接口1148连接至总线1118的硬件/软件。尽管为说明清楚,将通信连接1150示为位于计算机1112内,然而通信连接1150也可以在计算机1112外部。仅为示例的目的,连接至网络接口1148所必需的硬件/软件包括内部和外部技术,诸如包括常规电话级调制解调器、线缆调制解调器和DSL调制解调器等的调制解调器、ISDN适配器以及以太网卡。
以上描述的包括本发明的示例。当然,不可能为描述本系统和/或方法而描述每个可想象的组件或方法的组合,但是本领域的普通技术人员可以认识到,本系统和/或方法的众多其它组合和排列是可能的。从而,本系统和/或旨在包括落入所附权利要求书精神和范围内的所有这样的变更、修改和变化。而且,就在详细描述和权利要求书中都使用的术语“包括”而言,当被用作权利要求书中的过渡词时,这样的术语旨在类似于解释术语“包含”的方式是包含性的。