我们在前两周的专栏里主要讲解了最经典的信息检索(Information Retrieval)技术和基于机器学习的排序算法(Learning to Rank)。
经典的信息检索技术为 2000 年之前的搜索引擎提供了基本的算法支持。从中衍生出的 TF-IDF、BM25 还有语言模型(Language Model)以及这些方法的各类变种都还在很多领域(不限文本)里继续发挥着作用。
另一方面,排序学习算法引领了 2000 年到 2010 年各类基于机器学习的搜索算法的产生和发展,也带来了搜索引擎技术的进一步成熟。
这周我们从排序算法转移到排序问题中一个非常重要的部分:查询关键字理解(Query Understanding)。也就是说,我们希望通过查询关键字来了解用户种种行为背后的目的。查询关键字产生的特征(Feature)往往是很强的指导因素,也是个性化搜索结果非常重要的源泉。因此,深入了解并掌握查询关键字理解方面的技术就变得很有必要。
查询关键字理解最基本的一个步骤就是给查询关键字分类(Classification),看这些查询关键字有什么用户意图(Intent)。今天我就来聊一聊查询关键字分类的一些基本概念和技术,让你对这方面的开发和研究有一个基本认识。
查询关键字分类的历史
从商业搜索引擎开始面世的第一天起,人们就发现,可以从查询关键字中得到很多用户的信息,特别是理解用户的意图。早在 1997 年,商业搜索引擎 Excite 就开始了百万级别查询关键字的研究工作。然而,真正对查询关键字分类进行系统阐述的是安德烈·布罗德(Andrei Broder)的论文《网页搜索分类》(A Taxonomy of Web Search)。
安德烈很有名头,在斯坦福大学攻读博士期间师从图灵奖得主高德纳(Donald Knuth),然后在曾经名噪一时的第一代搜索引擎公司 AltaVista(后被雅虎收购)担任首席科学家,之后加入位于纽约的 IBM 研究院组建企业级搜索平台,2012 年后加入 Google,担任杰出科学家(Distinguished Scientist)。他还是 ACM(Association of Computing Machinery,计算机协会)和 IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师学会)的双料院士。
安德烈的这篇论文可以说是奠定了查询关键字分类的坚实基础。这之后研究人员的很多工作都是围绕着如何自动化分类、如何定义更加精细的用户意图来展开的。
查询关键字分类详解
我就从安德烈这篇非常有名的文章说起。在网络搜索(Web Search)成为比较主流的咨询查询手段之前,传统的信息检索认为,查询的主要目的是完成一个抽象的“信息需求”(Information Needs)。在传统信息检索的世界里,最主要的应用应该是图书馆检索或者政府学校等企事业单位的检索。因此,在这样的场景下,假定每一个查询主要是满足某个“信息需求”就显得很有道理了。
然而,早在 2002 年,安德烈就认为这样的传统假定已经不适合网络时代了。他开始把查询关键字所代表的目的划分为三个大类: