生成输入建议 背景技术 [0001] 本说明书涉及数字数据处理,并且尤其涉及计算机实施的搜索服务。 [0002] 传统的搜索服务提供搜索查询词(search query)建议作为所输入的搜索查询词的替换。例如,传统的搜索引擎可以包括接收文本输入的查询词输入区域。传统的搜索服务可以响应于接收到该文本输入提供针对该文本输入的搜索查询词建议。用户可以选择一个搜索查询词建议作为搜索查询词。 [0003] 在一些情况中,用户可以提供以不同的输入形式表达的文本输入。例如,该文本输入可以包括第一文字(script)的词素(例如,汉字字符)、第二文字的词条(例如,英文单词)以及表达第一文字的词素的语音表达的第二文字的字母(例如,拼音音节或者拼音缩写)的混合体。 发明内容 [0004] 本说明书描述与生成搜索查询词建议有关的技术。 [0005] 本说明书中描述的主题的一方面通常可以用方法来体现,该方法包括以下动作: 接收由用户输入到输入区域中的文本输入,该文本输入包括表达第一语言的第一形式的第一n元语法和下列中的至少一个:表达第一语言的第二形式的第二n元语法和第二语言的第三n元语法;生成文本输入的一个或多个替换表达,其中替换表达是表达与文本输入不直接匹配的一个或多个输入建议的不确定形式;将替换表达发送到建议服务并且从建议服务接收一个或多个输入建议;以及比较一个或多个输入建议与文本输入以将一组一个或多个输入建议识别为文本输入的可选替换,用于显示在用户界面中。该方面的其它实施例包括对应的系统、设备和计算机程序产品。 [0006] 这些和其它实施例可以可选地包括以下特征中的一个或多个。以不确定形式生成文本输入的一个或多个替换表达包括:将文本输入分段为一个或多个相接的字符序列,其中每个序列表达单词或查询词;识别每段的一个或多个表达,其中每个表达是替换形式; 并且用替换形式的相关表达代替文本输入中的一个或多个段,以产生文本输入的替换表达。 [0007] 文本输入包括表达第一语言的第二形式的第二n元语法,并且以不确定形式生成文本输入的一个或多个替换表达包括:从文本输入生成第四n元语法,其中第四n元语法是文本输入的替换表达并且包括第二形式的一个或多个文本序列。第四n元语法包括第一形式的一个或多个文本序列。 [0008] 表达第一语言的第二形式包括使用完整语音表达或部分语音表达来表达第一语言。第一语言是中文,并且表达中文的第一形式包括使用汉字字符表达中文。完整语音表达是拼音音节,并且部分语音表达是拼音缩写。文本输入包括第二语言的第三n元语法,并且第二语言是英文。可选替换包括使用汉字字符表达的一个或多个输入建议。在用户在搜索请求中提交文本输入之前并且在接收该文本输入的每个语言符号后等待预定时间量之后接收该文本输入。 [0009] 可以实施本说明书中描述的主题的特定实施例来实现以下优点中的一个或多个。 从以不同输入形式表达的文本输入自动生成输入建议减少了获得搜索建议所需的用户交互。另外,获得以不同形式表达的文本输入的搜索建议可以通过捕获用户可能不方便提供的搜索查询词建议增加搜索覆盖率,例如,用户可能不拥有输入方法编辑器(input method editor,IME),或者可能不知道如何以特定的脚本语言提供文本输入。 [0010] 以不确定形式生成在确定输入建议中使用的文本输入的替换表达减少了存储文本输入的可能表达所需的存储器。除了减少存储器使用,以不确定形式生成替换表达通过增加搜索覆盖率并且减少被处理的输入建议的数目增加了识别输入建议(例如,音译)的精确度、查全率(recall)和效率。 [0011] 附图及以下描述中给出本说明书中描述的主题的一个或多个实施例的细节。该主题的其它特征、方面和优点将从以下描述、附图和权利要求中变得清楚。 附图说明 [0012] 图1是示出用于生成不同形式的文本输入的可选替换的系统的一些实施例中的数据流的例子的框图。 [0013] 图2是示出示例性的输入建议聚合器的框图。 [0014] 图3是示出示例文本输入和该文本输入的示例可选择的替换的图。 [0015] 图4是示出数据流的例子的框图,该数据流的例子示出如何从特定的文本输入生成输入建议。 [0016] 图5是示出用于自动生成不同形式的文本输入的可选替换的示例处理的流程图。 [0017] 各图中相同的参考标号和名称表示相同的元件。 具体实施方式 [0018] 图1是示出生成不同形式的文本输入的可选替换的系统的一些实施中的数据流的例子的框图。用户110向由客户端130呈现的搜索引擎查询词输入区域提供输入120。 输入120包括不同形式的n元语法(n-gram)。 [0019] n元语法是n个相连的语言符号(token)例如字符或单词的序列。n元语法具有阶数,该阶数是该n元语法中语言符号的数目。例如,1元语法(或unigram)包括一个语言符号;2元语法(或bi-gram)包括两个语言符号。输入120可以包括表达第一语言的第一形式的第一n元语法。输入120还可以包括表达第一语言的第二形式的第二n元语法或者第二语言的第三n元语法。 [0020] 作为例子,“我”(例如,英文中的“me”并且发音为“wǒ”)可以是表达第一语言的第一形式的第一n元语法,例如表达中文的汉字字符。另外,“wo”可以是表达第一语言的第二形式的第二n元语法。特别地,“wo”是2元语法,是“我”的完整语音表达(例如,拼音音节)。此外,“w”是表达第一语言的第二形式的第二n元语法的另一个例子。特别地,“w”是1元语法,是多个汉字字符的部分语音表达,例如发音为“wǒ”的“我”、发音为“wò”的“卧”和发音为“wèi”的“为”的拼音缩写。罗马字符“w”被称为部分语音表达,因为它是拼音音节的字符序列中的第一个字符。 [0021] 客户端130向搜索服务140发送输入120的可选替换请求。该请求包括输入120。 在一些实施中,客户端130在搜索引擎查询词输入区域接收到文本输入的每个语言符号之后,例如在接收到第一搜索查询词的每个字符或者第一搜索查询词的每个单词之后立即发送该请求。结果,当用户键入该文本输入的每个语言符号时,可以将可选替换提供给用户。 在一些替选实施中,客户端130实施延迟,在向搜索服务140自动进行请求之前等待预定的时间量。 [0022] 安装在搜索服务140上的模块142,例如,软件脚本,接收输入120。模块142处理输入120以将输入120转换为不确定形式(ambiguous form)。特别地,如下面进一步详细描述的,模块142生成输入120的一个或多个替换表达,每一个都是不确定形式。模块142向安装在搜索服务140上的建议服务144发送替换表达。在一些替选实施中,搜索服务140安装在中间服务器上,并且建议服务144安装在用于从搜索服务140接收替换表达的接收服务器上。 [0023] 建议服务144返回针对输入120的一个或多个输入建议。该输入建议是输入120的替换,例如,完全的表达、音译。模块142对一个或多个输入建议与输入120进行比较,以将一组所述一个或多个输入建议识别为输入120的可选替换。模块142实时地,即当用户 122在搜索引擎查询词输入区域中键入字符时,将可选替换返回给客户端130,显示在用户界面中。 [0024] 图2是示出示例输入建议聚合器200的框图。输入建议聚合器200包括转换子模块210和比较子模块220。输入建议聚合器200接收文本输入。转换子模块210以不确定形式生成该文本输入的一个或多个替换表达。比较子模块220接收该输入建议,并且对该输入建议与该文本输入进行比较,以将一组所述一个或多个输入建议识别为第一文本输入的可选替换。 [0025] 图3是示出示例文本输入和该文本输入的示例可选替换的图。该文本输入包括字符序列“北jingfd office hour”,其表达不同形式的多个n元语法。具体地,该文本输入包括表达第一语言的第一形式的1元语法,即汉字字符“北”。该文本输入还包括表达第一语言的第二形式的4元语法,即完整语音表达“jīng”(拼音音节)。另外,该文本输入包括两个表达第一语言的第三形式的1元语法,即拼音缩写“f”和拼音缩写“d”。该文本输入还包括不同的第二语言的6元语法和4元语法,即英文单词“office”和“hour”。 [0026] 可选替换包括汉字字符“北”、“京”、“饭”、“店”。该可选替换还包括英文单词“office”和“hour”。汉字字符“北”由该文本输入中的相同字符表达。汉字字符“京”(例如,英文中的“capital”并且发音为“jīng”)由该文本输入中的拼音音节“jīng”表达。汉字字符“饭”(例如,英文中的“food”并且发音为“fàn”)由该文本输入中的拼音缩写“f”表达,并且汉字字符“店”(例如,英文中的“store”并且发音为“diàn”)由拼音缩写“d”表达。英文单词“office”和“hour”由该文本输入中的相同单词表达。该可选替换的示例性的翻译包括“Beijing restaurant office hours”和“Beijing hotel office hours”,其中“北京”被翻译为“Beijing”并且“饭店”被翻译为“restaurant”或“hotel”。 [0027] 图4是示出数据流的例子的框图,该数据流的例子示出如何从特定的文本输入生成输入提示。在该例子中,文本输入包括字符序列“中ggug”,其中汉字字符“中”可以单独被翻译为英文中的“middle”并且发音为“zhōng”,或者翻译为英文中的“hit”并且发音为“zhòng”。该文本输入包括第一1元语法“中”,第二1元语法“g”,第三1元语法“gu”和第四i元语法“g”。 [0028] 以不确定形式生成替换表达包括将该文本输入分段为一个或多个相接的字符序列。 [0029] 在一些实施中,使用前缀匹配进行分段。从作为来自用户的输入接收到的第一字符开始将该文本输入分段为相接的序列。从位于序列被分段的顺序的开端的第一序列开始到位于该顺序的末端的最后序列结束的每个字符序列由表达一个单词或一个查询词的最长字符序列组成。 [0030] 作为例子,用户提供第一字符“X1”,接着第二字符“X2”,接着第三字符“X3”,接着第四字符“X4”,作为文本输入。该文本输入从左到右以接收每个字符的顺序包括字符“X1X2X3X4”。如果“X1X2X3X4”表达一个单词,则不分段该文本输入并且只识别该相接序列“X1X2X3X4”。 [0031] 如果“X1X2X3X4”不表达一个单词,则转换子模块210确定“X1X2X3”是否表达一个单词。如果“X1X2X3”表达一个单词,则该文本输入被分段为两个相接序列“X1X2X3”和“X4”。 [0032] 如果“X1X2X3”不表达一个单词,则转换子模块210确定“X1X2”是否表达一个单词。 如果“X1X2”表达一个单词,则将“X1X2”识别为第一相接序列。然后,转换子模块210确定“X3X4”是否表达一个单词。如果序列“X3X4”表达一个单词,则将该文本输入分段为两个相接序列“X1X2”和“X3X4”。 [0033] 如果“X1X2”不表达一个单词,则将“X1”识别为第一相接序列。使用类似的处理识别“X2X3X4”中的第二相接序列。特别地,如果“X2X3X4”表达一个单词,则将文本输入分段为两个相接序列“X1”和“X2X3X4”。如果“X2X3X4”不表达一个单词,则转换子模块210确定“X2X3”是否表达一个单词。如果“X2X3”表达一个单词,则将该文本输入分段为三个相接序列“X1”、“X2X3”和“X4”。如果“X2X3”不表达一个单词,则将该文本输入分段为四个相接序列“X1”、“X2”、“X3”和“X4”。 [0034] 在一些可替选实施中,使用中缀匹配或后缀匹配进行分段。 [0035] 在图4中,字符序列“中ggug”被分段为四个相接序列。“中ggug”、“中ggu”、“中gg”和“中g”每个都不表达一个单词,所以“中”被识别为第一个相接序列。“ggug”、“ggu”和“gg”每个都不表达一个单词,所以“g”被识别为第二相接序列。特别地,“g”可以是英文单词(例如,“good”、“grain”)的前缀,或者是拼音缩写(例如,拼音音节“gu”、“ga”、“gai”)。 [0036] “gug”不表达一个单词,但是“gu”可以表达一个单词,所以“gu”被识别为第三相接序列。特别地,“gu”可以表达一个拼音音节。“gu”可以表达的示例拼音音节包括: “gǔ”(例如,英文中的意思是“share”的“股”的语音表达)、“gù”(例如,英文中的意思是“strong”的“固”的语音表达)以及“gū”(例如,英文中的意思是“lone”的“孤”的语音表达)。因此,“gu”被识别为第三相接序列,并且“g”(即,在“中ggug”中接收到的最后字符)被识别为第四相接序列。结果,文本输入“中ggug”被分段为四个相接序列“中”、“g”、“gu”和“g”。 [0037] 使用识别出的段生成文本输入的通用形式的替换表达。特别地,识别出每一段的替换形式的表达。在一些实施中,每一段可以由完整语音表达或部分语音表达来表示。在图4的例子中,“中”的替换形式的表达包括“zhong”(即,拼音音节)和“z”(即,拼音缩写)。“gu”的替换形式的表达包括“g”(即,拼音缩写)。在一些实施中,不识别由单个字符组成的识别出的段的替换形式的表达。回到该例子,不识别该文本输入中第二个“g”和第三个“g”的替换形式的表达。 [0038] 从识别出的段和该段的替换形式的表达生成不确定形式的文本输入的替换表达。 特别地,可以用不同的组合代替该文本输入中的段,以生成替换表达。在图4中,替换表达的例子包括“zhongggug”,其中“中”用“zhong”代替;“zhongggg”,其中“中”用“zhong”代替并且“gu”用“g”代替;“zggug”,其中“中”用“z”代替;“zggg”,其中“中”用“z”代替并且“gu”用“g”代替;以及“中ggg”,其中“gu”用“g”代替。图4没有示出实际处理的通用形式的所有可能的替换表达。 [0039] 这些替换表达可以被称为处于不确定形式,因为这些替换表达每个可以表达一个或多个输入建议。所述一个或多个输入建议中的一些不直接匹配文本输入。另外,所述一个或多个输入建议中的一些不同于直接从文本输入生成的输入建议。作为例子,替换表达“zggg”包括拼音缩写“z”、“g”、“g”和“g”。“zggg”中的第一个拼音缩写可以表达不对应于文本输入中的“中”的拼音音节和汉字字符。作为例子,“z”可以表达对应于汉字字符“自”和“字”的拼音音节“zi”。另外,“zggg”中的第二个“g”可以表达与文本输入中的“gu”不匹配的拼音音节和汉字字符。作为例子,“g”可以表达对应于汉字字符“港”和“刚”的拼音音节“gang”。 [0040] 这些替换表达被发送到建议服务。在一些实施中,文本输入还被发送到建议服务。该建议服务使用这些替换表达识别一个或多个输入建议,并且将该一个或多个输入建议返回到建议服务。在图4中,输入建议的例子包括“中国谷歌”(例如,英文中的“Google China”并且发音为“Zhōng guóGǔgē”)、“中国国歌”(例如,英文中的“Chinese national anthem”并且发音为“Zhōng guóguógē”)以及“做广告工”(例如,英文中的“advertising industry”并且发音为“zuòguǎng gào gōng”)。图4没有示出实际中处理的所有可能的输入建议。 [0041] 比较模块220比较这些输入建议与文本输入,以将一组一个或多个输入建议识别为第一文本输入的可选替换。特别地,比较模块220从被识别为第一文本输入的可选替换的一组一个或多个输入建议中识别不可能由该文本输入表达的输入建议进行排除。“中国谷歌”的语音表达是“zhong guo gu ge”,“中国国歌”的语音表达是“zhong guo guo ge”,并且“做广告工”的语音表达是“zuo guang gao gong”,其中读音符号已经被去除。 [0042] 比较“做广告工”与“中ggug”,该文本输入中的第一段“中”(“zhong”)表示“做”(“zuo”)的可能性比表示“中”(“zhong”)的可能性低。另外,比较“中国国歌”与“中ggug”,第三段“gu”表示“国”(“guo”)的可能性比表示“谷”(“gu”)(即,同样的匹配)的可能性低,。 [0043] 在一些实施中,只有直接匹配被识别为文本输入的可选替换。在前一例子中,只有“中国谷歌”(“zhong guo gu ge”)是直接匹配,因为汉字字符“中”匹配汉字字符“中”,拼音音节“guo”匹配拼音缩写“g”,拼音音节“gu”匹配拼音音节“gu”,并且拼音音节“ge”匹配拼音缩写“g”。在“中国国歌”(“zhong guo guo ge”)中,拼音音节“guo”不匹配拼音音节“gu”。另外,在“做广告工”(“zuo guang gao gong”)中,汉字字符“做”不匹配汉字字符“中”,并且拼音音节“gao”不匹配拼音音节“gu”。将这些可选替换返回给客户端130用于呈现给用户110。 [0044] 在一些实施中,根据单个用户已经输入作为用于搜索的查询词的每个可选替换的频率将这些可选替换排序。在一些实施中,使用编辑距离修正该排序。作为例子,可选替换“women clothing”和“我们”(例如,英文中的“we”并且发音为“wǒmen”)二者都可以匹配文本输入“women”。可以增加“women clothing”的排序以表明它更可能由该文本输入表达,因为“women clothing”包括与该文本输入相同的n元语法“women”,并且需要一个或多个操作以将例如音译“我们”转换为“women”。 [0045] 图5是示出用于自动生成不同形式的文本输入的可选替换的示例处理500的流程图。处理500包括510:接收由用户输入到输入区域中的第一文本输入。第一文本输入包括表达第一语言的第一形式的第一n元语法和以下中的至少一个:表达第一语言的第二形式的第二n元语法和第二语言的第三n元语法。处理500还包括520:生成第一文本输入的一个或多个替换表达,其中该替换表达是表达不直接匹配该文本输入的一个或多个输入建议的不确定形式。处理500还包括530:将该替换表达发送到建议服务并且从该建议服务接收一个或多个输入建议。处理500还包括540:比较该一个或多个输入建议与第一文本输入,以将一组一个或多个输入建议识别为第一文本输入的可选替换,用于显示在用户界面中。 [0046] 本说明书中描述的主题和功能操作的实施例可以由数字电子电路或者计算机软件、固件或硬件来实施,包括本说明书中公开的结构和它们的结构等效物或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序产品,即,在有形程序载体上编码以用于由数字处理设备执行或者控制数字处理设备的操作的一个或多个计算机程序指令模块。该有形程序载体可以是计算机可读介质。该计算机可读介质可以是机器可读存储装置、机器可读存储基板、存储器装置或者它们中的一个或多个的组合。 [0047] 术语“数据处理设备”包含用于处理数据的所有设备、装置和机器,作为示例包括可编程处理器、计算机或者多处理器或计算机。除了硬件以外,设备还包括用于创建所讨论的计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。 [0048] 也称为程序、软件、软件应用程序、脚本或代码的计算机程序可以用任意形式的编程语言来编写,包括编译语言或解释语言,或者说明性语言或过程语言,并且可以用任何形式部署该计算机程序,包括作为单机程序或者作为适合于在计算环境中使用的模块、组件、子例程或者其它单元。计算机程序不一定对应于文件系统中的文件。可以将程序存储在保持其它程序或数据的文件的一部分中,例如,存储在标记语言文档中,在专用于所讨论的程序的单个文件中,或者在多个协同文件,例如存储一个或多个模块、子程序或代码部分的文件中存储的一个或多个脚本。可以将计算机程序部署成在一个计算机上或者在位于一个地点的或者分布在多个地点并且通过通信网络互联的多个计算机上执行。 [0049] 可以由执行一个或多个计算机程序以通过操纵输入数据并生成输出来执行功能的一个或多个可编程处理器来执行本说明书中描述的处理和逻辑流。还可以由专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路),执行该处理和逻辑流,并且还可以将设备实施为该专用逻辑电路。 [0050] 适合于执行计算机程序的处理器作为示例包括通用和专用的微处理器,以及任何一种数字计算机的一个或多个处理器。一般来说,处理器从只读存储器或随机访问存储器或此二者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器装置。一般来说,计算机还包括或者可操作地耦合到一个或多个用于存储数据的大容量存储装置,例如磁盘、磁光盘或者光盘,以从其接收数据或者向其发送数据或者既从其接收数据又向其发送数据。然而,计算机不需要具有这种装置。此外,计算机可以嵌入在另一个装置中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器等等。 [0051] 适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,作为示例包括:半导体存储器装置,如EPROM、EEPROM和闪速存储器装置;磁盘,如内部硬盘或者可移动盘;磁光盘;以及CD-ROM盘和DVD-ROM盘。该处理器和存储器可以辅以专用逻辑电路或者包含在专用逻辑电路中。 [0052] 为了提供与用户的交互,可以在具有用于向用户显示信息的显示装置,如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户可以用来向计算机提供输入的键盘和定点装置,如鼠标或跟踪球,的计算机上实施本说明书中描述的主题的实施例。其它类型的装置也可被用于提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感知反馈,如视觉反馈、听觉反馈或者触觉反馈;并且可以接收任何形式的用户输入,包括声音输入、语音输入或者触觉输入。 [0053] 可以在计算系统中实施本说明书中描述的主题的实施例,该计算系统包括后端组件,如数据服务器,或者包括中间件组件,如应用服务器,或者包括前端组件,如具有用户可用来与本说明书中描述的主题的实施交互的图形用户界面或者Web浏览器的客户计算机,或者包括一个或多个这种后端、中间件或前端组件的任何组合。系统的这些组件可以通过数字数据通信的任何形式或介质相互连接,例如,通信网络。通信网络的例子包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。 [0054] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络相互作用。客户端和服务器通过运行在各自的计算机上并且彼此具有客户端-服务器关系的计算机程序产生关联。 [0055] 尽管本说明书包含许多特定的实施细节,但是不应当将这些细节理解为对任何实施范围或者所要求保护的范围的限制,而是应当将这些细节理解为可能是具体实施的具体实施例所特有的特征的说明。在本说明书中在不同的实施例的上下文中描述的某些特征还可以组合在单独的实施例中实施。反过来,在单独的实施例的上下文中描述的各种特征也可以在多个实施例中分开地或者以任何适当的子组合实施。此外,尽管上面可以将特征描述为以某些组合起作用,并且最初也是这样要求保护的,但是在一些情况下可以从所要求保护的组合中去除一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。 [0056] 类似地,尽管在图中以特定顺序描述操作,但是不应当理解为需要以该特定顺序或者顺序地执行这些操作,也不应当理解为需要执行示出的所有操作以实现期望的结果。 在某些情况下,多任务和并行处理可能是有利的。此外,不应当将上述实施例中的各种系统组件的分离理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统一般可以一起集成在单个软件产品中或者打包成多个软件产品。 [0057] 已经描述了本说明书中描述的主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以按不同的顺序来执行并且仍实现期望的结果。作为一个例子,附图中所示出的处理不一定需要按照所示出的特定顺序或顺序地执行以实现期望的结果。在某些实施例中,多任务和并行处理可能是有利的。