通过分析用户的自校正搜索行为识别搜索字符串的备选拼写的制作方法

文档序号:6569216阅读:179来源:国知局
专利名称:通过分析用户的自校正搜索行为识别搜索字符串的备选拼写的制作方法
技术领域
本发明涉及拼写校正算法,包括用于识别提交给搜索引擎的搜索 字符串的备选拼写的方法。
背景技术
许多万维网站点和在线服务提供搜索引擎系统("搜索引擎"), 用于帮助用户定位感兴趣的项目。例如,许多网站提供因特网搜索引 擎,用于定位网页和其他类型的因特网内容,此外在线服务(例如
LexisNexis和Westlaw)提供用于定位文章、法庭意见以及其他类型的 公开信息的搜索引擎。此外,在线零售商通常提供搜索引擎用于帮助 用户定位以电子目录表示的产品或者其他类型的项目。
为了使用基于文本的搜索引擎来执行搜索,用户提交包含搜索字 符串或由搜索字符串组成的搜索查询。该搜索字符串可以由单个搜索 词(例如,"Olympics")或多个搜索词(例如,"Olympic marathon") 组成。其他类型的元素(例如搜索领域标识符和逻辑操作符)也可以 包括在搜索字符串中。搜索引擎的查询服务器处理搜索请求,以识别 匹配该搜索字符串的所有项目。查询服务器程序所识别的项目集合(网 页、新闻文章和产品等)被称为"搜索结果集合",并作为定位项目的 列表呈现给用户。在基于Web的实现中,搜索结果集合典型地作为定 位项目的超文本列表呈现给用户。
当搜索引擎的用户由于误打字或忘记一个词而拼错了搜索字符 串中的那个词时,拼错的词通常无法匹配搜索所包含的数据库词中的 任意一个词,或者匹配到用户不想要的数据库词。因而,搜索引擎可 能返回无价值的(空的)搜索结果,或者包含很少的(如果有的话) 与用户目标相关的项目的搜索结果集合。为克服这个问题, 一些搜索引擎建议与用户输入的搜索字符串在拼写上类似的备选字符串。然而, 这些备选搜索字符串通常不代表用户的意愿,或相反,对用户没有帮 助。

发明内容
本发明提供一种计算机实现的过程,用于识别可能对用户有帮助
的搜索字符串的拼写变化,例如从STRING1到STRING2的变化。该 过程考虑用户所进行的自校正的拼写变化,通过对大量搜索引擎用户 的搜索历史进行程序分析来检测该拼写变化。作为结果,所识别的拼 写变化往往对校正或另外地修改用户所提交的搜索字符串非常有用。
在一个实施例中,通过分析单个用户提交的搜索字符串的序列, 来检测拼写变化事件。例如,如果用户提交了第一搜索字符串,并在 随后提交了第二搜索字符串,假如第一和第二搜索字符串在拼写上足 够地相似,则这一对提交可以被认为是拼写变化事件。也可以评估这 两次提交之间的时间长短和/或用户在这两次提交之间执行的动作(如 果存在的话),以确定这一对提交是否或在何种程度上应当被认为是预 期的拼写校正,从而被加以考虑。
通过该过程所检测的拼写变化事件是针对大量用户汇集起来的, 并在汇集的基础上对该拼写变化事件进行程序分析,以识别或预测可 能对用户有用的拼写变化。例如,该过程可以预测搜索STRING1的 用户很可能通过搜索在拼写上与STRING1相似的STRING2获益。例 如,这种预测考虑下面的一个或更多(1)搜索STRING1的用户其 后是否相对频繁地搜索STRING2; (2)从STRING1至U STRING2的 拼写变化是否明显地比从STRING2到STRING1的拼写变化更加频繁 发生。也可以另外或备选地考虑其他类型的用户动作,例如反映特定 搜索查询是否成功的动作。
被识别为潜在有用的拼写变化可以用于很多方面,以帮助用户定 位项目。例如,当用户提交搜索字符串来实施搜索时,可以向用户建 议在拼写上相似的一个或更多个备选字符串。备选地,所提交的搜索 字符串可以自动地用备选字符串替换,或者査询可以通过对原始字符串和备选字符串进行逻辑"或"来自动扩展。
本发明还可用于促进针对任何多种不同类型的项目的搜索,包括 但不限于网站、网页、其他类型的文档、新闻文章、杂志文章、呈
现在电子目录、拍卖和交易列表中的产品、公司内联网上的文档、人 物、图像、音乐文件、播客(podcast)、视频片段、博客和电视表演。 另外,本发明可以实现为支持基于文本的搜索的任何类型的交互系统, 包括但不限于网站系统、在线服务网络、交互电视系统和支持通过 发出单个字符声音的搜索的系统。
本发明的拼写变化分析方法还可用于通过文档拼写检查程序来 分析用户作出的拼写变化。此外,被识别为有用的拼写变化可用于帮 助用户校正文档中的拼写错误。
因此,本发明包括一种计算机实现的方法,该方法包括分析大量 用户中的每个用户的搜索字符串提交,以检测搜索字符串拼写变化事 件。每个搜索字符串拼写变化事件是这样的事件用户向搜索引擎提 交第一搜索字符串,并在随后向搜索引擎提交在拼写上与第一搜索字 符串相似但不相同的第二搜索字符串。对于包括在搜索字符串提交中 的大量搜索字符串中的每一个字符串,至少部分地通过分析检测到的 搜索字符串拼写变化事件,识别各个搜索字符串的一个或更多个备选 拼写。在一个实施例中,关于字符串B是否是字符串A的有用备选拼
写的评估包括评估从字符串A到字符串B的拼写变化是否明显地比从 字符串B到字符串A的拼写变化更加频繁地发生。
本发明还包括一种计算机系统,该计算机系统包括保存大量用户 的搜索历史的数据仓库。该搜索历史识别用户提交给搜索引擎以实施 搜索的搜索字符串。该计算机系统还包括一种用于检测搜索历史中的 搜索字符串拼写变化事件的拼写变化检测组件,每个搜索字符串拼写
变化事件是这样的事件用户提交了第一搜索字符串,并在随后向搜
索引擎提交在拼写上与第一搜索字符串相似但不相同的第二搜索字符 串。该系统还包括一种分析组件,该分析组件基于汇集对检测到的拼 写变化进行分析,并评估特定拼写变化是否对用户有用。
本发明还包括一种计算机实现的方法,该方法包括识别由至少一个用户分别提交给搜索引擎的第一搜索字符串和第二搜索字符串,并 且通过程序评估第二搜索字符串是否表示第一搜索字符串的有用备选 拼写。该评估至少考虑(1)第一搜索字符串和第二搜索字符串在拼写 上的相似度,以及(2)检测到的、由多个用户中的每个用户对第一搜 索字符串所作出的拼写变化。
本发明还包括一种处理搜索字符串提交的计算机实现的方法。该
方法包括接收实施搜索的用户提交给搜索引擎的第一搜索字符串;以 及选择表示第一搜索字符串的备选拼写的备选搜索字符串,考虑检测 到的、由先前提交第一搜索字符串的用户所作出的拼写变化,通过比 较用户的搜索字符串提交自动检测该拼写变化。该方法还包括响应于 对第一搜索字符串的接收,进行下列中的至少之一(a)向用户建议 该备选搜索字符串,(b)自动用备选搜索字符串代替第一搜索字符串。 本发明还包括一种计算机实现的方法,该方法包括汇集描述众多 计算机用户中的每个用户作出的拼写变化的拼写变化事件数据,以及 通过程序分析至少汇集的拼写变化事件数据,以便针对至少第一字符 串和第二字符串,评估第二字符串是否表示第一字符串的有用备选拼 写。作为评估的结果,如果第二字符串被识别为第一字符串的有用备 选拼写,则在计算机存储器中产生第一字符串到第二字符串的映射。 在一个实施例中,通过程序分析汇集的拼写变化事件数据的步骤包括
考虑从第一字符串到第二字符串的拼写变化是否明显地比从第二字符 串到第一字符串的拼写变化更为频繁地发生。


现在将参考下面概括的附图,描述本发明的这些及其他特征。提 供这些附图和相关描述来例证本发明的特定实施例和应用,但不限定 本发明的范围。
图1示出了根据本发明的一个实施例的搜索引擎系统的组件和过 程流程。
图2和3分别示出了图1的系统中的搜索页面和搜索结果的示例。 图4是根据本发明的一个实施例的图1中的拼写变化分析器的框图。
图5示出了在图4的拼写变化检测阶段执行的处理。
图6示出了在图4的拼写变化事件汇集阶段执行的处理。
图7示出了在图4的拼写变化过滤阶段执行的处理。
图8示出了图1的系统中的查询处理器如何处理搜索查询。
图9示出了图1-7中的系统如何实现为提供对项目的电子目录的
访问的网站系统的一部分的一个示例。
在所有附图中,将附图标记重复用于标识相同或者功能相近的组
件。每一个附图标记的第一个数字标识所引用的项目在其中第一次出
现的附图。
具体实施例方式
现在将参考附图,描述本发明的特定实施例 其多种特定实现的细节,以例证但非限制本发明 利要求限定。
I.概述
本发明的一方面包括一种计算机实现的过程,该过程用于检测和 分析大量搜索引擎用户的"自校正"行为,以提取用于帮助后续用户 校正或改变他们的搜索查询的信息。在一个实施例中,分析单个用户 的搜索字符串提交序列,以检测拼写变化事件。例如,假定用户实施 针对KIOTO PROTOCOL的搜索,并在之后不久(可能在提交了一个 或更多其他搜索查询之后)搜索KYOTO PROTOCOL。这种从一个搜 索字符串到另一个的"转变"可以被认为是拼写变化事件,因为这两 个搜索字符串在拼写上相似并且在很接近的时间内被提交。
通过该过程所检测的拼写变化事件是针对大量用户汇集起来的, 并在汇集的基础上对该拼写变化事件进行分析,以识别可能对后续用 户有用的拼写变化。这个过程可以包括对拼写变化事件数据一个或更 多统计规则的应用。作为一个示例,可以应用一种规则,该规则基于 所有试图校正特定搜索字符串的用户的行为,设法识别用户最频繁转
。陈述这些实施例及 。本发明的范围由权变的相似拼写的搜索字符串。该规则基于以下假设如果试图校正
STRING1的用户相对频繁地通过提交STRING2来校正STRING1,则 STRING2可能是STRING1的一个有用备选。
作为另一个示例,可以应用一种"几率差别"规则,该规则考虑 在两个相似拼写的搜索字符串(STRING1禾tl STRING2)之间转变的 用户是否趋向于按照特定方向(STRING1—STRING2或者STRING2 —STRING1)来转变。该规则基于以下假设正确拼写搜索字符串的 用户典型地将不会提交字符串的错误拼写版本,然而最初拼错搜索字 符串的用户将经常试图去校正错误拼写。例如,假定大量用户的历史 査询提交显示用户趋向于提交STRING1继而提交STRING2明显地比 他们提交STRING2继而提交STRING1更加频繁。基于这些历史数据, 几率差别规则可以将STRING2识别为STRING1的一个潜在的有用备 选,并且可以断定STRING1不是STRING2的一个有用备选。换句话 说,几率差别规则可以将STRING2识别为STRING1可能的"校正" 版本。
在一个实施例中,可以将多个统计规则应用于所检测的拼写变 化,其中每一个规则作为用于删除很可能没有用的拼写变化的过滤器。 例如,对于给定的从STRING1到STRING2的拼写变化,如果相对较 少的、对STRING1作出拼写变化的用户通过提交STRING2来对 STRING1进行拼写变化,则第一规则可以过滤出该拼写变化(即将 STRING2识别为STRING1的无用备选)。如果该拼写变化没有被第一 个规则过滤出来,假定从STRING1到STRING2的转变没有明显地比 从STRING2到STRING1更频繁地发生,则几率差别规则可以过滤出 该拼写变化。
可以另外地或者备选地使用各种其他的规则和标准来评价特定 拼写变化的效用。例如,分析可以考虑证明特定搜索查询提交是否成 功的特定后查询提交(post-query-submission)用户动作。例如,分析 可以考虑用户的搜索结果浏览动作是否显示了对一个搜索字符串比对 另一个相似拼写的搜索字符串的结果更为感兴趣。
通过该分析过程所识别的"校正的"搜索字符串(也称为"备选"字符串或拼写)可能在拼写上理论上是不正确的,因为他们来源于用 户的可能成功或者可能不成功的自校正的査询尝试。(因而,词"校正" 和它的派生物,如这里所用的,不是意味着完全"无误")。然而,对
于给定的字符串STRING1和识别的"校正"版本STRING2, STRING2 通常比STRING1更可能没有拼写错误。此外,不管STRING2是否拼 错,其在示出的实施例中可能是STRING1的有用备选。在这点上, 包括拼错词的搜索字符串可能在某些情况下有用,例如,如果拼错的 词在搜索的数据仓库中足够频繁地出现,以提供有用的搜索结果。
在下面的描述中,从字符串A到字符串B的拼写变化或者"转变" 表示为A — B或(A, B)。该转变不必是紧挨着的;例如,用户可以 在A和B的提交之间执行一个或更多中间动作(包括提交其他搜索字 符串)。当从A到B的拼写变化被选为潜在地对用户有用时,将搜索 字符串的有序对称为"映射"。
II.搜索引擎组件(图1)
在本小节和下列小节中的描述是典型地实施本发明的特定途径。 对于本领域的技术人员而言,实施本发明的其他途径是显而易见的。
图1示出了根据本发明的一个实施例的搜索引擎系统100("搜索 引擎")的组件和一般过程流程。搜索引擎100由用户计算设备IIO(例 如PC、个人数字助理、无线电话和机顶盒等)通过诸如因特网120 的计算机网络访问。典型地,该搜索系统100实现为网站系统的一部 分,尽管本发明不局限于此。搜索引擎100包括服务器系统130,服 务器系统130提供对用户可以实施搜索的一个或者更多类型的项目 (网页、文章和产品等)的、与之相关联的项目内容的仓库132的访 问。
服务器系统130从用户计算设备110接收请求。这些请求包括用 户提交用于查找呈现在项目内容仓库132中的期望项目的搜索査询。 该搜索査询由査询处理器135处理,查询处理器135访问一个或更多 个搜索索引140,以识别响应的项目。在一些实施例中,可以为不同 的项目收集或目录提供不同的索引。例如,可以提供一个搜索索引来搜索万维网,而可以提供一个或更多个其他搜索索引来搜索与搜索引 擎系统相关联的电子目录。
如图1所示,服务器系统130保存反映单个用户提交的搜索查询 序列的搜索历史。这些搜索历史可以保存在任意合适类型的数据仓库 150中,例如按年代排列的日志文件或者关系数据库,它们保留关于 单个用户所提交的特定搜索查询的顺序的信息。在一个实施例中,针 对每个搜索查询提交所记录的事件数据包括提交的搜索字符串(其可 以包括任意数目的搜索词)、用户浏览会话的会话ID、以及(如果可 行的话)搜索的项目收集或目录。也可以包括其他数据元素,例如时 间/日期标记和用户标识符。在一些实施例中,搜索事件数据也可以同
描述其他类型的用户动作(例如,搜索结果的点击事件、其他URL
选择事件、项目相关事务等)的事件数据存储在一起。
在例证的实施例中的拼写校正特征是通过拼写变化分析器160以 及通过存储该拼写变化分析器生成的字符串校正映射的映射表180实 现的。拼写变化分析器160负责(1)分析存储在搜索历史仓库150 中的事件数据,以识别用户所作出的拼写变化,以及(2)总体地分析 作出这些拼写变化的用户的动作,以评价拼写变化是否可能对实施后 续搜索的用户有用。将被识别为有用的拼写变化存储在映射表180中, 映射表180接着被査询处理器135用于帮助用户校正或修改他们的搜 索查询。
在一个实施例中,拼写变化分析器160通过比较在同一浏览会话 (并且因此由同一用户)期间提交的搜索字符串的特定对的拼写来检 测拼写变化。该拼写可以使用编辑距离算法和/或用于比较字符串拼写 的任意其他算法来比较。在本"基于会话"的实施例中,在同一浏览 会话期间的一个用户的两个相似拼写的搜索字符串A和B的提交可以 被认为是拼写变化事件,即使用户可能提交了一个或者更多中间搜索 字符串。在其他实施例中,只要没有提交中间搜索字符串,或者只要 提交了发生在彼此之间选定的时段或者点击次数内,就可以将一个用 户的两个相似拼写的搜索字符串的提交认为是拼写变化事件。
在一个实施例中,为了评估从A到B的特定拼写变化的效用,拼写变化分析器160考虑试图校正A的用户如何频繁地通过提交B来校
正A。(如下面论述的,这可以通过计算对A作出拼写变化的用户通 过提交B去这么做的概率来完成。)如上面所提及的,拼写变化分析 器160也可以考虑用户从A到B的转变是否明显地比从B到A的转 变更加频繁。该分析可以限定在事件数据的特定时间段,例如,最后 N天或者N星期的数据;备选地,该分析可以考虑所有收集的事件数 据,但是具有应用于更近的事件的更大权重。
如图1中的标有"其他用户事件数据"的箭头所示,拼写变化分 析器160可以另外或者备选地考虑一个或者更多其他类型的用户动 作,以评估特定拼写变化的效用。例如,对于给定的A到B的拼写变 化,拼写变化分析器160可以考虑反映从A切换到B的用户是否比A 的结果更加满意B的结果的用户动作。例如,用户典型地花费比浏览 A的搜索结果更多的时间来浏览B的搜索结果的事实,可以作为B是 A的有用备选的证据。
在图1中示出的"其他用户事件数据"还可以包括关于用户在提 交A和B之间所执行的中间动作的数据。例如,这些中间动作可以显 示用户在提交B之前可能已经"继续前进"到新的搜索目标。这可以 是这样的情况,例如用户搜索A,接着购买或者下载该搜索所定位的 项目,然后接着搜索B。在用户的中间动作显示了提交A和B之间的 薄弱的关系时,特定用户从A到B的转变可以被忽略或者赋予更低的 权重。
拼写变化分析器160的一个特定实施例在图4-7中示出,并在下 面的第IV节中描述。
拼写变化分析器160的输出是采取A — B的形式的搜索字符串映 射的数据集合,这里B是A的一个校正版本(也称为A的"备选" 版本或者拼写)。例如, 一个这样的映射可以将关键搜索字符串"Aldus Huxley"映射到校正版本"Aldous Huxley"。给定的搜索字符串可以 被映射到多于一个的候选备选。例如,"AldusHuxley"还可以被映射 到第二个校正版本"Aldus Huxly"。尽管上述示例中的映射是采取"短 语到短语"的形式(即每一个搜索字符串包括多个词),也可以生成单个词的映射(例如Kioto到Kyoto)。此外,映射中所包括的搜索字符
串不必由字母字符或者空格组成,而是可以包括可以包含在搜索字符 串中的其他类型的字符,例如数字、符号和标点。
如图l所示,在例证的实施例中的拼写变化分析器160还可以以 概率值P的形式输出针对每个映射的分数。例如,"AldusHuxley"到 "Aldous Huxley"的映射可以具有0.8的概率值,"Aldus Huxley"到 "Aldus Huxly"可以具有O.l的概率值。每一个这样的概率值通常表 示相关联的校正从技术上是正确的或另外对用户有用的概率。在一个 实施例中,每一个概率值P更加明确地表示如果提交A的用户试图对 A作出校正,用户将通过提交B来校正A的可能性。
如图1所示,将拼写变化分析器160所生成的映射作为各个表条 目(示出了两个条目)存储在映射表180中,该映射包括相关联的概 率值。备选地,也可以以其他形式存储该映射。例如,概率值可以被 省略。作为另一示例,单个表条目可以将给定搜索字符串映射到其所 有备选拼写的分级列表中,而不是针对每一个字符串到字符串的映射 都有单独的表。作为又一示例,这两个字符串中之一可以连同需要产 生另一个的编辑一起存储,不是存储给定映射的两个搜索字符串A和 B。
典型地,映射表180中包括许多从几千到几百万的不同条目,每 个条目将特定的输入字符串A映射到特定的备选或校正的拼写B。每 个这样的映射典型地表示搜索引擎100的用户所作出的普遍错误拼 写,以及为了努力校正错误拼写的所作出的普遍拼写变化。包括在映 射中的搜索字符串不需要由字母字符串组成,而是可以包括数字或者 可能的其他类型的字符。典型地,包括在表180中的映射表示了在相 关时段内观察到的所有拼写变化的相对小的子集,特别是被识别为最 有用的那些。如下面描述的,映射表180可以随着事件重新生成或者 更新,使得呈现在映射表180中的拼写变化在任意给定时间相当接近 于用户的当前搜索模式和行为。
一些或者所有映射表条目(A —B, P)可以与特定的搜索索引或 项目集合联合存储。例如,如果搜索引擎的用户接口允许用户将他们的搜索限制为图书标题,则可能单独基于用户的图书搜索动作生成单 独的映射集合;这些特定收集的映射集合可以单独地用于帮助用户实 施图书搜索。为了实现这项特征,可以针对可单独搜索的每一个项目 收集生成单独的映射表180;备选地,每一个映射表条目都可以包括
识别与条目相对应的搜索索引的字段(field)。
在下面描述的特定实施例中,拼写变化分析器160作为离线过程, 该离线过程每天运行一次,并对最近N天有价值的收集事件数据起作 用,其中N典型地是3到100范围内的整数。本实施例中的映射表180 每次在该过程执行时重行生成。因而,该映射表强烈地反映了用户最 近的搜索行为。为了进一步提高用户的最近査询搜索行为的影响,可 以将线性或者非线性衰减算法应用于分析的事件数据,以便给较老的 搜索查询提交赋予比较新的搜索査询更小的权重。尽管在下面描述的 实施例中使用1天作为执行间隔,备选地,也可以使用其他执行间隔, 例如1小时、12小时、l星期或者l个月。此外,可以使用连续地或 者周期地更新选定的表条目的过程,而不是周期地生成映射表180。
在操作中,査询处理器135响应于搜索查询提交,访问映射表180, 以查找针对用户的搜索字符串的备选拼写。具体地,在接收到搜索查 询时,査询处理器135访问搜索索引140,以识别对应于该搜索查询 的项目,以及另外访问映射表180,以确定是否存在针对用户输入的 搜索字符串的备选字符串。如果该搜索查询指定了特定的项目索引, 则该表查找操作可以选择性地限制在对应于该索引的映射范围内。
如果査询处理器135在表180中没有找到任何备选字符串,则搜 索引擎IOO可以简单地给用户返回搜索结果(响应项目的列表)。如果 查询处理器135发现了一个或更多备选,其可以执行多个动作中的一 个来帮助用户实施搜索。例如,搜索引擎IOO可以向用户建议一个或 更多备选拼写。备选地,该搜索引擎可以自动地用从映射表180中检 索到的备选字符串来替代用户输入的搜索字符串。在图8中示出的并 在下面第V节描述的一个实施例中,査询处理器135基于是否找到任 何搜索结果,以及另外基于关联映射的概率值,在这两个动作之间进 行选择(建议相对于自动替换搜索字符串的备选)。在一些实施例中,査询处理器135可以另外地或者备选地使用映 射表180作为用于增大用户搜索査询范围的查询扩展工具。这可以通
过对初始搜索字符串和从表180中检索到的一个或者更多备选字符串
进行逻辑"或"来完成。
在图1中示出的查询处理器135和拼写变化分析器160可以在由 一个或者更多通用计算机所执行的软件模块内实现。映射表180可以 实现为B树或者其他适当的数据结构,并且例如可以被保存在服务器 的固态随机存储器或者磁盘驱动存储器中。图1所示的数据仓库132、 140和150可以实现为数据库、平面文件、和/或其他类型的基于计算 机的存储系统。
III.示例用户接口
图2和3示出了图l的系统可以提供的搜索用户接口的通用格式。 在本特定示例中,该搜索接口通过使用web浏览器所显示的网页来实 现。在其他实施例中,该搜索接口可以是运行在用户计算设备iio上 的非浏览器应用程序的一部分,或者可以实现为基于语音的接口,用 户可以通过该接口发出他们的搜索査询字符的声音。
图2描述了用户可以输入并提交搜索査询的搜索页面210。在本 示例中,用户可以通过输入搜索字符串到搜索字段220、然后选择按 钮230来执行搜索。此外,通过使用下拉列表,用户可以选择将搜索 限制在项目的特定收集或者目录中(例如,网站、新闻文章、图书和 图片等)。可以选择性地省略将搜索范围限定在特定项目收集或者目录 内的能力。尽管没有在图2中示出,该搜索接口还可以包括与特定项 目属性(例如主题、作者、标题和制造商等)相对应的单独搜索字段。
图3示出了与图2所示的搜索查询相对应的示例搜索结果页面。 在本示例中,搜索结果页面显示了用户提供的搜索字符串"Aldus Huxley"的匹配项目的搜索结果列表300,并且显示了备选字符串310, "Aldous Huxley"。备选拼写"AWous Huxley" 310显示为可以在新搜 索中由用户选择去提交备选字符串的超文本链接。尽管在本示例中向 用户建议了单个备选字符串310,然而在搜索结果页面上,可以给用户呈现两个或者更多备选字符串,其中的每一个可以被单独地选择。
在图3所述的实施例中,如果建议的拼写变化包括少于搜索词的 所有词,则将突出修改的词。因而,在图3的示例中,将建议的替换
310中的词"Aldous"突出,以指示其区别于用户输入的相应的词 "Aldus"。
在一个实施例中,为了产生映射表180,拼写变化分析器160将 不考虑通过点击所建议的备选字符串330 (而不是通过将字符串输入 到搜索字段220中)来提交的搜索査询。这是为了避免"自我实现预 言"的影响,其中建议的备选字符串是无效的,但是其不断地被建议 仅仅是因为用户频繁地从搜索结果页面中选择该备选字符串。备选地, 这样的査询提交可以被考虑,但是被赋予较少的权重。
IV.拼写变化分析器(图4-7)
图4是根据本发明的一个实施例的拼写变化分析器160的框图。 在本实施例中,拼写变化分析器实现包括三个不同阶段的过程拼写 变化事件检测阶段、拼写变化事件汇集阶段以及拼写变化过滤阶段。 每个阶段通过各自的软件组件425、 435和445来实现。
如图4所示,每次执行拼写变化检测器160来生成映射表180的 新版本时,拼写变化监测组件425最初检索并分析事件数据的最近集 合。该事件数据可以包括搜索査询提交数据,或者还可以包括关于其 他类型的用户动作(例如,对用于观看、下载和购买等的搜索结果条 目的选择)的事件数据。针对本实施例中的每个记录的事件,该事件 数据包括会话ID,使得与相同用户浏览会话相对应的事件可以被容易 地识别。如图4中的虚线所示,还可以选择性地在事件汇集阶段435 和/或过滤阶段445期间分析原始事件数据。
在一个实施例中,拼写变化分析器160每天运行,并对过去24 小时收集到的事件数据进行操作。在一个实施例中,在拼写变化事件 检测阶段425期间执行的处理如图5所示,并且在下面以单独标题进 行讨论。拼写变化事件检测组件425的输出是具有加权的拼写变化事 件(A—B, W)的数据集432,其中的许多事件可以对应于从A到B的相同拼写变化。如下面所讨论的,每个权重值W表示相应事件对于
后续分析的重要性。将针对最近时段新生成的数据集432添加到拼写 变化事件仓库430中。
一旦生成新的数据集432,拼写变化事件汇集组件435检索与最 后N个时段相对应的数据集合432,并且通过唯一拼写变化来汇集事 件。如下面所讨论的,在一个实施例中,该汇集任务包括随着相继过 去的时段而赋予数据集相继变小的权重。在拼写变化事件汇集阶段执 行的处理在图6中示出,并在下面论述。
在汇集阶段435完成之后,拼写变化过滤组件445过滤出无法满 足特定标准的那些拼写变化(在下面所述的过程流程中,在拼写变化 事件汇集阶段期间还过滤出某些拼写变化)。例如,在一个实施例中, 过滤出不满足"几率差别"阈值的拼写变化。在一个实施例中,在拼 写变化过滤阶段445期间执行的处理在图7中示出,并在下面进行描 述。
阶段l:拼写变化事件检测(图5)
图5示出了可用于实现图4的拼写变化事件检测阶段425的过程 流程。在状态505,选择历史日志文件或者片段进行分析。在一个实 施例中,每次执行检测过程425时,该过程分析包含最近时段(例如, 最近24小时)的查询提交数据和可能的其他类型数据的历史文件。然 而在某些实现中,可以分别分析覆盖相同时段的多个历史文件。例如, 呈现注册及未注册用户的历史文件可以彼此分别分析,使得可以给注 册用户的动作赋予更大的权重。因而,在图5中示出循环(用框505 和565表示),用于提供分析多个历史日志文件或片段的可能性。
下面是可以检索用于分析两个假定的浏览会话(逗号用于隔幵不 同的搜索查询提交)的搜索历史数据的示例集合。
会话ID 12345的搜索历史
Aldus Huxley , Alldus Huxley, Aldous Huxley , George Orwell 会话ID 56789的搜索历史Aldous Hucksley, Brave New World, Aldous Huxley
可选地,检索到的数据中也可以包括其他信息元素,例如搜索的 索引或收集的标识符、事件时间戳、和/或用户标识符。典型地,在拼 写变化事件检测过程425的特定迭代中检索和分析的搜索历史数据将 包括成千上万个单独用户的搜索历史。
在状态510中,检测过程425在选定历史文件或片段中任意选择 一个项目索引,使得包括特定索引的搜索可以彼此分开地被分析。在 状态515中,选择特定的会话标识符。
在状态520中,检测过程425运行在状态515中选定的用户会话 的上下文内,并识别来自于用户提交的搜索查询Q!、 Q2、 Q3、....、 Qw的所有有序的搜索字符串对(A, B),其中,字符串A具有至少四 个字符并且先于B被提交。(约束A2 4是为了消除字符串A具有三 个或更少字符的映射而强加的。)如果在状态510中选定了特定索弓l, 则忽略与该索引不对应的搜索查询。对于上面的采样搜索历史中的会 话ID 12345,有序搜索字符串对是("Aldus Huxley, " "Alldus Huxley"); ("Aldus Huxley, " "Aldous Huxley"); ("Aldus Huxley," "George Orwell"); ("Alldus Huxley, " "Aldous Huxley") ( "Alldus Huxley, " "George Orwell"); ("Aldous Huxley, " "George Orwell")。 对于会话ID 56789,有序搜索字符串对是("Aldous Hucksley," "Brave New World" ); ( "Aldous Hucksley, ""Aldous Huxley"); ("Brave New World, ""Aldous Huxley")。
如果根据某一相似度测量,每对字符串在拼写上足够相似,则在 状态520中识别的搜索字符串对可以表示拼写变化事件。在状态525 和530中,检测过程425为每对计算这样的相似度测量。在一个实施 例中,这通过计算每对搜索字符串(A, B)之间的编辑距离E (添加、 删除和调换的字母数目)来完成。Levenshtein方法或者任意其他编辑 距离算法可以用于这个目的。在其他实施例中,可以另外地或者备选 地使用其他搜索字符串相似度测量。例如,可以考虑字符串A和B的 发音(如可以使用诸如Smmdex之类的算法来确定)。尽管没有在上面的示例中示出,最初可以将呈现在分析的搜索历 史中的所有搜索字符串转换为小写(或者大写),因此忽略大小写上的 差别。该搜索字符串还可以以其他方式标准化,例如通过删除标点和 多余空格。
在状态535中,检测过程425将状态530中计算的编辑距离与阈 值T1进行比较。如果搜索字符串对(A, B)的编辑距离超过T1,则 将该字符串对从进一步考虑中删除(状态545)。如果该编辑距离低于 Tl,则该字符串对被识别为拼写变化事件。如果该编辑距离为零,则 也可以过滤出该字符串对。
在一个实施例中,阈值Tl是变化的,而不非固定的。这是有用 的,因为表示两个字符串相似度的编辑距离测量的有效性部分取决于 字符串的长度。例如,短字符串"Cats"与"Dogs"之间的编辑距离 是3,而这两个单词是明显不同的。然而,长字符串"AlldusHuxly" 与"Aldous Huxley"之间的编辑距离也是3,可以有理由将第二个考 虑为第一个的变体。因此,用作Tl的值可以与所包括的搜索字符串 长度成正比。例如,在一个实施例中,Tl具有最小值l,并且对于A 中的每7个字母递增1。因此,例如,如果A具有6个或者更少的字 符,则T1二1;如果A具有7到13个字符,则T1二2;以此类推。注 意,A不能具有3个或者更少的字符,因为在步骤520中强加了约束
在状态540中,为当前拼写变化事件(A, B)计算权重W。该 权重部分用于量化用户提交A和B之间的"距离"或"关系",并因 此反映(A, B)真正意义上是自校正事件的可能性。例如,如果用户 在提交A之后立刻提交B,则与用户仅仅是在同一天提交A和B的 情况相比,将前者视为B是A的自校正的更强指示。在一个实施例中, 权重从最大值开始,然后随着A和B的提交之间的每个中间事件而线 性地或指数地减小或者衰减。特定类型的事件,例如证明用户浏览上 下文中的变化的那些(例如,项目购买),可以比其他类型的事件在权 重上导致更大的降低。权重值可以基于(并反比于)A和B提交之间 逝去的时间量(同样可以使用搜索事件时间戳来确定),而非基于分析中间事件的数目和类型。
在状态540的权重计算可以另外考虑用户动作显示拼写变化成功 的程度。例如,如果在搜索B不久后用户选定搜索结果项目用于査看、
租用、下载或者购买等,则可以适当地增大与从A到B的转变相关联
的权重。
在状态550-565中,检测过程425对剩下的搜索字符串对、用户 标识符、项目索引(如果考虑了)和历史日志(如果处理多个日志或 者片段)循环状态520-540。检测过程425的结果输出是元组(A, B, W)的数据集432,其中A和B是拼写变化事件的搜索字符串的有序 对,W是计算得到的事件权重。还可以存储每个这种事件的编辑距离 E,用于以后使用。如图4所示,将加权的拼写变化事件的数据集432 存储在与其对应的时段(例如特定日期)相关联的事件仓库430中。
如将变得显而易见的,图5中示出的过程的许多变化是可能的。 作为一个示例,可以在不考虑用户的搜索查询提交的情况下分析用户 的搜索査询提交,而不是基于逐会话地分析每个用户的搜索査询提交。 例如,如果用户提交了第一搜索查询,并在第一搜索查询的阈值时段 或者阈值点击次数内提交了第二搜索查询(在不同浏览会话中),则在 框525-530中将从第一到第二查询的转变认为是潜在的拼写变化事 件,即使这两次提交发生在不同的会话中。
阶段2:拼写变化事件汇集(图6)
图6示出了图4的拼写变化事件汇集过程或阶段435的过程流程。 在完成图5中的过程时执行过程435。在状态605中,检索N个最近 时段的加权拼写变化事件的数据集423,其中N是选定的整数。N的 值指定了最近事件历史数据的量或"后看视野"用于生成映射表180。 例如,如果每个数据集432以1天为周期并且N二IO,则映射表180 将基于在过去10天里发生的用户动作。
在状态610中,与所有但为最近时段相关联的拼写变化事件的权 重是"随时间衰减的"。时间衰减指的是与其使用期成正比地减小拼写 变化事件权重的过程。例如,假定元组("Aldus Huxley","Aldous Huxley," 0.8)通过图4的检测过程425在一天前生成。此外,假定元组("Alldus Huxley," "Aldus Huxley," 0.4)在两天前生成。如果 使用每天0.5的衰减系数,则元组的权重将分别降低到0.4和0.1。尽 管在本示例中使用了线性衰减函数,也可以使用诸如指数函数之类的 非线性衰减函数。随时间衰减的事件权重的效果是赋予最近拼写变化 事件的权重比赋予较老的拼写变化事件的权重更大。
在较早的事件随着时间衰减之后,在组合的数据集中的元组根据 他们所表示的唯一拼写变化进行分组。为了这项任务,可以将那些只 是在大小写上有区别的搜索字符串看作为相同的搜索字符串。例如, 可以认为从"kioto"到"Kyoto"和从"Kioto"到"Kyoto"的拼写是 相同的。
对于从A到B的每一唯一拼写变化的上下文中(状态615),汇 集过程435接着在状态620计算概率值P。在一个实施例中,概率值 P通常表示搜索A的用户接着搜索B的概率。该概率值通常也是对下 列的好的指示(1)字符串B在理论上是否拼写正确,以及(2)字 符串B是否字符串A的有用备选。可以使用各种不同类型的概率公式 来计算P。
在一个实施例中,针对从A到B的每个唯一拼写变化的P的计算 考虑(1)针对该拼写变化检测到的拼写变化事件的数目,以及(2) 检测到的A到一些其他字符串的拼写变化事件的数目。对P的计算还 可以(但不是必须)考虑这些拼写变化的权重W。例如,可以如下计 算P,这里S、是从A到B的拼写变化事件的所有权重W的和,及S2 是A到任何字符串的拼写变化事件的所有权重W的和。
P'(A,B) = S, / S2
P(A, B) = P'(A, B) - a * sqrt(P' * (1 - P'(A, B)) /+ k )
上面第一个等式基于检测到的从A到B与从A到一些其他字符 串的拼写变化事件的比例来计算A到B的拼写变化的"观察概率"。 第二个等式基于观察概率计算真正的概率值P,并且考虑了检测到的 拼写变化事件A到B的总数(根据他们的权重进行修改)。第二个等式是一种用于基于针对(A, B)而存在的拼写变化事件数据的量来调 整观察概率的机制。特别地,如果针对该拼写变化事件的数据量较少, 则P趋向于较低;如果数据量较大,则P趋向于较高。针对给定拼写 变化的大量事件数据典型地表示大量单一用户在相关时段期间所作出 的拼写变化。然而,为了保证诸如自动代理之类的单个"用户"不会 不适当地影响结果,可以在计算P之前过滤出来自相同用户或者会话 的重复拼写变化事件。
在上面的第二个等式中,a表示标准偏差的大小,并典型地设为 1。常数k典型地设为2或3,并用于说明未检测到的拼写变化事件。
在状态625中,汇集过程435将计算得到的概率值P与置信阈值 T2 (例如0.01)进行比较。该步骤被设计用于过滤出那些具有低概率 值的拼写变化。如果P小于T2,则将其从拼写变化分析器160的进一 步考虑中删除。
如果P大于Tl,则汇集过程435为给定的A到B的拼写变化计 算另外一个被称为"提升"的值。该提升值反映用户大于或超过随机机 会地作出从A到B的校正的可能性。在一个实施例中,可以如下计算 针对拼写变化A到B的提升,这里P (B)表示用户简单地将B提交 给搜索引擎的概率
提升=P(A, B) / P(B)
在状态635中,将计算得到的提升与阈值T3进行比较。该比较 实质上意味着用户有至少T3倍的机会更可能在提交搜索字符串A之 后提交搜索字符串B。如果提升小于T3,则将该拼写变化从变化分析 器的进一步考虑中删除。T3典型地可以在10到20的范围内。
在状态645中,汇集过程435对数据集中的剩余的唯一拼写变化 循环回状态615。在例证的实施例中,汇集过程435的结果输出是元 组(A, B, P)的数据集,其中P是从A到B的拼写变化的概率值或 得分。
阶段3:拼写变化过滤(图7) 拼写变化分析器160的拼写变化过滤阶段445包括基于一个或更多规则过滤由汇集阶段435输出的唯一拼写变化。该阶段可以被整个
省略,并且来自汇集阶段435的数据可用于生成图1中的映射表180。 然而,在过滤阶段445所执行的处理有助于从考虑中删除检测到的拼 写变化,该拼写变化包括相似字符串、并具有高概率值、但不足以可 能对用户有帮助。
图7示出在过滤阶段445期间执行的处理。在状态705中,从加 权拼写变化的数据集中选择从A到B的唯一拼写变化。在状态710 和715中,对选定的拼写变化执行"几率差别"分析。该分析基于以 下假设只要用户从A到B的转变明显地比他们从B到A的转变更 为频繁地发生,从A到B的拼写变化就可能是精确的或者是有用的。
在一个实施例中,根据D-P(A,B)/P(B,A)来计算几率差别,其 中P表示在汇集过程435期间为拼写变化所计算的概率值。备选地, D可以使用一些其他度量来计算,例如与(A, B)和(B, A)相对 应的原始事件计数。如果在框715中D低于或等于阈值T4,则将A 到B的拼写变化从拼写变化分析器160的进一步考虑中删除。如果该 数据集不包括从B到A的拼写变化的数据,则可以满足阈值T4。
作为示例,假设阈值T4为5,并且假设("dvd player", "dvd players")禾Q ("dvd players", "dvd player")的拼写变化分别具有0.6 和0.4的概率值。假定这些概率值相对地接近,因为没有明显的原因 在一个方向上相对于另一个方向进行校正。在这种情况下,D可能等 于0.5 (小于5)。因而,"dvd player"到"dvd players"的拼写变化将 被过滤出来。相反地,考虑("Aldus Huxley", "Aldous Huxley")和 ("Aldous Huxley", "Aldus Huxley")的拼写变化分别具有0.9和0.1 的概率值。这里,假设("Aldous Huxley", "Aldus Huxley")的概率 值较低,因为不大可能有很多用户在提交正确拼写"Aldous Huxley" 之后提交错误拼写"Aldus Huxley"。在这种情况下,D可能等于9 (大 于5)。因而,("Aldus Huxley", "Aldous Huxley")可能不被过滤出 来。
阈值T4可以是静态的或者动态的。在一个实施例中,针对给定 拼写变化(A, B)的阈值T4可以随着A与B之间的编辑距离E而变化。例如,如果编辑距离E特别小(即字符串A和B非常相似),则
可以降低T4,以提供更大的余地来满足状态715中的比较。相反地, 如果E较大,则可以提高T4,以使得比较更难以满足。
在状态720和730中,重新评估每个拼写变化(A, B)的编辑距 离E,以考虑在状态710中计算的几率差别D。特别地,编辑距离E 可以与随着D变化的阈值T5相比。如果D相当小,例如比T4稍微 大一点,则可以给T5使用相对小的值,以要求A和B在拼写上非常 相似。相反地,如果D较大,则可以给T5使用较大的值,或者状态 720的比较可以完全地被省略。另外可以让阈值T5取决于特定拼写变 化的P值,使得当P相当大时可以容忍较大的编辑距离。如果当前拼 写变化(A, B)的编辑距离E不等于或者大于T5,则在状态730中 过滤出该拼写变化。
如状态725所示,如果B在停止列表上,则也过滤出拼写变化(A, B)。在一个实施例中,该停止列表包含不能用作备选搜索字符串的字 符串列表。这些字符串可以通过人工分析和/或通过自动处理来确定。 例如,该停止列表可以包括常用搜索字符串,基于自动分析,很少引 起对搜索项目的选择或者购买。尽管在图7中没有示出,然而,如果 B产生了通过执行针对B的搜索可以确定的空的查询结果,则也可以 过滤出拼写变化(A, B)。
在状态735中,该过滤过程针对所有剩下的拼写变化过滤循环回 状态705。来自过滤过程445的输出构成拼写变化分析器160的输出, 并包括元组(A, B, P)的数据集,其中P是与从A到B的拼写变化 相关联的概率值。该数据集可以被存储为B树或者其他查找结构,以 生成映射表180。尽管在例证的实施例中将概率值存储在映射表180 中,然而备选地也丢弃那些概率值。
V.搜索査询处理流程(图8)
图8示出了可以通过图1中的査询处理器135来实现的过程的一 个示例,以响应来自用户的搜索査询,并在可用时帮助用户校正或者 改变提交的搜索字符串的拼写。只要从用户/计算设备110接收到搜索査询,或者只要接收到特定格式的搜索查询(例如,缺少字段约束的 査询),就可以执行该过程。
在状态805中,执行搜索查询以识别所有匹配项目。此外,访问 映射表180,以确定是否存在针对接收到的搜索字符串的任意备选拼 写;在某些实施例中,这可以包括检査与正在搜索的特定搜索索引或
项目收集相对应的表条目(映射)。如状态810和830所示,如果在映 射表180中没有发现备选拼写,则将表示查询搜索结果的匹配项列表 (或者其中的一部分)返回给用户,并且该过程结束。
如果在映射表180中找到一个或更多备选,则在状态815中考虑 找到的项目数目。如果找到的项目数目大于0,则从映射表中选择具 有最高概率值P的备选。在状态820中,将"最高排名"的备选连同 匹配项列表一起返回给用户,并且建议为备选拼写(查看图3中示出 的示例搜索结果页面)。可以在搜索结果页面上建议两个或更多备选拼 写,而不是建议单个备选拼写。
如果找到的项目数目等于0,则将最高备选的概率P与阈值T6 进行比较(状态825)。如果P小于或等于T6,则给用户返回空的搜 索结果(状态845)。在这种场景下,可选地可以将用户提供的搜索字 符串的备选拼写的列表(如果有的话)呈现在空的搜索结果页面上。
如果与最高备选拼写相关联的概率P大于阈值T6,则用该最高备 选替代用户提供的搜索字符串,并且重新执行搜索査询(状态835)。 然后,将修改搜索的结果(匹配项目的列表)返回给用户,用以显示 (状态840)。在这种场景下,可以显示用于识别对用户搜索字符串所 作出的替换的消息。
应注意,通过图8的方法处理的搜索字符串可以包括单个拼错的 搜索词(例如,词"kioto")。在这点上,不同于在搜索查询内使用其 他词来预测拼错词的正确拼写的一些现有方法,这里所公开的方法能 够校正(或者建议校正)单个词的搜索查询。
根据上述将理解,图8的过程可以以各种方法改变,以实现帮助 搜索引擎的用户改进并校正他们的搜索査询的目标。例如,当在映射 表中找到备选拼写时,总是可以向用户建议该备选拼写,而不管原始搜索找到的项目数目或者概率值。作为另一示例,原始查询可以自动 地扩展为包括一个或更多个最高排名的备选拼写。
此外,图8中示出的过程可以与预先存在的拼写校正方法结合使
用。作为一个示例,图8中示出的过程可以与在美国专利No.6, 144, 958中描述的拼写校正过程一起实现(即这两个过程可以相互独立地 使用,以识别针对用户所提供的搜索字符串的备选)。在许多情况下, 这两个过程可以识别不同的备选字符串,在这种情况下,可以给用户 呈现每一个这样的备选字符串。
VI.示例网络实现(图9)
图9示出了图1中的系统如何实现为基于服务的网站系统900的 一部分的一个示例,该网站系统900提供对项目(例如可以通过系统 900排序的产品)的电子目录的访问。在图9中,将图l中的一些附 图标记重新用来显示组件之间的对应。在图9的示例实施例中,图1 中的服务器130是响应于来自计算设备100 (其中的每个都运行浏览 软件)的页面请求的Web服务器。在可以容纳上万个并行浏览会话的 大规模系统中,web服务器系统典型地使用多个复制的物理服务器(例 如一百个或更多个)来实现。在一个实施例中,当用户110访问网站 系统时,如果该用户没有在过去的24小时内访问该系统,则web服 务器130开始新的会话(分配新的会话ID)。
Web服务器130通过网络与各种服务进行通信,包括目录服务 904、查询服务910以及拼写校正服务920。 Web服务器130还可以与 多种其他服务914进行通信,例如管理用户账户数据、处理订单等的 服务。服务904、 910、 914和920的每一个服务都可以实现为执行关
联服务代码的一个或更多个物理服务器。
如在图9中示出的,web服务器130包括访问网页模板的仓库的 模板处理器902。为了动态生成特定网页,这些模板指定了执行的处 理,包括发出的服务请求。例如,当用户请求与特定产品或产品目录 相关联的网页时,该关联模板使得模板处理器902向目录服务904请 求相关联的目录内容。目录服务904可以从项目目录仓库132中检索这些内容,例如该内容可以包括呈现在电子目录中的特定产品的描述
和图片。存储在仓库132中的项目目录周期地或连续地被索引器906 索引,以生成用于执行交互搜索的搜索索引140。
当用户提交搜索查询时,模板处理器902通过各自的服务呼叫将 査询搜索传到查询服务910和拼写校正服务920。査询服务910通过 使用相关联的搜索索引来进行响应,以生成并返回所有匹配项目的列 表,在目录搜索的情况下该列表可以包括匹配的产品。该拼写校正服 务920通过使用映射表180来査找任意备选搜索字符串,并通过给模 板服务器902返回这些备选字符串及其概率值,来响应搜索査询。根 据图8中的框810-845,模板服务器902可以使用查询服务910和拼 写校正服务920返回的信息来生成搜索结果页面。
在一些实施例中,拼写校正服务920所返回的备选字符串可以取 决于正在实施的搜索的类型。例如,如果用户正在实施图书搜索(这 里图书表示呈现在目录中的多个产品目录之一),该备选字符串可以唯 一地或者主要地基于其他用户所实施的图书搜索。如上面所讨论的, 这可以通过在每个映射表条目中包括该条目所对应的搜索索引的标识 符,和/或通过为不同的搜索索引生成不同的映射表180来实现。
进一步参考图9, web服务器130向事件历史仓库150报告搜索 提交事件,并且可选地报告其他类型的事件(例如所有点击事件)。例 如,仓库150可以实现为本领域公知的web日志文件。备选地,事件 历史仓库150可以用例如在美国专利No. 2005/0033803 Al中所描述的 关系数据库系统来实现。事件历史仓库150还可以存储从其他源收集 的事件数据。例如,搜索/事件历史可以收集自实现搜索引擎的其他网 站系统,以使得映射表180反映基于多个搜索引擎系统和网站所监控 的搜索活动。
拼写变化分析器160对事件历史仓库150中所收集的历史数据进 行分析,以生成映射表180。图4-7中所描述的过程可以用作这个目 的。备选地,可以使用某个过程来分析事件历史,并对映射表180进 行更新,这在实质上如同发生相应的浏览会话一样地实时进行。
在一个实施例中,拼写校正服务920实现为可以被其他计算机系统通过因特网直接访问的web服务。因而,例如,其他搜索引擎系统 (例如那些其他的网站)可以发送向拼写校正服务920发送服务请求, 以获得特定搜索字符串的备选拼写。在这点上,由拼写校正服务920 所提供的备选拼写典型地对独立的网站或搜索引擎系统的其他用户有 帮助,而不管这些其他系统是否提供用于生成映射的任意其他事件数 据。
拼写变化分析器160可以类似地实现为web服务。例如,可以将 分析器160配置为接受标准格式的搜索历史数据(例如标准的日志文 件格式),并返回搜索字符串映射(A, B, P)的对应数据集。因而, 例如,其他搜索引擎提供者可以使用拼写变化分析器160来为他们各 自的搜索引擎生成特定的搜索引擎映射表180,并且可以使用这些映 射表来帮助他们的用户变化搜索查询。
VII. 文档的拼写检查
根据本发明所生成的字符串到字符串的映射还可以用于增强现有 的拼写检査程序,该拼写检查程序用于对文档进行拼写检查。这样的 文档拼写检查器一般包括在诸如Microsoft Word的字处理程序和诸如 Microsoft Outlook的电子邮件客户端程序中。
作为一个示例,在遇到在字典中找不到备选拼写的(或不像用户 所希望地那样指示的)不认识的词时,文档拼写检査器可以向拼写校 正服务920发送服务请求(图9),以检索该词的备选拼写列表。然后, 可以给用户呈现该备选拼写的列表(可以包括作者姓名、商务名称、 产品号或一般无法在文档拼写检测器的字典中找到的其他字符串)。这 些备选拼写可以连同指示他们基于搜索引擎用户的动作并且不可能从 技术上校正的消息一起显示。
VIII. 基于拼写变化事件数据的其他源的映射生成
这里所描述的用于将字符串映射到备选字符串的方法也可以适 于同拼写变化事件数据的其他源一起使用。作为一个示例,可以给文档拼写检査器程序的用户提供订购汇集并分析拼写变化事件数据的服 务的选项。当订购用户的文档拼写检查器遇见不认识的词A时,该拼 写检查器可以提示用户从列表中选择,或者键入备选词B。如果用户 选择或者键入这样的备选词,则该拼写检查器可以向该服务报告从A 到B的拼写变化。可以使用与上述相同的方法,对从很多不同订户的 计算设备报告给服务的拼写变化一起进行分析,以生成字符串到备选 字符串的映射。例如,这些映射可以如在先前子节中所描述地那样来 帮助用户对文档进行拼写检查,和/或帮助用户校正他们的搜索查询中 的拼写错误。
IX.结论
尽管根据特定实施例和应用对本发明进行了描述,对于本领域的 技术人员而言显而易见的其他实施例和应用(包括没有提供这里所阐 明的所有特征和优点的实施例)也在本发明的范围内。因而,本发明 的范围旨在仅通过参考下列权利要求来限定。
权利要求
1. 一种计算机实现的方法,包括分析多个用户中的每个用户的搜索字符串提交,以检测搜索字符串拼写变化事件,每个搜索字符串拼写变化事件是这样的事件用户向搜索引擎提交第一搜索字符串,并在随后向搜索引擎提交在拼写上与第一搜索字符串相似但不相同的第二搜索字符串;以及对于所述搜索字符串提交中所包括的多个搜索字符串中的每个搜索字符串,识别各个搜索字符串的一个或者更多备选拼写,其中,至少部分地通过对检测到的搜索字符串拼写变化事件进行分析来识别所述备选拼写。
2. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事 件包括至少部分地通过估计从字符串A到字符串B的拼写变化是否明显地比从字符串B到字符串A的拼写变化更加频繁出现,来评估字 符串B是否是字符串A的有用备选拼写。
3. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事 件包括通过考虑对字符串A作出拼写变化的用户如何频繁地通过提 交字符串B来对字符串A进行拼写变化,来评估字符串B是否是字 符串A的有用备选拼写。
4. 根据权利要求1所述的方法,其中,分析搜索字符串提交包括 计算所述多个用户中的特定用户所提交的搜索字符串之间的编辑距 离。
5. 根据权利要求1所述的方法,其中,所述拼写变化事件包括这 样的事件用户在第一搜索字符串提交与第二搜索字符串提交之间执 行一个或更多中间搜索。
6. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事 件包括对于从字符串A到字符串B的拼写变化,分析提交字符串A 和字符串B的用户的动作,以评估字符串B对于提交字符串A的用 户的有用性。
7. 根据权利要求6所述的方法,其中,评估字符串B对于提交字符串A的用户的有用性包括分析提交字符串B的用户的浏览动作, 以评估这些用户是否满意与字符串B相对应的搜索结果。
8. 根据权利要求6所述的方法,其中,评估字符串B对于提交字 符串A的用户的有用性包括考虑字符串A与字符串B之间的编辑距离。
9. 根据权利要求6所述的方法,其中,评估字符串B对于提交字 符串A的用户的有用性包括考虑从字符串A到字符串B的拼写变 化是否比从字符串B到字符串A的拼写变化更有可能发生。
10. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事件包括给不同的拼写变化事件分配不同的权重,所述权重取决于在相应的拼写变化事件发生的浏览会话中执行的其他用户动作。
11. 根据权利要求IO所述的方法,其中,分析检测到的拼写变化事件还包括对于特定的拼写变化,结合包括所述特定拼写变化的多个事件的权重来产生针对所述拼写变化的权重。
12. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事 件包括至少部分地基于作为其中发生拼写变化事件的浏览会话的一 部分而执行的其他用户动作,对所述拼写变化事件进行加权。
13. 根据权利要求1所述的方法,其中,分析检测到的拼写变化事件包括给最近的拼写变化事件赋予比较早的拼写变化事件更大的权重。
14 根据权利要求1所述的方法,还包括在计算机存储器中生成从 所述多个搜索字符串中的特定搜索字符串到相应的备选搜索字符串的 映射。
15. 根据权利要求14所述的方法,还包括使用所述映射来向用户 建议所述备选搜索字符串拼写。
16. 根据权利要求14所述的方法,还包括使用所述映射来自动校 正用户所提交的搜索字符串中的拼写错误。
17. —种体现权利要求1所述的方法的计算机程序,所述计算机程 序被提供在计算机存储器中。
18. —种计算机系统,包括数据仓库,存储多个用户的搜索历史,所述搜索历史识别用户提 交给搜索引擎用于实施搜索的搜索字符串;拼写变化检测组件,检测所述搜索历史中的搜索字符串拼写变化 事件,每个搜索字符串拼写变化事件是这样一个事件用户提交第一 搜索字符串,并在随后提交在拼写上与第一搜索字符串相似但不相同 的第二搜索字符串;以及分析组件,在汇集基础上分析检测到的拼写变化,并评估特定拼 写变化是否对用户有用。
19. 根据权利要求18所述的计算机系统,其中,所述拼写变化检测组件计算用户所提交的搜索字符串之间的编辑距离,并使用所述编 辑距离来检测拼写变化事件。
20. 根据权利要求18所述的计算机系统,其中,所述分析组件至 少部分地通过估计从字符串A到字符串B的拼写变化是否明显地比从 字符串B到字符串A的拼写变化更加频繁地发生,来评估字符串B 是否是字符串A的有用备选拼写。
21. 根据权利要求18所述的计算机系统,其中,所述分析组件至 少部分地通过估计从字符串A到字符串B的拼写变化是否明显地比从 字符串B到字符串A的拼写变化更加频繁地发生,来评估字符串B 是否是字符串A的有用备选拼写。
22. 根据权利要求18所述的计算机系统,其中,所述分析组件被 配置为,对于从字符串A到字符串B的拼写变化,分析提交字符串A 和字符串B的用户的动作,以评估字符串B对于提交字符串A的用 户的有用性。
23. 根据权利要求22所述的计算机系统,其中,所述分析组件至 少部分地通过分析提交字符串B的用户的浏览动作来评估这些用户是 否满意对应于字符串B的搜索结果,以评估字符串B对于提交字符串 A的用户的有用性。
24. 权利要求18所述的计算机系统,还包括映射结构,识别被所述分析组件选定为对用户有用的拼写变化;以及查询处理器,使用所述映射结构来向实施搜索的用户建议所述备 选拼写。
25. —种计算机实现的方法,包括识别由至少一个用户分别提交给搜索引擎的第一搜索字符串和第二搜索字符串;以及通过程序评估所述第二搜索字符串是否表示所述第一搜索字符 串的有用备选拼写,所述评估至少考虑(1)第一搜索字符串和第二搜 索字符串在拼写上的相似度,以及(2)检测到的、由多个用户中的每 个用户对第一搜索字符串所作出的拼写变化。
26. 根据权利要求25所述的方法,其中,至少部分地通过计算第 一搜索字符串和第二搜索字符串之间的编辑距离,来确定第一搜索字 符串和第二搜索字符串在拼写上的相似度。
27. 根据权利要求25所述的方法,还包括对于所述多个用户的 每个用户,通过检测第一搜索字符串的提交之后紧接着对相似拼写的 搜索字符串的提交,来检测对第一搜索字符串所作出的所述拼写变化。
28. 根据权利要求25所述的方法,其中,所述通过程序评估第二 搜索字符串是否表示第一搜索字符串的有用备选拼写包括考虑对第 一搜索字符串进行校正的用户如何频繁地通过提交第二搜索字符串来 校正第一搜索字符串。
29. 根据权利要求25所述的方法,其中,所述通过程序评估第二 搜索字符串是否表示第一搜索字符串的有用备选拼写包括考虑从第 一搜索字符串到第二搜索字符串的转变是否比从第二搜索字符串到第 一搜索字符串的转变更加频繁地发生。
30. 根据权利要求29所述的方法,其中,所述方法包括,给第一搜索字符串和第二搜索字符串之间的不同转变赋予不同的权重量。
31. 根据权利要求25所述的方法,其中,所述通过程序评估第二 搜索字符串是否表示第一搜索字符串的有用备选包括:考虑检测到的、从第二搜索字符串到第一搜索字符串的转变。
32. 根据权利要求25所述的方法,其中,所述方法包括,只要从 字符串A到字符串B的拼写变化实质上比从字符串B到字符串A的拼写变化更加频繁地发生,则认为第二搜索字符串是第一搜索字符串 的有用备选拼写。
33. 根据权利要求25所述的方法,其中,所述通过程序评估第二搜索字符串是否表示第一搜索字符串的有用备选拼写包括考虑提交第二搜索字符串的用户的搜索结果浏览动作显示用户满意使用第二搜 索字符串的搜索结果的程度。
34. 根据权利要求25所述的方法,还包括,响应于确定第二搜索 字符串表示第一搜索字符串的有用备选拼写,在计算机存储器中生成 第一搜索字符串到第二搜索字符串的映射。
35. 根据权利要求25所述的方法,还包括,响应于确定第二搜索 字符串表示第一搜索字符串的有用备选拼写,向给搜索引擎提交第一 搜索字符串的用户建议第二搜索字符串。
36. —种体现权利要求25所述的方法的计算机程序,所述计算机 程序被提供在计算机存储器中。
37. —种处理搜索字符串提交的计算实现的方法,所述方法包括接收由执行搜索的用户提交给搜索引擎的第一搜索字符串, 通过考虑检测到的、提交第一搜索字符串的先前用户所作出的拼写变化,选择表示第一搜索字符串的备选拼写的备选搜索字符串,通过比较用户的搜索字符串提交自动检测到所述拼写变化;以及响应于接收第一搜索字符串,执行下列中的至少之一(a)向用户建议所述备选搜索字符串,(b)自动用备选搜索字符串代替第一搜索字符串。
38. 根据权利要求37所述的方法,其中,所述方法包括访问映射 表,以查找所述备选字符串,所述映射表至少部分地基于对检测到的、 搜索引擎的多个用户所作出的拼写变化的分析而生成。
39. 根据权利要求37所述的方法,其中,对备选搜索字符串的选 择还考虑了第一搜索字符串与第二搜索字符串之间的编辑距离。
40. —种搜索引擎系统,执行根据权利要求37所述的方法。
41. 一种计算机程序,体现了根据权利要求37所述的方法,并被 提供在计算机存储器中。
全文摘要
一种拼写变化分析器(160)识别提交给搜索引擎(100)的搜索字符串的有用备选拼写。该拼写变化分析器(160)考虑用户所作出的拼写变化,该拼写变化是通过程序分析大量搜索引擎用户的搜索历史(150)而检测到的。在一个实施例中,对第二搜索字符串是否是第一搜索字符串的有用备选拼写的评估考虑(1)第一与第二字符串之间的编辑距离,以及(2)提交第一搜索字符串的用户之后将提交第二搜索字符串的可能性,这通过监控和分析用户的动作来确定。
文档编号G06F17/00GK101288046SQ200680037981
公开日2008年10月15日 申请日期2006年7月20日 优先权日2005年8月11日
发明者兰德尔·M·亨尼, 埃里克·R·瓦顿, 罗纳德·M·惠特曼 申请人:亚马逊技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1