用户搜索意图的理解及其难点解析
搜索引擎涉及的技术非常的繁复,既有工程架构方面的,又有算法策略方面的。综合来讲,一个搜索引擎的技术构建主要包含三大部分:
- 对 query 的理解
- 对内容(文档)的理解
- 对 query 和内容(文档)的匹配和排序
(点击放大图像)
我们今天主要探讨其中的 Query Understanding,即对 query 的理解。对 query 的理解, 换句话说就是对用户搜索意图的理解。先看垂直搜索中的一些例子:
“附近的特价酒店”
“上海到扬州高速怎么走”
“小龙虾最新报价”
“华为最新款手机”
“水”
这几个例子都不能直接根据 query 的字面意思去搜索,而是要理解用户输入文字背后的真实意图。不过要准确理解 query 背后的用户搜索意图可不是那么容易的。
我们来分析一下理解用户搜索词背后的真实意图识别存在哪些难点:
-
用户输入不规范,输入方式多样化,使用自然语言查询,甚至非标准的自然语言。比如上面提到的“附近的特价酒店” 、“上海到扬州高速怎么走”都是自然语言查询的例子,又如 “披星 ( ) 月”、“吾尝终日而思矣, 下面“
-
用户的查询词表现出多意图,比如用户搜索“变形金刚”,是指变形金刚的电影还是游戏? 搜索“仙剑奇侠传”是指游戏还是游戏软件? 电影? 小说? 电商网站搜索“水”是指矿泉水?还是女生用的护肤水?
-
意图强度,表现为不同用户对相同的查询有不同的需求强度。比如:宫保鸡丁。宫保鸡丁菜,菜谱需求占 90%。宫保鸡丁歌曲,歌曲下载需求占 10%。又比如:荷塘月色。荷塘月色歌曲,歌曲下载需求占 70%。荷塘月色小区,房产需求占 20%。荷塘月色菜,菜谱需求占 10%。
-
意图存在时效性变化,就是随着时间的推移一些查询词的意图会发生变化。比如:华为 P10 国行版 3 月 24 日上市。3 月 21 日的查询意图:新闻 90%,百科 10%3 月 24 日的查询意图:新闻 70%,购买 25%,百科 5%5 月 1 日的查询意图:购买 50%,资讯 40%,其他 10%5 年以后的查询意图:百科 100%
-
数据冷启动的问题,用户行为数据较少时,很难准确获取用户的搜索意图。
-
没有固定的评估的标准,CTR、MAP、MRR、nDCG 这些可以量化的指标主要是针对搜索引擎的整体效果的,具体到用户意图的预测上并没有标准的指标。
如何识别用户搜索意图
首先我们来看一下用户搜索意图有哪些分类。一般把搜索意图归类为 3 种类型:导航类、信息类和事务类雅虎的研究人员在此基础上做了细化,将用户搜索意图划分如下类别:
1.导航类:用户明确的要去某个站点,但又不想自己输入 URL,比如用户搜索“新浪网“
2.信息类:又可以细分为如下几种子类型,
直接型:用户想知道关于一个话题某个方面明确的信息,比如“地球为什么是圆的”、“哪些水果维生素含量高”。间接型:用户想了解关于某个话题的任意方面的信息,比如粉丝搜索“黄晓明”。建议型:用户希望能够搜索到一些建议、意见或者某方面的指导,比如“如何选股票”。定位型:用户希望了解在现实生活中哪里可以找到某些产品或服务,比如“汽车维修”。列表型:用户希望找到一批能够满足需求的信息,比如“陆家嘴附近的酒店”。
3.资源类:这种类型的搜索目的是希望能够从网上获取某种资源,又可以细分为以下几种子类型,
下载型:希望从网络某个地方下载想要的产品或者服务,比如“USB 驱动下载”。娱乐型:用户出于消遣的目的希望获得一些有关信息,比如“益智小游戏”。交互型:用户希望使用某个软件或服务提供的结果,用户希望找到一个网站,这个网站上可以直接计算房贷利息。获取型:用户希望获取一种资源,这种资源的使用场合不限于电脑,比如“麦当劳优惠券”,用户希望搜到某个产品的折扣券,打印后在现实生活中使用。
Query Classification 查询意图分类模块
通常有基于规则模板的分类方法和基于机器学习的分类方法。
一种是基于规则模板的分类方法,这种方法比较适用于查询非常符合规则的类别,通过规则解析的方式来获取查询的意图。比如:今天天气怎么样, 可以转化为 [日期][实体: 天气][询问词: 怎么样]上海到曼谷的机票价格, 可以转化为 [地点] 到 [地点][机票 / 车票 / 火车票] 价格
这种方法的对比较明确的规则性强的方式有精确的识别度,缺点是覆盖度低,用户查询稍作变换可能就不 match 了,另外规则的发现和制定主要靠人工进行。
另一种是基于机器学习分类的方法。
如果有确定的查询类别体系,基于机器学习的查询意图分类是一个不错的选择,可以选择 SVM 作为分类器,关键在分类特征的选择, 还有训练样本的准确标注。
这个和我们之前参加过的 2014 ACM CIKM 竞赛的问题类似,那年 CIKM 竞赛的题目是自动识别用户的查询意图(Query Intent Detection,QID):给定一批标注过类别的搜索日志包括查询日志和点击日志作为训练样本,其中也有部分未标注的,类别为 unknown。
在特征的选择方面,除了基本的 Query 的长度、Query 的频次、Title 的长度、Title 的频次、BM-25、Query 的首字、尾字等,我们通过对 log session 上下文的分析,进行了 Query 间特征词汇的挖掘,运用了 query 在相同 session 中的共现关系,挖掘 query 之间的子串包含关系,query 和点击的 title 之间的文本特征关系等。
在分类模型的选择方面,我们选择了 Ensemble 框架。Ensemble 的基本思想是充分运用不同分类算法各种的优势,取长补短,组合形成一个强大的分类框架。不过 Ensemble 不是简单的把多个分类器合并起来结果,或者简单将分类结果按固定参数线性叠加 (例如不是 a1 * ALGO1 + a2 * ALGO2 + a3 * ALGO3),而是通过训练 Ensemble 模型,来实现最优的组合。
在 Ensemble 框架下,我们分类器分为两个 Level: L1 层和 L2 层。L1 层是基础分类器,L2 层基于 L1 层,将 L1 层的分类结果形成特征向量,再组合一些其他的特征后,形成 L2 层分类器(如 SVM)的输入。这里需要特别留意的是用于 L2 层的训练的样本必须没有在训练 L1 层时使用过。
摘自:http://www.infoq.com/cn/articles/user-search-intention-recognition