此申请要求于2003年10月9日提交的题为“Systems and Methods for SearchProcessing Using Clustering of Units(使用单元群集的搜索处理的***和方法)”的美国临时专利申请第60/510,220号的优先权,其揭示内容实际上通过引用而被包含于此用于所有目的。
本揭示内容涉及共同委托、共同待批的于2003年11月12日提交的题为“Systems and Methods for Generating Concept Units from Search Queries(从搜索查询生成概念单元的***和方法)”的美国专利申请第10/713,576号,并涉及共同委托、共同待批的于2003年4月4日提交的题为“Universal Search Interface System andMethods(通用搜索界面***和方法)”的美国临时专利申请第60/460,222号。这些申请相应的揭示内容实际上通过引用而被包含于此用于所有目的。
发明详述
I.概述
A.网络实现
图1示出根据本发明的一个实施例的包括客户机***20的信息检索和通信网络10的一般概观。在计算机网络10中,客户机***20通过因特网40或其它通信网络(例如,通过任何局域网(LAN)或广域网(WAN)连接)被耦合到任意个数的服务器***501到50N。如本文中将描述的,客户机***20根据本发明被配置成与服务器***501到50N中的任何服务器***通信,以便例如,访问、接收、检索和显示诸如网页等媒体内容和其它信息。
图1中所示的***中的若干元素包括常规的、公知的元素,它们无需在此详细解释。例如,客户机***20可包括台式个人计算机、工作站、膝上型计算机、个人数字助理(PDA)、蜂窝电话、或任何启用WAP的设备、或是能够直接或间接与因特网相接的任何其它计算设备。客户机***20通常运行诸如Microsoft的Internet ExplorerTM浏览器、Netscape NavigatorTM浏览器、MozillaTM浏览器、OperaTM浏览器等浏览程序,或者在蜂窝电话、PDA或其它无线设备的情形中运行启用WAP的浏览器等等,以允许客户机***20的用户通过因特网40访问、处理和查看其从服务器***501到50N可用的信息和页面。客户机***20通常还包括诸如键盘、鼠标、触摸屏、笔等一个或多个用户界面设备22,用于与显示器(例如,监视器屏幕、LCD显示器等)上的浏览器结合由服务器***501到50N或其它服务器提供的页面、表单及其它信息所提供的图形用户界面(GUI)交互。本发明适宜和因特网一起使用,因特网是指特定的全球互联网或网络。但是应当理解,可使用诸如内联网、外联网、虚拟专用网络(VPN)、非基于TCP-IP的网络、任何LAN或WAN等其它网络来代替因特网或作为其补充。
根据一个实施例,客户机***20及其所有组件是操作者使用包括用诸如IntelPentiumTM处理器、AMD AthlonTM处理器等中央处理单元或是多处理器来运行的计算机代码的应用程序来配置的。用于操作和配置客户机***20来如本文中所描述地传递、处理和显示数据和媒体内容的计算机代码较佳的是被下载并存储在硬盘上,但整个程序代码或其部分也可被存储在诸如ROM或RAM等公知的任何其它易失性或非易失性存储介质或设备中,或在诸如光盘(CD)介质、数字多功能盘(DVD)介质、软盘等能够存储程序代码的任何介质上提供。此外,整个程序代码或其部分可使用任何通信介质和协议(例如,TCP/IP、HTTP、HTTPS、以太网或其它常规介质和协议),来从软件源发送和下载(例如,通过因特网从服务器***501到50N到客户机***20),或通过任何其它网络连接(例如,外联网、VPN、LAN或其它常规网络)来发送。
应当认识到,用于实现本发明诸方面的计算机代码可以是C、C++、HTML、XML、Java、JavaScript等代码,或任何其它合适的脚本语言(例如,VBScript),或是能在客户机***20上执行、或可被编译为在客户机***20上执行的任何其它合适的编程语言。在一些实施例中,没有任何代码被下载到客户机***20,所需的代码是由服务器执行,或是执行已经存在于客户机***20处的代码。
B.搜索***
图2示出根据本发明的一个实施例的另一种用于传递媒体内容的信息检索和通信网络110。如图所示,网络110包括客户机***120、一个或多个内容服务器***150、以及搜索服务器***160。在网络110中,客户机***120通过因特网140或其它通信网络被可通信地耦合到服务器***150和160。如上所述,客户机***120及其组件被配置成通过因特网140或其它通信网络来与服务器***150和160以及其它服务器***通信。
1.客户机***
根据一个实施例,在客户机***120上执行的客户机应用程序(被表示为模块125)包括用于控制客户机***120及其组件与服务器***150和160通信、并控制它们处理和显示从那里接收的数据内容。客户机应用程序125较佳的是从诸如远程服务器***(例如,服务器***150、服务器***160或其它远程服务器***)发送并被下载到客户机***120,尽管也可在诸如上述的软盘、CD、DVD等任何软件存储介质上提供客户机应用程序模块125。例如,在一个方面,可通过因特网140,在包括了诸如嵌入式JavaScript或Active X控件等用于操纵数据及在各种对象、框架和窗口中呈现数据的各种控件的HTML包装程序中向客户机***120提供客户机应用程序模块125。
此外,客户机应用程序模块125包括用于处理数据和媒体内容的各种软件模块,诸如用于处理搜索请求和搜索结果数据的专用搜索模块126、例如浏览器窗口和对话框等用于在文本和数据框架和活动窗口中呈现数据和媒体内容的用户界面模块127、以及用于与在客户机120上执行的各种应用程序相接和通信的应用程序接口模块128。根据本发明的方面,在客户机120上执行的、应用程序接口模块128被优选地配置成与其相接的各种应用程序的示例包括各种电子邮件应用程序、即时消息通信(IM)应用程序、浏览器应用程序、文档管理应用程序及其它。此外,界面模块127可包括诸如被配置在客户机***120上的默认浏览器或其它浏览器等浏览器。在一些实施例中,客户机应用程序模块125提供如以上所引述的临时申请第60/460,222号中所描述的通用搜索界面。
2.搜索服务器***
根据一个实施例,搜索服务器***160被配置成向客户机***120提供搜索结果数据和媒体内容,而内容服务器***150被配置成响应于例如由搜索服务器***160所提供的搜索结果页面中被选择的链接,来向客户机***120提供诸如网页等数据和媒体内容。在一些变更方案中,搜索服务器***160也返回内容,或者替代地返回对内容的链接和/或其他引用。搜索服务器***160还被优选地配置成以下述查询日志文件的形式来记录用户查询活动。
一个实施例中的搜索服务器***160引用以例如页面、页面的链接、表示被索引的页面的内容的数据等填充的各种页面索引170。页面索引可用各种收集技术来生成,包括用于对分层结构内的网页进行分类和分级的自动web爬行器(crawler)、蜘蛛(spider)等、以及手动或半自动的分类算法和界面。这些技术可在搜索服务器***160上实现,或可在生成页面索引170并使其对搜索服务器***160可用的单独的***(未示出)中实现。
页面索引170中的条目162包括搜索项、其中出现该项的页面的链接(或其它经编码的标识符)、以及该页面的上下文标识符。上下文标识符可被用来将在不同上下文中可能有不同含义的搜索项的相似结果分组。例如,搜索项“java”可能是指Java计算机语言、指印度尼西亚的Java岛、或是指咖啡(常被俗称为java)。较有利的是,页面的上下文标识符指示这些上下文中的哪一个适用。可将页面链接与多个上下文标识符相关联,从而可在多种上下文中显示同一个页面(或其链接)。上下文标识符较佳的是在用户执行相关搜索时,由***自动与页面链接相关联;但是,这些标识符也可由一个或多个索引编辑者的团队手动地修改并与链接相关联。以此方式,从无数搜索中收集的知识可被反馈到***中,并可重新定义上下文,以使所显示的搜索结果对请求的用户更有价值和有用。
搜索服务器***160被配置成提供响应于从客户机***,特别是从搜索模块126接收的各种搜索请求的数据。例如,能以用于处理和将与给定查询相关的网页分级(例如,基于由搜索项在查询中出现的模式来度量的逻辑相关性;上下文标识符;页面赞助等的组合)的搜索相关的算法来配置搜索服务器***160。根据本发明的实施例,这些算法包括用于进行概念分析的算法。
举例而言,本发明的一些实施例分析搜索查询和/或结果,并按上下文将结果分组,以便在用户的计算机120处显示。例如,响应于搜索项“Java”,搜索服务器***160的一些实施例返回被分组为三种上下文或词义(或更多,若标识出其它的上下文)的搜索结果:Java计算机语言、Java岛、以及Java咖啡。该***可被配置成以具有与每种上下文相关联地提供的链接的组来显示结果,或者该***可仅显示这些上下文(含足够的信息以向用户区别这些上下文)而不带任何链接,并允许用户选择合乎需要的上下文,以显示相关联的链接。例如,在Yahoo!网络***中,可显示一组上下文,其中每个上下文都有一组从搜索索引到页面的链接、与受赞助的匹配相关联的链接、与目录匹配相关联的链接、以及与Inside Yahoo!(IY)匹配相关联的链接。
除了诸如“Java”等具有歧义的单词和短语之外,本发明的一些实施例还被配置成将结果分组到未必有歧义的搜索项的上下文中。一个示例是为搜索项“Hawaii”返回的结果。项“Hawaii”本质和本身可能并无歧义;但是为该项返回的结果的特征可能非常宽泛,涉及每个讨论或仅仅是提及Hawaii的网站。为向用户提供更加有用的结果,本发明的***优选地通过利用结果实际涉及什么的知识,将搜索结果组织到上下文中。例如,对于Hawaii,该***可返回诸如“Hawaii:旅游”、“Hawaii:气候”、“Hawaii:地理”、“Hawaii:文化”等各种上下文分组的结果。此类上下文标识符(“旅游”、“气候”等可被存储在如上所述的页面索引条目162中。
可以认识到,本文中所描述的搜索***是示例性的,并且各种变更方案和修改都是可能的。内容服务器和搜索服务器***可以是单个组织的一部分,例如,诸如由Yahoo!公司向用户提供的分布式服务器***等,或者它们可以是不同组织的一部分。每个服务器***一般包括至少一个服务器及相关联的数据库***,并可包括多个服务器和相关联的数据库***,并且尽管它被图示为单个框,但是也可被地理地分布。例如,搜索服务器***的所有服务器可位于相互靠近的地方(例如,在位于单个建筑或校园中的服务器场),或者它们可被分布在相互远离的位置(例如,位于A城的一个或多个服务器、以及位于B城的一个或多个服务器)。由此,如本文中所使用的,“服务器***”通常包括分布在本地或跨一个或多个地理位置的一个或多个被逻辑地和/或物理地连接的服务器;术语“服务器”和“服务器***”被可互换地使用。
能以一个或多个页面索引、以及用于响应从客户机***接收的搜索查询来访问这(些)页面索引并向用户提供搜索结果的算法来配置该搜索服务器***。该搜索服务器***可自己生成页面索引,从其它源(例如,单独的服务器***)接收页面索引,或从其它源接收页面索引并对其执行进一步的处理(例如,添加或更新上下文标识符)。
C.概念网络和超单元
在一个实施例中,搜索服务器***160上的算法执行搜索项的概念分析,以向用户提供更为相关的结果。例如,对于搜索项“New York City”,与纽约州中的任何其它城市相对而言,可能性最高的是用户关注的是与纽约市(城市或地区)相关的网站。类似地,对于“New York City law enforcement”,可能性最高的是用户关注的是与纽约市的执法(例如,工作部门)相关的网站。但是,大多数常规搜索引擎将仅仅使用个体项“New”、“York”、“City”、“law”和“enforcement”来搜索,而无论这些项在搜索短语中出现的次序如何。其它常规搜索引擎可能试图寻找搜索短语中也在索引中出现的最长的子串。例如,如果索引包含“New York”、“New York City”和“New York City law”,但不包含“New York City lawenforcement”,则搜索引擎将使用“New York City law”和“enforcement”来搜索,这未必是用户所预期的,并且产生最优结果的可能性不高。
较有利的是,搜索服务器***160被配置成在诸如“New York City lawenforcement”等查询中检测概念“New York City”和“law enforcement”,并返回对应于这两个概念的结果。在一些实施例中,搜索服务器160使用各搜索项在查询中出现的次序来标识其组成概念。例如,使用“New York City law enforcement”作为搜索短语,则该***通过例如散列来将“New York City”和“law enforcement”标识为搜索短语中的两个概念,并返回对应于这些概念的结果。对于“lawenforcement inNew York City”将返回相同的结果。但是,对于“city law enforcementin New York”,将基于概念“law enforcement”和“New York”和“city”,或是基于“city law enforcement”和“New York”来返回不同的结果。类似地,“enforcement of law in New York City”将被标识为包括概念“New York City”、“law”和“enforcement”。由此,概念的次序不是像组成概念的项的次序那么重要。在一些实施例中,概念被包括在页面索引(例如,作为项和/或上下文标识符),或可实现单独的概念索引。应当注意,“law enforcement”应当被视为和“enforcement of law”是相同的或并不依赖于上下文。在一些实施例中,较有利的是,查询内的概念是通过参考包含已知概念(或“单元”)的列表的单元词典172来检测的。
较有利的是,单元词典172是由概念发现过程基于若干先前的查询(较佳的是大量先前的查询,例如,至少几十万个)而生成的。其示例将在以下描述的概念发现涉及分析查询以生成概念网络,并可由搜索服务器160或由其它服务器(未示出)来执行。
如本文中所使用的,术语“概念网络”包括概念之中的关系的任何表示。例如,图3是少数概念的概念网络300的图形表示。每个概念或单元(例如,“New”、“York”、“New York City”等)是该网络的一个“节点”(例如,节点302),并且由表示概念之间的各种关系的“边”(例如,边304)连接到其它节点。概念网络可捕捉各种关系。在图3中所示的实施例中,关系包括扩展(“ext”)、关联(“assoc”)和替换(“alt”);除了本文中所描述的那些关系之外,或作为它们的代替,还可捕捉其它关系。
如本文中所使用的“扩展”是两个单元之间、当通过串接这两个单元所获得的串也是一个单元时存在的一种关系。例如,通过串接单元“new york”和“city”所获得的串是“new york city”,它也是一个单元。扩展关系在图3中被示为“T”形连结,“T”中的横线连接通过扩展而相关的两个单元(例如,“new york”和“city”),而竖线连接扩展单元(例如,“new york city”)。
如本文中所使用的“关联”是在一同出现在查询中的两个单元之间所存在的一种关系。例如,图3示出单元“hotels(酒店)”是单元“new york”和“new yorkcity”的关联。成对的相关联单元在本文中也被称为“邻居”,并且单元的“邻域”是其邻居的集合。为建立单元之间的关联,可能需要最小频率的共现。应当注意,由关联相关的单元在查询中无需相互紧邻地出现,并且通过串接相关联的单元而获得的串无需是一个单元(如果是的话,则将存在扩展关系。由此,扩展关系可被视为是一种特殊的关联)。
第一单元的“替换”是同一表达式的不同形式(可以是优选的、修正的、或其它变体形式);例如,图3示出“motel(旅馆)”和“hotel”是替换。替换的一个示例包括“brittany spears”和“britney spears(布莱特妮·斯皮尔斯)”(不同的拼法),或“belgian(比利时的)”和“belgium(比利时)”(不同的词性)。在一组替换单元之中,可基于例如出现频率将一个替换单元指定为“优选的”;例如,“britney spears”(该流行歌手的名字的正确拼法)与诸如“brittany spears”等误拼的替换相比,可能是优选的替换。本文中所描述的实施例是大小写不敏感的,并且仅仅是大写有所不同的项(例如,“Belgium”和“belgium”)是指同一个单元;其它实施例可基于大小写来区别单元,并可将仅仅是大写有所不同的单元标识为替换。
在一些实施例中,可对概念网络的边分配权重(图3中未示出),即,标识不同关系的相对强度的数值。例如,第一单元和相关联单元之间的边权重可以是基于所有包含第一单元的查询中也包含该相关联单元的查询所占分数,或是基于所有包含任一单元的查询中也包含另一个的查询所占分数。较有利的是,权重反映相对强度;由此,能以任何合乎需要的方式来将权重归一化。应当理解,图3是示例性的,并且还可使用不同单元或概念之间的其它关系、以及连接或关系的其它表示;如本文中所使用的术语“概念网络”包括各种替换表示。
在本发明的实施例中,概念网络中所表示的关系还包括各个单元在“超单元”中的成员资格。如本文中所使用的术语“超单元”是指具有一个被标识的共同特征的一组单元。被标识的共同特征(可包括多个元素)由该超单元的“签名”表示,“签名”可被用来确定其它单元是否属于该超单元。在一些实施例中,还使用签名来基于每个成员单元的特征与一个或多个签名的特征之间的相似性程度而确定该成员单元的“成员资格权重”。可定义阈值成员资格权重,并且超单元可仅包括成员资格权重超过此阈值的单元。
例如,一个超单元可由城市组成(例如,“New York City”、“San Francisco(旧金山)”、“Chicago(芝加哥)”等),且其签名可包括在与城市名称相关联的查询中频繁出现的若干其它单元(例如,“hotel”、“museum(博物馆)”、“mayor(市长)”、“jobs(工作)”等等)。可通过将新单元的关联与签名相比较,来评估该新单元以确定它是否是一个城市(即,是该超单元的成员)。又如,另一个超单元可由互为替换的单元(例如,“britney spears”、“brittany spears”、“britney speers”等等)组成,且其签名可包括与该歌手的名字相关联的单元(例如,“photos(照片)”、“mp3”、“tour(巡演)”等等)、以及指示拼法中的相似性的“编辑距离”参数。具有相似关联、但有很大的编辑距离的单元(例如,“barbra streisand(芭芭拉·史翠珊)”和“celine dion(席琳·迪翁)”)将被排除,而Britney Spears的其它误拼将被包括。用于从查询生成超单元和签名的特定技术将在以下描述。和单元的其它关系相似,超单元签名和各个单元的超单元成员资格信息(例如,成员资格权重)可被存储在单元词典172中。
在一些实施例中,可对超单元的签名的不同元素分配不同的权重。较有利的是,这些权重被选择为反映不同签名元素在表征该超单元时的相对有效性。
较有利的是,搜索服务器160通过例如确定查询中的单元属于哪些超单元,并将该查询的单元与这些超单元的签名相比较来确定用户最可能预期什么等,在响应于查询时使用超单元信息。搜索服务器160可使用此关于可能的用户意图的信息来例如组织搜索结果,提议相关搜索等。搜索服务器160的这些特征将在以下第III部分描述。
II.概念分析***
图4是根据本发明的一个实施例的用于执行概念发现或概念分析(包括超单元生成)的***400的框图。由查询处理引擎(也称为查询引擎)404接收一个或多个查询日志文件402(或实际查询),并生成单元词典406。查询引擎404可以是搜索服务器***160(图2)的组件,或者是与搜索服务器***160通信的其它***。在一个实施例中,查询引擎404包括概念网络(CN)构建器410、超单元种子模块412、以及超单元构建器414。CN构建器410分析查询日志文件402的内容,并生成概念网络408,概念网络408包括单元、单元之间的关系(例如,扩展、关联和替换);以及对应于关系的边权重。超单元种子模块412可选地通过对概念网络408的分析,来生成单元到超单元的初始分组(本文中称为“种子”)。超单元构建器414使用由超单元种子模块412提供的种子来处理概念网络408以生成若干超单元。这些单元及其关系,包括超单元在内,在单元词典406中被捕捉。
单元词典能以任何格式来实现,并可被存储在任何合适的存储介质上,包括磁盘或磁带、诸如光盘(CD)等光存储介质、等等。较有利的是,单元词典406的内容包括单元、以及关于每个单元的附加信息,诸如由CN构建器410生成的关系(例如,扩展、关联、替换)和统计数据(例如,边权重),和由超单元构建器414所确定的超单元成员资格(例如,成员资格权重)。单元词典406还可包括与超单元本身相关的信息,诸如与超单元相关联的签名的参数等。存储在单元词典406中的信息可被搜索服务器(例如,图2的搜索服务器160)用来响应后续查询。
查询日志文件402(或实际查询)可通过因特网或通过例如LAN、WAN等各种网络连接、直接链路、分发介质(CD、DVD、软盘)等从各种源接收。源的示例包括搜索服务器***160(图2)、或搜索服务器的分布式网络中的多个搜索服务器160、以及一个或多个内容服务器150。查询日志文件源通常与同一组织或实体,例如Yahoo!服务器等相关联,但并非必需如此。查询日志文件(也称为查询日志)由查询引擎404使用诸如可在互信息等信息理论或概念中使用的统计方法等来处理。在一些实施例中,使用每日查询日志,尽管按照需要也可使用例如小时、星期等不同时间段的日志。查询日志通常包括由用户提交的实际查询(例如,文本串),还可包括部分或所有查询的附加信息(本文中称为“元信息”),诸如查询用户的地理位置、时间戳、客户机***的IP地址、cookie、客户机类型(例如,浏览器类型)等等。例如,查询日志条目可被格式化为<query_string,meta-information>或<count,query_string>,其中“count”表示出现频率。(按照需要,频率可被归一化,也可不归一化。)
A.概念网络构建器
CN构建器410处理查询日志402以生成查询网络408。在优选实施例中,CN构建器410使用查询内的搜索项的次序来标识组成该查询的一个或多个单元。例如,单元可以是一个单词(例如,“java”),或者是频繁相互紧邻地出现的一组单词(例如,“new york city”)。单元对应于概念网络中的节点(概念)。
CN构建器410还分析单元以检测诸如扩展(可基于一个单词或单元有时后面跟着另一个单词或单元而有时不跟来检测)、关联(可基于成对单元的出现频率来检测)、以及替换(可基于“编辑距离”,即将一个单元变换为另一个单元所需的排字修改次数来检测)等关系。以上所引述的申请第10/713,576号中详细描述了用于标识单元以及单元之间的关系(包括关联、扩展和替换)的特定技术。可以认识到,除本文中所描述的那些技术之外,或作为它们的代替,CN构建器410还可实现其它技术以生成概念网络408。
概念网络408的表示可被存储在单元词典406中。在一些实施例中,此表示将单元与每个单元的关系和权重的集合包括在一起。可使用各种数据压缩技术在单元词典406中表示此信息。
B.超单元种子模块
超单元种子模块412生成一个或多个种子,从这(些)种子可构造超单元。如本文中所使用的,“种子”可以是单个单元,或可以是具有一个或多个共同特性的单元的列表。超单元种子模块412可使用各种技术来生成种子。现在将描述此类技术的四个示例:(1)对概念网络408的分析;(2)对外部源的参考;(3)对用户行为的分析;以及(4)对搜索语料库中的文档的分析。还应理解,可将单个单元作为种子使用,并且超单元种子模块412可仅仅从概念网络408选择若干单元来作为种子使用(例如,基于出现频率、邻域大小、或其它某种准则)。
1.基于概念网络的种子(群集和集团)
在一个实施例中,超单元种子模块412使用概念网络408来执行对查询进一步的分析,以创建能够作为种子使用的群集(即,相关单元的分组)。在此实施例中,是通过标识具有相似邻域(即,相关联单元的集合)的不同单元(群集的“成员”)来生成群集的。可将群集作为用来生成超单元的种子使用;如可看出的,群集本身也可以是超单元。
例如,考虑用户搜索关于他们最喜欢的音乐表演者的信息的情形。通常,这些用户将构建包括表演者的名字(例如,“Avril Lavigne(艾薇儿·拉维尼)”或“Celine Dion”或“Matchbox Twenty(火柴盒20乐队)”)、并还包括诸如“lyrics(歌词)”、“mp3”、“guitar tabs(吉他谱)”、“discography(唱片目录)”等反映所查找的信息的类型的一些其它单词的查询;这些其它单词是往往随不同表演者的名字出现的邻居单元。基于相似邻居单元的出现,超单元种子模块412将表演者的名字分组到群集中。
更特别地,图5是可由超单元种子模块412执行以从概念网络408生成群集的过程500的流程图。在步骤502,将概念网络408提供给超单元种子模块412。
在步骤503,选择用于构成群集的基础单元。在一些实施例中,概念网络中的每个单元都可作为基础单元来使用。在其它实施例中,可将基础单元局限于例如以至少某个最小频率出现的单元。应当理解,通过使用不同的基础单元来重复过程500,就可生成任意个数的群集。
在步骤504,选择概念网络408中的另一个单元作为要和基础单元一起包括在群集中的候选单元。可使用迭代过程来选择所有成对单元,或可将选择限制于满足某些准则的单元。例如,在一个实施例中,概念网络408包括特定单元与各个邻居单元的关联。在此实施例中,步骤504包括将基础单元的邻域与第二单元相比较来确定重叠的程度;如果重叠程度太小,则第二单元不成为候选单元。在此实施例中,通过以基础单元B开始,寻找邻居单元A,然后寻找也是A的邻居的第三单元C来简化对所要考虑的单元的选择。将单元B和C的邻域相比较就可确定是否要选择单元C作为要与单元B一起包括在群集中的候选单元。此过程将可能的候选单元的集合缩减到与基础单元至少有一个共有邻居的那些单元。
在步骤506,标识出与基础单元和候选单元一起出现的邻居单元的实例。例如,如果“Avril Lavigne”和“matchbox twenty”是基础单元和候选单元,则共有的邻居单元包括“lyrics”、“discography”等。与基础和候选单元一起出现的邻居单元在本文中被成为“匹配”单元。
在步骤508,基于包括匹配单元在内的邻居单元来计算候选单元的群集权重。此群集权重是对候选单元和基础单元之间的相似性的度量;它能以各种方式来计算。现在将描述五种适用于计算群集权重的算法;本领域普通技术人员将会认识到,还可使用其它算法。
示例1:一种算法将匹配单元的个数作为相似性的度量来纳入考虑。单元u1和u2的群集权重定义如下:
W(u1,u2)=NC/NT, (1)
其中NC是匹配单元的个数,而NT是单元u1的邻居单元总数和单元u2的邻居单元总数中较大的那个。
可有各种变更方案。例如,NT可以被定义为这两个总数中较小的那个(而不是较大的那个),或被定义为这两个总数的平均。
示例2:第二种算法将每个匹配单元的频率(以及由此对于一个单元,其一个邻居单元的重要性有多高)纳入考虑。单元u1和u2的群集权重定义如下:
W(u1,u2)=FM/FT, (2)
其中FM是所有匹配单元si上,单元si与单元u1一起出现的频率和单元si与单元u2一起出现的频率的和;而FT是所有邻居单元上相同频率的和,无论匹配与否。
示例3:相对频率是重要性的一种替换度量,其中在匹配单元与单元u1和单元u2一起出现的相对频率不同的情形中将附加惩罚(权重降低)。在此例中,R1i和R2i被定义为邻居单元si分别与单元u1和u2的相对频率。群集权重由下式给出:
其中和是在匹配单元si上取的,并且P是对相对频率之差加权的惩罚因子。P的值是可改变的;在一个实施例中,P=2。
示例4:按频率(分级)的降序来比较邻居单元是度量重要性的另一种方式。类似于示例3,对匹配单元的分级的任何差值附加惩罚。对每个匹配单元si分配两个分级Q1i和Q2i,以分别表示其与单元u1和单元u2的分级。群集权重由下式给出:
其中M是单元u1的邻居单元的总数和单元u2的邻居单元总数中较小的那个,并且和是在匹配单元si上取的。
示例5:与上述诸算法不同,此算法将邻居单元的区别能力纳入考虑。任何单元u的“关联性”可通过将该单元与查询中的一个或多个其它单元(可以是任何单元)一起出现的频率(fu)与该单元在查询中单独出现的频率(fq)相比较来定义。在一种度量中,关联性由ρ(u)=fu/fq给出。
可将这一关联性的度量与上述相对频率的概念相结合来计算群集权重。基于每个匹配单元si的相对频率给予其“得分”σ;特别地,σ(si)=1-(R1i-R2i),其中R1i和R2i如以上示例3中所定义。群集权重由下式给出:
常数C的值可基于经验分析来优化;在一个实施例中,C=0.5。
回到图5,在步骤510,决定是否要将该候选单元与基础单元一起包括在群集中。例如,如果单元的群集权重太低,则可将其从群集排除。
在一些实施例中,群集可在成对单元的情况下停止。在其它实施例中,通过选择不同的候选单元并重复步骤506、508和510来构成较大的群集。在另外的实施例中,可使用两个或多个单元的群集来代替基本单元,以生成较大的群集。在使用群集来作为基础单元的场合,能以各种方式来定义其邻域,例如,定义为成员单元的邻域的并集或交集,定义为是成员单元中至少占某个最小分数(例如,25%、50%、80%)的单元的邻居的单元的集合等等。群集无论其大小如何,都可作为超单元种子来使用。
在一些实施例中,群集还可被进一步细分为成员单元之间具有较强或较密切的关系的“集团”。在一个实施例中,“集团”是其中每个成员单元都在从其它每个成员单元构成的群集中出现的单元集合。集团可用于各种目的,例如,区别拼法错误与替换单词形式,或是区别围绕其构成群集的基础单元的不同词义。例如,基础单元是“New York”的群集可包括是其它城市的名称的单元(例如,“Boston(波士顿)”、“Seattle(西雅图)”等),还可包括是同一城市的替换名称的单元(例如,“NY”、“NYC”)。从这些单元中,可构成一个包括不同城市(“NewYork”、“Boston”、“Seattle”)的集团、以及包括“New York City”的替换名称(“New York”、“NYC”、“NY”)的另一个不同的集团。
又如,基础单元为“Yahoo”的群集可包括其它电子邮件供应商的名称(例如,“AOL”、“Hotmail”)、以及其它搜索引擎的名称(例如,“Google”)。基础单元为“Google”的群集可包括“Yahoo”,但不包括“AOL”或“Hotmail”。因此,“Yahoo”和“Google”可为一个集团的成员,而“Yahoo”、“AOL”和“Hotmail”可为另一个集团的成员。
图6是根据本发明的一个实施例的可被用来从一组群集构成具有成员单元qk的集团Q的过程600的流程图。在这些示例中,已经构成了N个群集,每一个都具有不同的基础单元bi(1≤i≤N)。本文中这些群集被表示为C(bi),并且作为群集C(bi)成员的单元u具有由W(u,bi)表示的群集权重,该权重可使用例如以上所给出的任何公式来计算。(对于不在群集C(bi)中的单元u,可对权重W(u,bi)分配0值。)应当理解,给定单元可以是任意个数的群集C(bi)的成员,并且在一些实例中,群集C(bi)可仅由基础单元bi组成。在过程600中,通过以基础单元bi作为集团Q(bi)的第一个成员开始,并寻找C(bi)中符合以下要求的其它单元uj来构成具有成员qk的集团Q(bi):(1)集团Q的所有成员qk都是群集C(uj)的元素;并且(2)对于集团Q的每个成员qk,单元uj是群集C(qk)的元素。
更特别地,在步骤602以一个成员bi来创建集团Q。在步骤604,获得群集C(bi)的下一个成员单元uj。在步骤606,获得群集C(uj)。在步骤608,确定集团Q的所有成员是否也都是群集C(uj)的成员。如果不是,则不将单元uj添加到集团Q中,并且过程600跳转至步骤616。否则,在步骤610,对于集团Q的每个成员qk,获得群集C(qk)。在步骤612,确定单元uj是否在步骤610所获得的每个群集C(qk)中。可在集团Q的成员qk上迭代执行步骤610和612,或者可并行测试多个成员qk的群集。如果单元uj不是在步骤610所获得的每个群集C(qk)中,则不将uj添加到集团Q中,并且过程600跳转至步骤616。如果单元uj在每个群集C(qk)中,则在步骤614将单元uj添加到集团Q中。
在步骤616,无论单元uj是否被添加到集团Q中,都要确定群集C(bi)中是否还有一个或多个单元uj。如果有,则过程600回到步骤604以处理下一个成员单元uj。
在处理了所有单元uj之后,在步骤618,确定集团Q的每个成员qk的成员资格得分。在一个实施例中,是通过累加单元qk在基于集团Q的其它每个成员单元的群集中的群集权重来计算该得分的,即,
其中W(qk,qi)表示作为群集C(qi)的成员的单元qk的群集权重。也可使用其它公式来分配集团成员资格得分。在一些实施例中,可按降序得分或升序得分的次序来排列集团成员。
应当认识到,本文中所描述的这一过程是示例性的,并且可有各种变更方案和修改。被描述为顺序的步骤可被并行执行,可以改变步骤的次序,并可修改或合并步骤。例如,可放松将一单元添加到集团中的条件为例如要求(在步骤608)占集团Q的成员qk中至少某个分数f1的成员是群集C(uj)的成员,或是要求(在步骤612)uj是占群集C(qk)的至少某个分数f2的群集的元素。所占分数f1和/或f2可按需选择,并且可以是例如50%、70%、90%等等;在各个实施例中,这两个所占分数可以相等或不相等。可用不同的基础单元bi来重复过程600以生成任何数量的集团。在生成集团的场合,可使用集团代替群集来作为超单元种子,或可使用集团和群集的组合来作为超单元种子。
2.基于外部源的种子
在另一个实施例中,超单元种子模块412通过参考一个或多个外部源(图4中被统示为框416)来生成种子。外部源的示例包括由编辑者或编辑团队创建的相关项的列表(例如,该团队所知的流行歌手的列表或汽车制造商的列表);权威网站(例如,维护词典或其它疾病列表的医学参考网站);等等。在此实施例中,超单元种子模块412可对外部源数据执行少量处理或不执行任何处理。例如,如果编辑团队提供了单词列表,则超单元种子模块412可仅仅将该列表转发给超单元构建器414。超单元种子模块412还可修剪列表以移除不是概念网络408中的单元的任何条目。应当注意,这一超单元种子无需是穷尽的列表,并可包括少量(例如,两个、五个或十个)单元。
3.基于用户行为的种子
在第三实施例中,超单元种子模块412通过分析用户行为来生成种子。例如,搜索服务器(例如,图2的服务器160)可通过向客户机120提供搜索结果页面来响应查询。搜索结果页面包括“点击项(hit)”(包括与该查询相关的内容的网页或网站的链接)的列表。点击项的列表可包括例如页面标题、显示相关内容的摘录、和/或其它信息。用户查看列表并通过例如点击所显示的链接来选择点击项。(此行动被称为“点进(click-through)”,尽管应当理解,链接和点击并不是必需的。)查询日志402可提供部分或所有查询的点进数据,该数据指示用户从搜索结果页面出发进入哪条(些)链接。超单元种子模块142可接收此数据,并标识输入了不同查询的用户点进同一个页面的情形的实例。这一用户行为暗示这些查询之间的共性,并且种子模块412可将具有相似(或相同)点进行为的查询(或其经挑选的单元)分组成种子。较有利的是,种子模块412被配置成仅在检测到暗示页面相关性的行为模式时(例如,当点进某特定页面以某个最小频率发生时)才对查询(或单元)进行分组。
4.基于文档分析的种子
在第四实施例中,种子模块412通过分析搜索语料库中的一个或多个“源”文档(例如,在web搜索实施例的情形中是网页)来生成种子。在此实施例中,种子模块412基于单元在同一文档中的出现来推断它们之间的共性。例如,种子模块412可通过例如将文本串与单元词典406中的条目或是概念网络408中的单元(节点)相匹配等,将文档经语法分析变为组成单元。在一个实施例中,文档中所找到的所有单元被聚集成单个种子列表。在另一个实施例中,通过例如要求最小出现频率,通过仅在单元相互靠近地出现情况下才将成对(或更大的组)单元包括在内等等来过滤单元。所得的单元列表可作为超单元种子来使用。可使用任意数量的源文档来执行文档分析,并且可使用各种准则自动或手动选择文档来进行分析。
应当理解,种子模块412的上述实施例是示例性而不是限制性的。可使用一种或多种上述或其它技术,或可通过技术的组合来生成种子。在另外的实施例中,可使用每个单元(或单元的某个子集中的每个单元,例如,最频繁的子集)来作为单独的种子。
C.超单元构建器
无论种子是如何生成的,种子模块412都将种子提供给超单元构建器414,后者使用这些种子、以及由CN构建器410生成的概念网络408来构造超单元。在一些实施例中,超单元是通过一种迭代的过程来构造的,该过程如下:标识签名(即,种子中的单元往往共有的一个或多个关系),搜索概念网络中匹配该签名的其它单元,将那些单元添加到超单元中,并修正签名以反映超单元的当前内容。
更特别地,图7是根据本发明的一个实施例的可在超单元构建器414中实现的用于生成超单元的过程700的流程图。在步骤702,超单元构建器414从种子模块412接收种子。该种子被视为初始超单元。
在步骤704,确定(初始)超单元的签名。较有利的是,基于与该超单元的一个或多个成员单元相关的单元集合来定义签名,其中没有任何一个签名单元是该超单元的成员。例如,超单元构建器414可在概念网络408中定位该超单元的成员单元,并比较每个成员单元的邻居单元,以确定哪些邻居单元是成员单元所共有的(并且它们本身不是成员单元)。在一个实施例中,较有利的是,基于以下两个准则来选择签名单元:(1)该超单元的成员是该签名单元的邻居的可能性;以及(2)该签名单元的邻居是该超单元的成员的可能性。这些准则标识往往为该超单元的成员和非成员之间的有效区别因素的签名单元。
作为第一准则的示例,可要求签名单元与至少5%(或者10%或50%)的成员单元有特定关系;或者要求签名单元与占成员单元某个分数的单元的关系具有最小边权重;或者要求签名单元与成员单元之间的边权重之和超过某个阈值。在一些实施例中,将签名单元与权重界限相关联,这些权重界限可反映该超单元的成员单元与每个签名单元之间的关系的平均边权重(或边权重的分布)。
作为第二准则的示例,可要求占签名单元的邻居单元最小分数的单元是该超单元的成员;或者要求签名单元与成员单元之间的关系的边权重相对于签名单元与非成员单元之间的关系的边权重满足特定关系。签名定义的其它示例将在以下描述。
在步骤706,候选单元-即,不在超单元或签名中的单元-被评估以确定它们是否与签名匹配。当候选单元与签名单元的关系满足预先制定的准则时,该候选单元即匹配签名单元。例如,可向候选单元给予成员资格得分,以反映其关系与签名匹配的程度。该得分能以各种方式来计算,并可强加最小得分来作为“匹配”准则。在一个实施例中,成员资格得分是基于签名单元中与候选单元相关的单元所占分数,其最小得分是50%(或者40%或90%等)。在其它实施例中,在签名单元与权重界限相关联的场合,可基于签名单元中候选单元的关系的边权重在权重界限内的单元所占分数来评估候选单元。在另外的实施例中,可将超单元作为另一个候选单元、并将签名单元作为超单元的邻居单元来使用,将任何上述算法或用于在群集过程(图5)期间确定两个单元的相似性的其它合适的算法改编为用于确定候选单元的成员资格得分。
可通过例如仅考虑与一个或多个签名单元直接相关的单元,来简化对要评估的候选单元的选择。如上文所提及,可将已经是超单元或签名的成员的单元从候选列表中排除。
在步骤708,匹配签名的任何候选单元(例如其成员资格得分超过某个阈值)被添加到超单元中。在步骤710,为更新后的超单元生成新的签名。较有利的是,步骤710使用和步骤704相同的签名生成技术,以使新签名与先前的签名之间的任何差别都是由于超单元中改变了的成员而产生的。
在步骤712,通过移除不匹配新签名的任何成员单元来修剪超单元。较有利的是,步骤712使用和步骤706相同的匹配准则。在一些实施例中,种子单元在步骤712和任何其它成员单元一样被测试和修剪;在其它实施例中,不对种子单元进行修剪。在另外的实施例中,省略步骤712,从而超单元成员数会增长但不会缩减。
在步骤714,确定超单元是否已收敛;如果没有,则该过程回到步骤706以重复基于签名更新超单元、然后更新签名的步骤。收敛在超单元或其签名(或两者)的成员数在一次迭代期间没有改变的时候发生。一些实施例可使用放松的收敛条件,以允许在超单元或签名中出现足够小的改变时发现收敛。
在步骤716,一旦超单元收敛,该新的超单元即被添加到单元词典406中。例如,超单元可被表示为成员单元的矢量和成员资格权重的矢量(其中每个成员的成员资格权重是从最终签名确定的该成员的最终成员资格得分)。或者,可使用单元词典406的所有单元的成员资格权重的矢量来表示超单元。在此情形中,可将不是该超单元的成员的单元的权重设置为0,或可基于最终签名来为非成员单元计算成员资格权重。较有利的是,超单元的最终签名也被存储在单元词典406中。
图8A-B示意概念网络800在根据过程700的超单元构造期间的一部分。图8A-B附图标记的规约一般与图3中的附图标记类似,唯一的例外是对于网络800,仅示出关联关系,因此关系边没有被标注。(应当理解,在其它情形中,也可考虑除关联以外的其它关系。)图8A示出概念网络800在步骤704之后的状态。节点(单元)“avril lavigne”802和“celine dion”804是超单元“X”(虚线框806)的种子的成员。节点“mp3”808、“lyrics”810、“pictures(图片)”812、“album(专辑)”814和“tour”816已被标识为(在步骤704期间)超单元X的签名“Y”(虚线框818)的成员。节点“barbra streisand”820、“movies(影片)”822和“arnold schwarzenegger(阿诺·施瓦辛格)”824既不是超单元X的成员,也不是签名Y的成员。
在此例中,超单元生成可通过将单元“barbra streisand”820和“arnoldschwarzenegger”824标识为候选单元(因为它们每一个都是签名Y的至少一个单元的邻居)来继续进行。然后将基于某个准则来评估每个候选单元与签名的匹配程度。例如,可要求成员单元至少与75%的签名单元相关联。“barbra streisand”节点820与签名Y的五个单元中的四个相关联,因此将在步骤708被添加到超单元X中。“arnold schwarzenegger”节点824仅与签名Y中的一个单元相关联,因而在步骤708将不会被添加到超单元X中。图8B示出概念网络800在步骤706和708之后的状态,其中“barbra streisand”节点820已被添加到超级单元X’(虚线框806’)中。
接下来,更新超单元X’的签名Y(步骤710)。例如,可将签名Y定义为仅包括与超单元X至少50%的成员相关联的单元。“barbra streisand”单元820与“movies”节点822相关联,但其它成员并不与该节点相关联,因此,不将“movies”添加到签名Y中。“pictures”单元812并不与“barbra streisand”成员单元820相关联,但与这三个单元中的其它两个相关联;因此,“pictures”继续留在签名中。
在此例中,签名Y在迭代期间没有改变,并且因为可能的候选单元的成员资格得分将不会改变,所以将发现收敛。应当理解,这一示例已被高度简化;概念网络可能比图8A-B中所示出的部分要大得多也复杂得多,并且超单元可能需要许多次迭代才能收敛。
现在将就与药物相关的超单元来描述根据过程700的超单元生成的另一个示例。在此例中,概念网络是从大量查询(例如,诸如Yahoo!等主要因特网搜索供应商所接收的相当于一周的查询)生成的。使用特定药物的品牌(例如,“Vicodin(唯寇锭)”作为基础单元,从概念网络构成集团。根据上述过程600构成的该集团包括少量(在此情形为九个)其它单元,这些单元是特定药物(例如,“Oxycontin(奥施康定)”、“Propecia(保法止)”等)的名称。
使用此集团作为生成超单元集合X的超单元种子(步骤702)。向该超单元种子的每个成员单元xi赋予被初始化为常数值的成员资格权重W(xi)(例如,对于所有xi,W(xi)=1),在其它实施例中,可使用群集权重(使用例如上述任何群集算法)或集团成员资格得分(例如,从以上公式(6))作为初始成员资格权重。
然后为超单元种子创建签名(步骤704)。图9中将对“drug(药物)”超单元使用的这种签名生成过程的示例示为过程900。在步骤902,构成初始签名集P,其中集合P是超单元集合X的每个成员单元xi的邻居的集合V(xi)的并集。在一些实施例中,集合V(xi)可包括少于成员单元xi的所有邻居;例如,可要求最小边权重或特定类型的关系,或可遴选该集合以剔除重复的单元(例如,“map of spain(西班牙的地图)”或“spain map(西班牙地图)”中只有一个可被保留)。
在步骤904,为初始签名集合P中的每个单元pj计算第一得分。较有利的是,单元pj的第一得分反映超单元集合X的成员xi会是单元pj的邻居的可能性。在“drug”超单元示例中,单元pj的第一得分是基于是单元pj的邻居的单元xi的成员资格权重W(xi)的“相关比例”(RP)得分。例如,如果定义L(xi,pj)为,若单元xi是单元pj的邻居则等于1,否则等于0,则RP得分可计算如下:
其中N[X]表示超单元集合X中成员单元的总数。
在步骤906,为初始签名集合P中的每个单元pj计算第二得分。较有利的是,单元pj的第二得分反映可能的签名单元pj的邻居单元(即,邻居集合V(pj)的成员)也是超单元集合X的成员的可能性。在“drug”超单元示例中,第二得分是由下式给出的相关频率比(RFR):
RFR(pj)=100*ρ[V(pj),X]/ρ[V(pj)], (8)
其中ρ[V(pj),X]表示邻居集合V(pj)的成员与集合X的成员单元之间的关系的频率(或边权重)之和,而ρ[V(pj)]表示邻居集合V(pj)的所有成员合计的频率。
在步骤908,通过组合第一和第二得分来为初始集合P中的每个单元pj计算最终得分Sf(pj)。在“drug”超单元的示例中,使用以上分别在公式(7)和(8)中定义的RP和RFR得分,最终得分由下式给出:
Sf(pj)=RP(pj)*log RFR(pj)。 (9)在其它实施例中,最终得分Sf(pj)可以是RP和RFR得分的不同组合。
在步骤910,对最终得分Sf(pj)应用阈值,具有阈值以上的得分的单元pj成为超单元X的签名集合Y的签名单元yj。在“drug”超单元示例中,是通过将任何单元pj的Sf(pj)的最大值除以常数值来确定阈值的;在此情形中,使用的常数值为6,但也可选择其它值。对于签名集合Y中所包括的每个单元yj,最终得分Sf(pj)作为成员资格权重W(yj)被保存。
在生成签名之后,测试候选单元ck是否为要向超单元集合X添加的单元(过程700的步骤708),由此创建经修改的超单元X’。这些候选单元ck是从这样的单元中选择的,它们是至少一个签名单元yj的邻居(其中.yj是集合Y的成员),并且它们并非已经是集合X或集合Y的成员。对于每个候选单元ck,部分地基于该候选单元ck的邻居单元V(ck)以及签名集合Y中的签名单元yj来计算成员资格得分。为超单元的成员计算成员资格得分一般和以上就签名所描述的过程900类似,并且得分本身也是相类似地定义的。
更特别地,一个得分是和以上公式(7)相类似地定义的相关比例得分。即,如果定义L(yj,ck)为,若单元yj是单元ck的邻居则等于1,否则等于0,则候选单元ck的RP得分被定义为:
RP(ck)=(1/N[Y])∑L(yj,ck)*W(yj), (10)
其中N[Y]是签名集合Y中的单元yi的总数,而W(yj)是单元yi的成员资格得分(如以上所提及的公式(9)的结果。第二得分是和以上公式(8)相类似地定义的相关频率比得分。即,如果V(ck)表示候选单元ck的所有邻居单元的集合,ρ[V(ck),Y]表示邻居集合V(ck)的成员与签名集合Y中的签名单元之问的关系的频率或边权重之和,且ρ[V(ck)]表示邻居集合V(ck)的所有成员合计的频率,则:
RFR(ck)=100*ρ[V(ck),X]/ρ[V(ck)]。 (11)
通过组合RP和RFR得分来确定最终得分Sf(ck);即
Sf(ck)=RP(ck)*log RFR(ck), (12)
这与以上公式(9)相类似。对最终得分Sf(ck)应用阈值来确定是否应将候选ck添加到超单元集合X’中。通过将所有候选单元ck上的Sf(ck)的最大值除以常数值来确定此阈值;在此情形中,使用的常数值为6,但也可选择其它值。对于作为单元xi被添加的每个候选ck,其成员资格权重W(xi)被设置为等于其最终得分。此成员资格权重在过程700的签名更新步骤710的下一次迭代中使用。
在处理了所有候选之后,超单元生成过程继续前进至步骤710,在此基于更新后的超单元集合X’的成员资格来将签名集合Y更新为新的集合Y’。这是通过使用超单元集合X’的当前成员资格来重新执行过程900来实现的。然后,在步骤712,评估超单元集合X’的成员单元以确定它们是否应被剔除;此过程使用和步骤708相同的得分计算和成员资格准则。
在步骤714,通过将集合X’和Y’分别与集合X和Y相比较来确定收敛或不收敛。每对集合之间没有改变或足够小的改变导致收敛。
图10示出“drug”超单元的结果。如上文所提及,种子是基于单个品牌名称(VICODIN)的集团;签名权重由以上公式(7)、(8)和(9)来确定;而超单元成员资格权重由以上公式(10)、(11)和(12)来确定。图10A示出八次迭代之后的各个签名单元及其相应的成员资格权重,而图10B示出也是八次迭代之后的一些超单元成员及其相应的权重。这些结果是从大量实际的用户查询生成的,并且完整的超单元包括超过一百个成员,图中示出了其中的一些代表性的成员。
对于此例而言,签名集合包含图10A中所列出的六个单元。应当注意,这些是可预期人们在搜索关于药物的信息时将会包括,而在进行与药物不相关的搜索时将不会包括的单元。超单元成员包括各种药物的大量品牌名称,图10B中示出了其中一些超单元成员。(除了“Vicodin”,即围绕其构成了超单元种子的基础单元之外,这些品牌名称在图10B中被列出为<brand A>(A牌)等,因为特定品牌及其排序与本发明无关。)它还包括药物的普通名称(例如,“ibuprofen(布洛芬)”、“drug(药物)”、“caffeine(咖啡因)”、非法药物(例如,“heroin(***)”)、食品添加剂(例如,“aspartame(阿斯巴甜)”、以及若干不同的维生素(未列出))、以及其它药物相关的项(例如,“chemotherapy(化学疗法)”)。
应当理解,此示例是示意性的,并可以有各种变更方案和修改,并且如果例如使用不同的概念网络来作为输入,则超单元成员、签名单元、和/或得分一般会和此示例中所提及的那些不同。此外,就签名和超单元成员资格得分所描述的公式都是示意性的,并可按需改变。
例如,在一些实施例中,无需参考超单元成员的成员资格权重W(xi)即可计算可能的签名单元的得分。在一个此类实施例中,在N[X∩V(pj)]表示超单元集合X的成员中也是单元pj的邻居集合V(pj)的成员的个数,且N[X]表示超单元集合X的成员总数,则反映超单元集合X的成员是单元pj的邻居的可能性的单元pj第一得分S1可计算如下:
S1(pj)=N[X∩V(pj)]/N[X]。 (13)类似地,反映单元pj的邻居单元是超单元集合X的成员的可能性的单元pj第二得分可计算如下:
S2(pj)=ρ[V(pj),X]/ρ[(pj)], (14)
其中ρ[V(pj),X]和ρ[(pj)]定义如上。又如,单元pj的第二得分可计算如下:
S2′(pj)=N[V(pj)∩X]/N[V(pj), (15)
其中V(pj)表示单元pj的邻居单元的集合,N[V(pj)∩X]表示单元pj的邻居集合V(pj)中也是X的成员的单元的个数,而N[V(pj)]表示邻居集合V(pj)中的邻居单元的总数。
为应用阈值以确定是否要包括到签名集合Y中的目的,可按确定最终得分所需的任何方式来组合第一和第二得分。或者,可对每个得分个别地应用单独的截止值;例如,如果对于某些阈值t1、t2,有S1(pj)>t1且S2(pj)>t2,则单元pj是签名集合Y的成员单元yj。如果在两个得分上使用单独的截止值,则可将两个得分都作为成员资格权重来保存。
应当认识到,可相类似地来计算为是否要包括到超单元X中而考虑的候选单元ck的类似得分。例如,如果N[V(ck)∩Y]表示候选ck的邻居单元中是集合Y中的签名单元的个数,N[V(ck)]表示候选单元ck的邻居单元的总数,而N[Y]表示签名单元Y的总数,则可定义两个成员资格得分S1和S2如下:
S1(ck)=N[V(ck)∩Y]/N[V(ck)] (16)
以及
S2(ck)=N[V(ck)∩Y]/N[Y], (17)
这与以上公式(13)和(15)相类似。也可对其中任一得分,或对这两个得分使用频率形式的定义。可基于其中任一单独的得分或两个得分、或其组合来确定是否要添加候选单元ck。
如上文所提及,并非必需为超单元或签名考虑候选单元的所有邻居。可基于例如特定关系(例如,仅限于扩展)、最小边权重、或其它准则来限制候选单元。在一个实施例中,所使用的邻居单元是候选单元的“提议”,其中提议是使用在以上引述的第10/713,576号申请中详细描述的技术来标识的。
可以理解,本文中所描述的超单元构造过程是示意性的,并且可有各种变更方案和修改。被描述为顺序的步骤可被并行执行,可以改变步骤的次序,并可修改或合并步骤。可从任意个数的种子开始,并行地(或顺序地)构造多个超单元。此外,通过对超单元和/或签名中的成员资格使用不同的准则,可从同一个概念网络(并且可选地,从相同的种子)构造不同的超单元集合,由此生成具有不同内容的超单元。此外,尽管上述示例是指关联关系,但是也可考虑超单元成员与签名单元之间其它类型的关系。并且,以上示例仅考虑了是成员单元直接邻居的签名单元;其它实施例可基于间接关系、两个以上单元在查询中的共现等等来选择签名单元。
在一些方面,该超单元构造过程是上述群集生成过程500(图5)的扩展。如本文中所使用的,“群集”是指基于其邻域(即,相关联的单元)的相似性而被相关的一组单元;在该意义下,可将群集视为一种类型的超单元,其中签名是基于共同邻域来定义的。可以理解,还可创建其它类型的超单元来捕捉其它类型的关系,包括超单元的成员之中的直接关系。例如,单元“britney spears”和“brittany spears”(常见的误拼)很可能具有共同的邻域,并且很可能要和诸如“barbra streisand”和“celine dion”等明显是指其它歌手的单元一起被包括在群集类型的超单元中。为捕捉正确的拼法“britney spears”与各种不正确的拼法之间的特殊关系,可创建替换拼法的超单元。此类超单元的签名可包括与若干其它成员(或与单个“优选”成员)的“替换”关系的存在、以及(或作为其代替)共同邻域。
再次参考图4,较有利的是,查询引擎404被配置成在重复的基础上(例如,每周、每日、每小时、在接收到查询的实时等)执行其查询处理操作。在一些实施例中,基于在一组新的查询日志文件中所接收的查询来更新现有的单元词典;在其它实施例中,可从来自这组新的查询日志文件的从头生成新的单元词典。在任一情形中都可认识到,概念网络和超单元能够响应于变化的用户行为而自然地进化。例如,如果一位新的歌手开始流行,则他或她将很可能成为图8中的超单元X的一部分,因为用户很可能会结合超单元X的签名单元来对开该是新歌手的名字的搜索。
在优选的实施例中,超单元往往反映概念的真实世界的关系(例如,属于诸如歌手或城市等类别的单元),即使是在无需向查询处理引擎404提供关于单元或查询的真实世界的知识或语义信息的情况下。例如,一个超单元可包括“New YorkCity”、“San Francisco”和“Chicago”,而该超单元的签名可包括“hotel”、“restaurant(饭店)”和“night club(***)”。这样一个超单元将反映出New York City、San Francisco和Chicago全部都是旅游目的地(或城市),但并不要求查询引擎404(图4)拥有“目的地”(或“城市”)这一概念的任何预先的知识。此概念知识可从分析查询模式中自动生长。应当理解,在本说明书用向人类传达语义意义的术语来标注超单元的场合,这是为便于理解本发明公开内容的便利之计。在实践中,查询引擎404或单元词典406所使用的任何超单元标注方案都无需具有这一属性;例如,超单元标注可以仅仅是数值、对权重矢量的引用、或者超单元的签名等等。
在一些实施例中,还可通过向部分或所有超单元分配语义上有意义的标注来进一步增强超单元。例如,可提供在分配标注时使用的将标注(例如“artist(艺术家)”与一个或多个关键词(例如,“lyrics”、“mp3”等)相关联的分类关键词数据库。可将超单元的签名单元与这些关键词相比较,以决定是否要应用该标注。人类索引编辑者可通过例如构建关键词数据库和/或验证对超单元的标注分配等,来参与此过程。
一个单元可属于多个超单元;例如,诸如“java”等有歧义的单元可最终属于“计算机编程”超单元、“食品和饮料”超单元、以及“旅游”或“地方”超单元。在一些实施例中,还可以有不属于任何超单元的单元。可预先制定所要创建的超单元的个数(或作为特定个数,或作为个数的范围),可以是例如100、500、1500或5000。在其它实施例中,并不预先确定超单元的个数。
应当理解,本文中所描述的***和过程是示意性的,并且可有各种变更方案和修改。被描述为顺序的步骤可被并行执行,可以合并步骤,并可修改步骤的次序。例如,能以各种方式来限制被视为超单元中成员的候选的单元的集合(例如,通过将成员限制于相对频繁地出现的单元),并且还可限制签名单元的集合。在一个实施例中,签名单元可包括或被限制于与超单元中的至少一个成员相关联的“提议”。在此上下文中,提议是已被标识为键入特定查询(或单元)的用户也许会关注的可能的事物的单元,并且它们是基于对单元和频率信息的分析。用于生成提议的技术在以上所引述的美国专利申请第10/713,576号中详细描述。
III.超单元在查询响应中的应用
能以各种方式来使用超单元信息以改善对查询的响应。图11示出图2的***110可用来响应查询的一种方法。客户机120向搜索服务器***160发送查询。搜索服务器***160将该查询和/或其组成单元发送到概念服务器180,概念服务器180访问单元词典406。概念服务器180返回与该查询相关的概念数据,诸如从该查询标识出来的一个或多个单元、以及这些不同的单元的统计和超单元信息。可通过例如对查询进行散列来标识其中所包含的单元,并访问单元词典406以检索对应于每个被标识的单元的条目来得到此信息。在此实施例中,单元词典406包括在查询处理期间变为可用的关于这些单元的任何信息,并可包括概念网络完整的或部分的表示。在一个实施例中,所返回的信息包括关于与查询或其各个单元相关联的一个或多个超单元的信息。
较有利的是,搜索服务器***160使用响应于查询而从概念服务器180接收的概念数据。较有利的是,由搜索服务器***160返回的结果包括响应于用户的查询的结果、以及包括超单元在内的其它相关的信息,诸如基于对在单元及其关系中捕捉到的用户需求的理解而提出的关于该用户接下来可能想要浏览的内容的线索和提示等。现在将描述可使用超单元信息来响应查询的数种方法示例;应当理解,这些示例是示意性的而不是限制性的。
A.解决歧义
在一些实施例中,搜索服务器***160可使用多单元查询的组成单元来解决其中一个组成单元中的歧义。例如,假定查询包括诸如“Java”等可能在一种以上上下文中会使用的歧义项。这一个项可能属于多个超单元,例如“食品和饮料”超单元、“计算机”超单元、以及“位置”超单元。在将该查询经语法分析变成单元,并检测到单元“java”中的歧义之后,搜索服务器160可将查询的其它组成单元与每个此类超单元的签名相比较。由此,如果该查询还包括诸如“商店”或“咖啡”等项,则搜索服务器***160可推断用户最有可能关注的是“食品和饮料”超单元,而诸如“程序”或“脚本”等项将指示“计算机”超单元,诸如此类。结果(例如,响应于查询的页面的链接)能以对应于不同超单元的分组的形式被呈现,其中可能性最高的超单元出现在第一位。在另一个实施例中,来自不同超单元(或上下文)的结果可被排列在结果页面的不同“选项卡”上,这允许用户通过点击所需的选项卡来选择上下文。可默认显示可能性最高的上下文。
还可使用超单元来以其它方式解决歧义,例如,通过检查用户在同一个会话中所作的其它查询等。例如,单元“jaguar(美洲豹)”可能是指动物或汽车。如果用户在“jaguar”之前的查询与汽车相关,但与动物无关(例如,“kelly blue book”或“porsche(保时捷)”),则可推断与动物相比,该用户可能更关注汽车。可通过检查同一用户所输入的不同查询中的单元的超单元成员资格,来将该推断自动化;与并非两个单元都是其成员的超单元相比,两个单元都是其成员的单元可被标识为可能性更高。可考虑该用户先前任意数量的查询,例如,对最近期的查询给予较大的权重。
搜索服务器***160可使用各种技术来确定如何将结果分组。例如,可将用于生成页面索引(例如,图2的页面索引170)的搜索相关的算法配置成使用来自单元词典406的现有的超单元来将索引中的每个网页或网站(或其它内容单元)指派到其中一个或多个超单元中;可将超单元指派与和特定项或单元的出现有关的其它数据一起存储在索引中(例如,作为上下文标识符172)。
B.提议相关搜索
在一些实施例中,搜索服务器***160可基于超单元信息来提议相关搜索。例如,假定查询包括“New York City”,并且已知此单元属于“目的地”超单元。搜索服务器***160可使用与该超单元相关联的签名来提议其它的搜索,诸如结合“New York City”对“restaurant”或“hotel”的搜索等。此类提议可基于例如超单元的签名单元。
C.提议“横向”搜索
在一些实施例中,搜索服务器***160还可使用超单元信息来提议相似或相关网站的“横向”搜索。例如,假定用户关注的是在W日从A点到B点的飞行。该用户可直接访问航空公司网站,例如American Airline网站,并执行该网站内的搜索,或者该用户可请求对“airlines(航空公司)”、或“air travel(空中旅行)”或“American airlines”等等,从所显示的搜索结果中的链接访问某个特定网站(例如,American Airlines网站),并请求所访问的网站内关于在W日从A点到B点的一个或多个航班的信息。该用户现在查看来自American Airlines的网站的关于所请求的信息的信息,可能包括与各个有效航班相关的定价信息等。“横向”搜索使用户能够使用相同的信息(例如,A点和B点及W日)来搜索另一个网站以获得相似的结果,而无须手动地访问新的网站并重新输入所需的信息。
在本发明的一个实施例中,搜索服务器***160可通过使用超单元信息来标识相关网站,来提示用户对所提议的“相关”网站执行横向搜索。例如,单元“American airlines”可属于“航空公司”或“交通运输”超单元;搜索服务器***160可标识该超单元中的其它单元(例如,“United Airlines”),并提议在与该单元相关联的网站上运行该搜索。如果用户选择横向搜索,则该***与被标识的网站相接,以提供所需的搜索结果,例如,在被标识的网站处列出W日从A点到B点的航班的定价信息的网页等。在用户已经直接访问了网站,并在与所访问的网站相关联的表单中输入了搜索信息的情形中,搜索模块126存储此输入的信息,并在请求横向搜索时,在需要填写相关网站中的表单的场合使用该信息。当然,取决于所选择的网站的要求,用户可能需要在新的网站输入其它的信息。以此方式,就为用户提供了在不同的网站上将对相似信息的相似搜索流线化的能力。
D.解决拼写错误
在一些实施例中,可使用超单元和签名,在查询处理期间提供增强的拼写检查。例如,如果用户输入了包括“basset”的查询,常规的搜索服务器***可能会认为“bassett(矮脚长耳猎犬)”或“basket(篮子)”是可能的替换,并可能向用户提议其中任何一个,或提议这两个替换。可访问超单元数据的搜索服务器160能够利用概念网络来确定用户最有可能预期的是哪个替换拼法。
例如,假定先前的查询包括其签名与“bassett”的接近程度高于与“basket”的接近程度的“basset”(例如,因为和与“weaving(编织)”一同出现相比,“basset”与“hound(猎犬)”一同出现要频繁得多。)在此情形中,搜索服务器可提议“basset”为最佳替换形式。在另一个实现中,可将完整的查询分别与包含“basket”的一个超单元以及包含“bassett”的另一个超单元相关联的签名相比较,从而基于哪个签名更接近地匹配该查询来作出提议。由此,搜索服务器160可用搜索“bassett hound”的提议来响应查询“basset hound”,并用搜索“basket weaving”的提议来响应查询“basset weaving”。
E.支持基于目录的搜索
在其它实施例中,可使用超单元来构造分层结构的单元分类。在一个实施例中,执行多个阶段的超单元构造。在第一阶段,可使用相对严格的成员资格准则,由此创建标识分层结构中的较低等级的超单元。例如,在此阶段可构造“城市”超单元、“州”超单元、以及“国家”超单元。在稍后的阶段,可从超单元的初始集合开始(可选地,用严格程度较低的准则)来构造超单元,由此创建较高等级的超单元(例如,包括城市、州和国家的“地方”超单元)。或者,可使用迭代的超单元构造过程(例如,图7的过程700)中的不同阶段来标识分层结构的不同等级。
可使用基于超单元的分层结构的分类来提供与近期由Yahoo!及其它搜索服务供应商所提供的功能相类似的基于目录的搜索功能。常规的基于目录的搜索***完全依靠人类编辑团队来构造目录;从超单元构造目录使该过程自动化,并可导致能更迅速地适应于变化的用户兴趣和行为的目录。
F.其它应用
还能以其它方式使用超单元。例如,在一些实施例中,网站经营者或其它实体可“赞助”某个超单元,以使每当查询包括与受赞助的超单元相关联的单元时,由该赞助商所提供的广告(或仅仅是该赞助商的网站的链接)就被显著地显示。在其它实施例中,可将查询中的项与超单元名称相比较,并可提议对该超单元的其它成员的相关搜索。在另外的实施例中,如果查询项匹配超单元名称,则可基于上下文是否对应于该超单元,来将与其它查询项相关的页面分级。
IV.其它实施例
尽管已参考特定实施例对本发明进行描述,但是本领域技术人员将会认识到许多修改都是可能的。例如,超单元的个数和特征可以改变,并且一个单元可属于一个以上的超单元。取决于实现,可能要求、或可能不要求每个单元属于至少一个超单元。可动态地定义超单元和签名,并可不时(例如,每日或每周)执行概念发现和/或概念分析,以响应于变化的用户行为来更新单元、超单元、和/或签名数据。如上文所提及,可使用各种标识和关联单元的技术来创建超单元。尽管超单元往往会反映概念的真实世界的关系,但是并不要求所有超单元(或任何超单元)反映真实世界的关系到任何特定的程度。此外,超单元无需反映从诸如Yahoo!目录等真实世界的知识建立的目录结构或其它分类。本文中所描述的自动化的***和方法可用人类对所得的单元词典、超单元、签名、特定的索引页面或网站的超单元分配等中的全部或一部分的检查来增强或补充。
本文中所描述的实施例可能引用网站、链接、以及万维网(或其子集)起到搜索语料库作用的场合的实例所专有的其它术语。应当理解,本文中所描述的***和过程可被改编以便配合其它不同的搜索语料库(诸如电子数据库或文档存储库)一起使用,并且该结果可包括内容以及可找到内容的位置的链接或引用。
因此,尽管是参考特定实施例来描述本发明,但是可以认识到,本发明旨在覆盖落入所附权利要求书范围之内的所有修改和等效技术方案。