关键词推荐工具中的用户引导机制

搜索引擎根据网民输入的检索词(query)猜测网民需要的信息, 之后进行检索, 排序后将相关的信息展现给网民。 因为网名输入的query一般都较短, 而且不同的网民使用搜索引擎的能力也不一样。 所以一般搜索引擎都会有些查询引导机制, 在猜测用户可能的意图后, 推荐一些相关且高质量的种子query给网民。例如在百度搜索框搜索‘关键词工具’,在搜索结果的最下方,出现以下相关搜索结果:
这些相关搜索结果均是根据网民搜索session和网民搜索点击结果挖掘而来(因可能涉及泄密,百度的具体实现此处就不再介绍, 后续会有博文介绍业界相关相关搜索结果的论文), 这些(推荐)query一方面从搜索意图上和网民的搜索意图匹配, 一方面和也能够达到引流的作用,例如能够快速引导网民找到需要的内容, 或者考虑商业变现因素, 能够将搜索引导向与搜索意图匹配且有商业价值的搜索上, 提升搜索引擎的变现效率。
而作为完整的关键词推荐工具, 不仅要能主动分析推荐结果给客户(关键词工具的用户为搜索引擎的商业客户,及广告投放客户), 在用户输入种子query后展现相关结果给客户,还需要在客户操作的每一步, 对客户的行为进行提示和引导。
关键词工具引导机制的功能
关键词推荐工具不仅能根据用户历史行为主动向用户push相关关键词,同时提供搜索功能, 供用户输入种子query后推荐出相关的关键词。 此时就会面临和搜索引擎一样的问题, 用户输入query的质量,将会直接决定推荐结果的好坏, 所以关键词推荐系统需要有完善的引导机制, 提升用户输入query的质量,以便提升整体的推荐质量。
上图为KR关键词推荐工具
引导机制的类型及简单实现思路
一般说来, 根据用户使用关键词工具的交互操作,按照交互阶段,可以将引导机制分为以下三类:
  1. 查询前: 在用户进入关键词工具时, 还未有任何交互时,此时关键词推荐系统主动向用户push用户可能感兴趣的种子query; 具体实现时,可以根据客户历史上采纳的搜索引擎拍卖词(即客户采纳的符合客户客户推广意图的关键词)分析出客户的推广意图或业务点, 使用传统推荐算法(content-based 或 collaborative 推荐算法)找出客户可能感兴趣的种子query进行推荐。该场景更偏推荐问题
  2. 查询中: 即用户已经开始在关键词工具搜索框中进行输入,但输入还未完成的阶段。此时最常采用的方式是使用suggesion的方式,结合客户当前输入,向用户推荐完整的高质量query;具体suggesion挖掘,可以找到一些高频的query,结合session数据,搜索点击数据进行挖掘(百度suggesion具体的算法此处涉及泄密不再介绍,后续会有文章介绍业界公开的suggesion方法)
  3. 查询后: 当客户完成一次搜索后, 客户搜索的内容已经基本明确, 此时就可以根据这次用户的搜索意图,找到相关的更高质量的query,以类似于搜索引擎相关搜索的方式推荐给客户。
引导机制在整个系统中的地位
引导机制无论是在搜索引擎中, 或是关键词推荐系统中, 都是必不可少的功能环节,能够带来以下收益:
  1. 推荐给客户能有多而好的检索结果的种子词,并逐步进行优化,提升用户体验,提高客户提词量;对于搜索引擎而言是优化输入query。
  2. 降低未曾使用过KR的客户的使用门槛,让KR的使用更为简单便利,扩大关键词工具的市场占有率;对于搜索引擎而言, 也能够快速提升其他用户经常搜索的相同/类似意图的query给网民,提升搜索量。
  3. 通过种子词引导客户对账户关键词的优化,提高客户的ROI,提升百度收益,达到双赢目的。对搜索引擎而言则是能将搜索引导至相同/类似意图的搜索上,提升搜索引擎的变现效率。
如对以上功能感兴趣, 各位可以在www2.baidu.com上注册一个凤巢帐号(无需缴费), 在百度凤巢系统中的关键词工具中试用上述功能。
更多内容参见:
百度凤巢系统: www2.baidu.com
suggestion的一种实现方法: Cao, Huanhuan, et al. 2008. Context-Aware Query Suggestion by Mining Click-Through and Session Data. Proceedings of the 14th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2008, 875-883.
也可关注我的微博:  weibo.com/dustinsea
或是直接访问: http://semocean.com

搜索引擎点击日志聚类实现相关搜索

组里经常招实习生, 在技术问题问得差不多的时候, 我经常会问他们一个问题:‘百度的相关搜索,你会如何设计实现?’   主要想看下实习生会有哪些思路,看看思路是否广,方法是否多, 没有啥方法的话, 我会提示下,看他是否能够一些思路。
其实各大搜索引擎的‘相关搜索‘ 虽然涉及到的细节会比较多, 包括如何权衡点击,用户体验,收入之间的关系等细节,主要的挖掘算法还是比较类似的。 从数据上来说,基本上围绕着网民搜索的session数据,网民点击数据,涉及到商业变现的话,可能会引入广告主的信息。
百度的相关搜索的实现这里就不介绍了(可能涉及泄密),这里主要介绍之前看过的一篇论文: Agglomerative clustering of a search engine query log    使用搜索点击日志进行query聚类,并使用层次聚类结果进行相关搜索结果挖掘与推荐。希望对大家有所帮助。
算法中的创新点, 是在对query进行聚类的同时, 也就将URL进行了聚类。聚类的过程没有使用query的内容信息, 而是直接使用了网民的行为信息(搜索,点击行为)。这种思路和协同过滤类似, 就是不考虑推荐item的内容,而是使用用户的行为数据直接进行推荐。
算法首先使用点击日志, 格式为的pair,构建双边图,左边为query, 右边为url,如果搜索query后点击了url则链接该query和该url代表的节点建立一条边。该二分图的建立方式如下:
二分图示例如下,左边为query,右边为被点击url,边为搜索相关query后点击对应的url:
在这里,query的内容和url的内容不重要,直接将其mapping到一个唯一ID也没问题
定义N(x)为x的邻居点, 则可以定义query点x, y 的相似度如下:
该相似度介于[0,1]之间,即, 当x,y 均为query时, 使用与x,y均相邻的节点比例度量他们之间的相似度; 相对地, 当x,y均为url时,使用共同搜索query定义其相似度。该度量方式和Jaccard度量方式原理类似。
之后的工作便是迭代进行聚类,每次使用url计算两两query的相似度,合并最相似的query; 之后使用query作为特征计算两两url的相似度,合并最相似的url;一直迭代直到终止条件。
之所以每轮迭代都要对query和url分别进行,是因为只有这样才能找出原来不明显的一些聚类关系。例如下图,在点1,2 合并为1’前, 是不能直观看出a和c之间的关系的:
终止条件一直是agglomerative聚类的重要问题, 一般的思路是一直合并到不能合并为止, 但实验中一般这样的话会合并出很多较大的cluster, 所以很多时候会采用控制每个cluster的大小(或是层数),以及最多的类的个数等因素作为合并的终止条件。
使用该方法即可将搜索引擎的点击日志进行聚类。 具体应用时,当网民输入某个具体query的时候, 判断该query所属的cluster, 之后该cluster中的query即可作为相关搜索的结果的候选,当然cluster的query具体展现哪些, 以及如何排序, 又可以有很多因素需要考虑, 例如点击率, 用户体验, 倒流量的能力等, 此处不再进一步讨论。 使用该方法最大的优势是不用考虑query的内容信息, 而是直接使用网民的行为信息进行聚类(此处与推荐系统中协同过滤有异曲同工之处)。 当然, 具体工程实现中, 我们也可以使用类似于推荐系统的思路, 融合入按内容的特征联合进行聚类, 取得更好的效果。 例如重新重新定义相似度度量方式, 使用点击关系和内容相似度进行加权作为最终相似度:
其中cross_ref_similarity表示根据关系数据得到的相似度, 更多内容可参见‘Query Clustering Using User Logs’
更多内容参见原论文:
Beeferman, Doug and Berger, Adam. 2000. Agglomerative Clustering of a Search Engine Query Log. Proceedings of the 6th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2000, 407-416.
Wen, Ji-Rong, Nie, Jian-Yun and Zhang, Hong-Jiang. 2002. Query Clustering Using User Logs. ACM Transactions on Information Systems. January 2002, Vol. 20(1), pp. 59-81.
也可关注微博: weibo.com
或是直接访问: http://semocean.com