google suggest分析
网上有大量介绍google suggest的文章,但主要都是介绍网页方面如何去实现,似乎没有人介绍这些自动补全的词是从哪里来的。难道真已经到了是简单的无话可说的地步?
先看一下google的结果,也许没有人真正注意过:
这里输入“机器学”之后,给出的补全侯选查询后面都有一个结果数,显然补全侯选查询并不是按结果数进行排序的,那很有可能就是按这个侯选查询的搜索次数来排序的。比如“机器学习”有1亿次搜索,“机器学习论坛”有1千万次搜索,那“机器学习”就应排到“机器学习论坛”前面。
可以尝试一下输入一个字母,它返回的补全侯选,全都是英文开头的,换句话说,也就是它不会把给一个字母当作一个汉字的拼音进行提示,比如不会提示“郎咸平”。
而输入两个字母就有可能当成是汉字的拼音进行处理了,这个例子也蛮典型的,因为自我感觉搜索下面几个查询的人应该更多(因为前面3个单词,我就不认识,查了一下,第2个和第3个中文听过,第1个和第4个完全没概念),但是仍然会把它们放到前面。
输入“li”的时候,提示的第一个是中文的侯选,输入“lo”,全部都是英语的。这应该是用什么方法把提示原模原样的英语和提示认为是拼音的两个提示结合起来了,但是明显这两种提示都有各自的得分,如果合起来呢?似乎有点难度,好像一个小朋友语文得了100分,数学得了80分,不能说他语文比数学好。但是我想这问题解决应该是比较简单的,用户群那么大,干什么不简单呢?使用多个服务器,每个服务器用不同的结合方式,也就是A/B tesing,看哪个使用的更多,就用哪种结合方式。当然有了这种差不多合理的数据后,还可以用这些数据作为训练数,学习出更合理的结合函数。
这也是网上有人介绍过的,支持拼音的简写。
我故意把“机器学习”输错,“集器”开头是没有侯选查询的,但是它提示了几个含有“集器”的侯选查询,它们都是在尾部包含“集器”的查询,有没有在中间包含的情况,还不确定。
关于纠错,如果输入“器学”(“机器学习的”前面一部分),是没有提示的,但这也不表明就不会提示中间包含的情况,但是我感觉的确是不提示的(我真是找不到反例)。发现了google suggest的一个小小的缺点,输入“器猫”,它提示的是“机 器猫”,中间有一个不应该有的空格。
这里google suggest进行了纠错(还有一个小错误,“还迎”这个词写错了,为什么不提示“北京欢迎你”呢?这我有点想不出来了),这里还有一点,它是把li和ni对应了,有的南方人分不清l和n。大部分情况下,它是不纠错的,因为你搜索错了,它也能提示你,比如搜索“数具挖掘”,它不会在google suggest的时候提示,它会在搜索之后告诉说,这个可能是“数据挖掘”。