net.pku.edu.cnnet.pku.edu.cn/.../2012-MasterThesis-LIUXiaobing.docx · Web...

Click here to load reader

Transcript of net.pku.edu.cnnet.pku.edu.cn/.../2012-MasterThesis-LIUXiaobing.docx · Web...

硕士研究生学位论文

题 目: 通过丰富查询特征和查询图上的标签传播算法识别查询分类

姓 名:

刘晓兵

学 号:

10948249

院 系:

信息科学技术学院

专 业:

计算机系统结构

研究方向:

搜索引擎与网络数据挖掘

导 师:

闫宏飞 副教授

二〇一二年五月

北京大学硕士学位论文——通过丰富查询特征和查询图上的标签传播算法识别查询分类——刘晓兵

版权声明

任何收存和保管本论文各种版本的单位和个人,未经本论文作者同意,不得将本论文转借他人,亦不得随意复制、抄录、拍照或以任何方式传播。否则,引起有碍作者著作权之问题,将可能承担法律责任。

通过丰富查询特征和查询图上的标签传播算法识别查询分类

刘晓兵

北京大学信息科学技术学院

2012年5月

摘要

查询意图被定义为查询背后的信息需求,正确分类用户的查询意图,能够帮助商业化搜索引擎优化检索结果,提供更加准确的检索服务。由于用户的查询关键词一般较短(平均长度2-3),通过查询词本身的特征对查询进行分类比较困难。本文从丰富查询表示方式和利用无标签数据两个方向,研究查询分类的可行方法,并在识别查询的商业意图上验证方法的有效性。

本文主要包括四个部分:

1. 使用查询点击文档的摘要信息或者相似查询的集合丰富查询的特征,实验表明这两种丰富查询特征的方法对于识别用户商业意图非常有效。

2. 根据查询之间的关联关系构建了四种查询图,在图上使用标签传播算法进行查询分类,实验验证,这种方法可以达到有监督机器学习方法同等的分类效果。

3. 通过组合多种查询图丰富查询图的先验知识,或者是使用最大熵分类器扩展有标签的数据集改进标签传播算法的分类效果。实验表明,组合后的图更适合于标签传播算法,扩展有标签数据集的方法也可以很好的提升标签传播算法的分类效果。

4. 组合使用标签传播算法和最大熵分类器,一种方法是通过标签传播算法扩大最大熵分类器的训练集,另外一种方法使用互学习的方式结合两种分类器,实验表明,训练集扩展后的最大熵分类器分类效果有明显提升,当有标签的数据集很少的时候,互学习的方法可以获得很好的优化。

关键词:查询分类,查询的商业意图,标签传播算法,查询图

Query classification with rich features and label propagation over Query graph

Xiaobing Liu

School of Electronic Engineering and Computer Science, Peking University

May, 2011

Abstract

Query intent defined as user need under query string, commercial search engine can provide more effective search service with correctly detecting query intention. Since queries are usually very short (average length 2-3), classify query only by their term features always get bad classification performance. We study query classification method through enrich query features and make use of unlabeled data and then verify effectiveness of our methods through detection online commercial intention.

We present our research in four parts.

1. Enrich query features by snippet of click documents or similarity queries. Experiments show that these two features are effective for detecting online commercial intention.

2. Construct four query graphs by association in queries; take label propagation over these graphs for query classification, this method can achieve equivalent performance as supervised machine learning methods.

3. Optimizing label propagation method by combining many graphs into one which enrich priori domain knowledge for graph or amplifying labeled data with Maxent classifier. Experiments show that combined graph is more effective for label propagation method and expanded labeled set can achieve significant improvement in classification performance.

4. Combine label propagation method and maximum entropy method. One solution is taking label propagation for enlarging training set of maximum entropy classifier, the other one is co-training with label propagation and maximum entropy method. Experiments show that Maxent classifier work better after training set expansion by label propagation, co-training can achieve significant improvement and considerable classification performance when there are only a few labeled data.

Keywords: query classification, query commercial intention, label propagation, query graph

目录摘要I第1章绪论1第2章相关工作3第3章实验数据集构造63.1搜狗搜索引擎查询点击日志的基本信息63.2人工标记73.3实验数据集构造9第4章通过丰富查询特征进行查询分类104.1使用查询自身的n-gram特征104.2使用检索结果的摘要信息表示查询104.3使用相似的查询集合扩展查询114.4使用点击文档的摘要信息表示查询154.5实验和结果分析16第5章在查询图上使用标签传播算法进行查询分类215.1构造查询图215.2标签传播算法285.3实验及结果分析305.4组合多种构图方式优化图结构355.5扩展有标签的数据集41第6章整合最大熵分类器和标签传播算法476.1使用标签传播算法扩大最大熵分类器的训练集476.2使用co-training 结合最大熵和标签传播算法50第7章总结和未来工作52参考文献53致谢55

表目录

表格 31查询日志的统计信息7

表格 32 抽样数据集中查询词频率分布8

表格 33 集合A的Kappa一致性8

表格 34 集合B的Kappa一致性8

表格 35 人工标注的详细信息8

表格 36 有标签数据集查询长度分布8

表格 37 数据集详细构成9

表格 41 tp, fp, fn, tn 定义17

表格 42 四种特征最优结果的详细信息19

表格 51 四种查询图统计信息27

表格 52 标签传播算法在四中图上取得的最优分类结果32

表格 53 标签传播算法在测试集上的Coverage值32

表格 54 T3集合中的顶点到测试集顶点之间的最短路径32

表格 55 标签传播算法在整个数据集上的Coverage 值34

表格 56 组合图的详细参数和统计信息36

表格 57 组合图上分类效果的F1值37

表格 58 组合图上分类效果的准确率值37

表格 59 组合图在测试集上的覆盖度40

表格 510 组合图在整个数据集上的覆盖度40

表格 511 使用最大熵初始化Y值,标签传播算法分类的F1值43

表格 512 使用最大熵初始化Y值,标签传播算法分类的准确率43

表格 513 最大熵分类器扩展后的有标签数据集合43

表格 514 扩展数据集后,标签传播算法在测试集上的覆盖度45

表格 515 扩展数据集后,标签传播算法在整个数据集的覆盖度45

表格 61 使用标签传播算法扩展后训练集数量和详细信息48

表格 62 最大熵分类器的F1值48

表格 63 最大熵分类器的准确率48

图目录

图 31 查询频率分布7

图 32 查询词长度分布7

图 41 构建Query-Document Graph13

图 42剪枝后的Simrank++算法14

图 43 使用相似查询集合构建查询特征向量15

图 44 获取查询点击信息16

图 45 Maxent+查询n-gram特征18

图 46 Maxent+检索结果摘要信息18

图 47 相似查询集合18

图 48 点击文档的摘要信息18

图 49 M2 α=0.420

图 410 M4 α=0.420

图 51 使用Jaccard 系数计算查询词之间的相似度,构建查询图22

图 52 按时间划分查询会话25

图 53 查询会话的长度分布26

图 54 使用查询会话构建查询图27

图 55 四种查询图度数分布28

图 56 标签传播算法29

图 57 QSGraph+标签传播算法31

图 58 UCGraph+标签传播算法31

图 59 QCSGraph+标签传播算法31

图 510 SessionGraph+标签传播算法31

图 511 QSGraph+标签传播同M2分类效果对比33

图 512 SessionGraph+QSGraph F1值38

图 513 SessionGraph+QSGraph准确率38

图 514 SessionGraph+QCSGraph F1值39

图 515 SessionGraph+QCSGraph 准确率39

图 516 UCGraph+QSGraph F1值39

图 517 UCGraph+QSGraph 准确率39

图 518 使用最大熵分类器增加有标签数据42

图 519 UCGraph+Maxent F1值44

图 520 UCGraph+Maxent 准确率44

图 521 QSGraph+Maxent F1值44

图 522 QSGraph+Maxent 准确率44

图 523 QCSGraph+Maxent F1值44

图 524 QCSGraph+Maxent 准确率44

图 525 SessionGraph+Maxent F1值45

图 526 SessionGraph+Maxent 准确率45

图 61 通过标签传播算法扩大最大熵分类器的训练集47

图 62 分类结果的F1值比较49

图 63 分类结果的准确率比较49

图 64 co-training 结合最大熵分类器和标签传播算法50

图 65 co-training和标签传播,最大熵分类器的对比51

VII

绪论

随着信息的爆炸式增长,搜索引擎作为用户获取信息入口的作用越来越重要,为了提高检索服务的效果,搜索引擎需要准确的理解用户检索的需求,为用户提供更加有效和个性化的检索服务。

传统的信息检索通常是通过度量用户查询和文档之间的相似度返回检索结果,越来越多的研究表明,不同类别的查询,对于检索的要求不同,如果能够获得查询的类别信息,搜索引擎可以为不同类别的查询提供垂直的检索服务,或者是使用不同打分模型,提高检索的效果,同时搜索引擎也可以根据不同的查询类别提供更加友好的结果展示方式,更好的满足用户的检索需求。

对于查询分类的研究,目前的方法主要可以分为两类:

1. 根据查询的意图对查询进行分类,例如,将查询分为导航类,信息类;

2. 根据查询的主题进行分类,例如,将查询分为“computer/software”,“computer/hardware”,这种分类方式一般需要预定义一个树形的类别结构。

查询分类的形式化定义为:

给定查询q和类别标签集合 Y={y1,y2….yn}, 计算 f(yi|q),分类结果一般取c(q)=,或者对于多类问题,取最大的k个yi 作为分类的结果。

自动化查询分类的主要困难在于:

1. 查询词通常较短,通常查询词的长度在2-3之间,查询词本身的特征过于稀疏,很难取得比较好的分类效果

2. 人工标记的代价较高,很难通过获取大量人工标记数据的方式,提高分类的准确率

本文从两个方向研究查询分类的方法:

1. 通过丰富查询的特征,将查询映射到一个中间对象,然后使用中间对象训练分类器,完成查询分类;本文我们主要使用点击文档的摘要信息和相似查询的集合表示查询。

2. 通过使用半监督的机器学习方法,利用大量无标签的数据集,优化查询分类;本文我们通过构建查询图[20], 在图上运行标签传播算法进行查询分类。

Dai[1]等人在06年首次提出了查询的商业意图的概念,他们定义查询的商业意图为:

用户提交查询是为了进行一序列的商业活动,主要是购买商品或者服务。商业意图的查询主要包括两部分活动:

1. 购买前对于商品信息的浏览,例如:查看商品的价格,参数;

2. 购买商品的行为,例如:付款,淘宝,使用淘宝这样的购物平台进行商业活动。

通过识别查询的商业意图,搜索引擎可以提供更加精确的广告信息,可以优化检索结果的展示方式,例如对于用户有购买意图的产品,可以直接提供购买链接。

本文通过查询商业意图的识别验证两种方法的有效性。

本文的第二部分介绍查询分类的相关工作,第三部分介绍查询点击日志的相关信息和实验数据集的构造,第四部分介绍通过丰富查询表征方式进行查询分类的方法,第五部分通过生成查询图运行标签传播算法进行查询分类,第六部通过组合丰富查询特征和标签传播两种方法优化查询分类,最后第七部分总结工作。

相关工作

一类查询分类的研究集中在按照查询的意图进行分类,Broder[2]等人在02年首次提出查询意图分类的问题,他们将查询意图分成三类:

导航类:用户希望能够找到一个导航页面,例如对于查询词“新浪”,用户的意图很大可能是要访问新浪网的主页,

信息类:用户希望获取查询相关的信息,这类查询一般需要浏览多个相关网页,例如查询“隐马尔科夫模型”。

事务类:用户希望找到一些服务或者网页,完成一序列的事务操作,例如下载特定的网络资源。

Rose等人[3]将查询意图分为导航类,信息类和资源类,并且对后两类进行了更细粒度的划分。Baeza-Yates等人认为[4],可以把查询意图分成信息类,非信息类(包括导航类和事务类)以及歧义类三种。Lee[5]等人使用查询点击和锚文本分布作为特征,发现对于人物、软件等的查询,用户意图的歧义性很大。Liu等人[6]使用nRS和nCS指标来表征点击特征, 使用决策树来训练分类器。取得很好的查询分类效果。Fujii[7]等人为导航类和信息类的查询使用不同的检索参数,发现查询类别的判定可以很好的提高检索服务的效果。Jansen等人[8]对查询串的特征建立了一套非常复杂的规则系统,包括判断它是否是人名、公司名、网站名等等,来判断一个查询的意图类别;Lu[9]等人组合使用多种特征选取方法和机器学习方法对查询进行分类,发现用户点击特征对于查询分类最为重要,其次是URL和锚文本等特征。

Dai[1]等人2006年首次提出了查询的商业意图,并且通过使用查询的检索结果页面和检索结果的摘要信息对查询进行分类。

另外一些研究集中在将查询按照主题进行分类,KDDCUP 2005[10]专门有一项查询分类的比赛,这类方法一般是将查询映射到一个树状的分类结构中,查询可以同时属于多个类别。

Shen[11]等人使用桥接的方式建立了一个临时类结构到目标类结构的映射关系,将查询按照临时的类结构进行分类,然后映射到目标分类结果,Hu[12]等人使用Wikipedia作为辅助信息帮助完成分类。

这些通过有监督的机器学习算法进行查询分类的方法,都是通过扩展查询的特征解决查询本身特征比较稀疏的问题来优化查询分类的。他们主要使用的特征包括:

1. 查询串本身的n-gram 信息;

2. 搜索引擎的检索结果,通过搜索引擎获取查询最相关的文档,用于补充查询的特征;

3. 查询日志;

4. 外部资源,WordNet, Wikipedia[12] 等一些能够帮助丰富查询本身语义信息的资源。

Shen[13]等人使用查询检索结果的摘要信息和相似的查询集合表示查询,扩展查询的特征判定查询的商品类别,Guo[14]通过记录用户查询过程中的鼠标的移动轨迹来判断查询的类别。

研究表明,检索结果的摘要信息对于查询分类非常有效[1][13],但是使用检索结果摘要信息主要存在两个问题:

1. 查询分类的意图主要是为了优化检索结果,这里需要首先获取查询的检索结果才能分析查询的分类;

2. 生成摘要是比较耗时的操作,运行时动态获取查询的摘要信息会降低搜索引擎的检索效率。

本文我们使用点击文档的信息扩展查询特征,相比于检索点击结果,点击文档与查询关联度更高,同时点击文档的特征可以离线计算好,很好的解决了检索结果摘要存在的问题。

另外一类优化查询分类的方法是通过使用半监督的机器学习方法[15],利用大量的无标签数据。

半监督的机器学习算法介于有监督学习和无监督学习之间,有监督的机器学习方法只使用有标签的数据,无监督的机器学习方法只使用大量的无标签数据,研究发现结合使用大量的无标签数据和少量的有标签数据,可以很好的提高机器学习算法的准确率。

多数情况下手工标记大量的数据不太现实,而获取大量的未标记数据则比较容易,半监督的机器学习算法同时使用有标签和无标签两类数据,对于解决这些问题非常适用。

比较常见的半监督分类方法主要有:

1. 自学习,使用已标记数据训练分类器,在未标记数据上进行分类预测,然后在预测结果中选择一些高置信度的数据添加到训练集中,迭代训练;

2. 互学习[16][17],使用两个独立的分类器在不同的特征维度上分别进行训练,将一个分类器预测结果中置信度较高的数据添加到另一个分类器的训练集中,这种方法要求两个分类器使用的特征相互独立;

3. 图上的标签传播算法[18][19],图的顶点包括未标记和已标记的两种数据,边上的权重表示顶点之间的相似度,这种算法假设,节点的标签应当同该节点的邻居保持一致,同时图结构上一致的节点也应该具有相似的标签。

Li[21]等人使用点击日志构建查询到文档的二部图,然后在图上做标签传播,扩大训练集的数量,最后使用查询串的n-gram特征对查询进行分类。

查询到文档的二部图只是利用了点击日志中的点击文档信息,本文通过构建查询到查询之间的图[20](查询图) 利用更多的查询关联信息,然后使用标签传播算法在查询图上进行标签传播,提高分类的准确度。

实验数据集构造搜狗搜索引擎查询点击日志的基本信息

本文实验使用搜狗实验室公布的查询点击日志[22],该日志库包括约1个月(2007年3月)搜狗搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。每一条日志的数据格式为:

访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL

其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID。

例如:

00:00:00 6942039291528982 [房价] 8 1 business.sohu.com/s2006/

表示用户在当天的0点0分检索查询“房价”, 然后第一个点击的文档在检索结果中排第8位。

为了方便后续的实验,我们使用MapReduce对查询点击日志进行处理,主要是将查询从大写转换为小写,删除查询词开始和结尾处的空格,然后将查询日志按照查询词,URL和用户进行归类,生成

1. 查询词到所有点击的映射关系;

2. URL到所有点击过该URL的查询的映射关系;

3. 用户ID到其所有查询信息的映射关系。

表3-1为该日志查询词的详细统计, 图3-1和图3-2为查询频率和长度的分布图。

表格 31查询日志的统计信息

Unique query

频率为1的query

最高频率

平均长度

4528899

1589219

101088

3.77

图 31 查询频率分布

图 32 查询词长度分布

图3-1中横轴表示查询词出现的频率,纵轴表示该频率下查询的个数,图3-2的横轴表示查询词的长度,纵轴表示该长度下查询出现的频率。

我们可以看到查询频率的分布符合典型的power-low分布, 对于查询词的长度分布,长度为3的查询最多,平均长度为3.77.

人工标记

我们将查询日志按照频率分成了5组,详细的分类情况如表3-2所示。

由于第一组查询频率较低,我们对后四组按比例进行抽样,随机选取了5000个查询,查询集合中色情信息比较多,我们手工过滤了这些查询词,同时由于数据集比较旧(2007年03月),我们也过滤了一些明显受时间影响比较大的查询,最终构造了一个包含714个查询的集合。

将714个查询分成两份A和B,A份包含400个查询,B份包含314个查询。每份选了3个人进行手工标注,标注的类别有:1)具备商业意图;2)不具备商业意图;3)不清楚是否有商业意图。如果查询本身看不出是否具备商业意图,或者用户对于查询不太理解,我们要求用户先通过搜索引擎检索相关信息,然后再完成标注。

表格 32 抽样数据集中查询词频率分布

频率范围

[1,10)

[10,100)

[100,1000)

[1000,10000)

[10000,+∞)

查询个数

4044022

450684

30921

2994

278

我们对用户标记的数据进行Kappa一致性检验[23],得到的结果如表3-3和表3-4所示。

表格 33 集合A的Kappa一致性 表格 34 集合B的Kappa一致性

A1

A2

A3

A1

0.486

0.658

A2

0.486

0.511

A3

0.658

0.511

B1

B2

B3

B1

0.4895

0.491

B2

0.4895

0.486

B3

0.491

0.486

我们可以看到,用户的Kappa一致性不是很高,说明商业意图的判定歧义性较大。从标注的集合中我们选取了:同时有两个或者以上相同标签的查询,作为该查询最终的标签,添加到了最终的数据集中。例如:对于查询词“长安奔奔汽车价格”三个人都认为具有商业意图,该查询被划分到具有商业意图的集合中;查询词“哈利波特5”一个人认为有商业意图,两个人认为无商业意图,被划分到了无商业意图的集合中。

手工标记的详细信息如表3-5所示

表格 35 人工标注的详细信息

标签

人数

有商业意图

无商业意图

不确定

1人

93

99

117

2人

69

88

29

3人

94

383

5

最终一共得到163个有商业意图的查询和471个无商业意图的查询。该集合中查询的长度分布如表3-6 所示

表格 36 有标签数据集查询长度分布

长度

个数

1

2

3

4

5

6

平均长度

186

216

133

72

21

6

2.28

实验数据集构造

我们将人工标记的数据集平均份成5份,选取了2份作为测试集,为了验证不同数量的训练集对于查询分类的影响,我们构造了4种训练集,这里使用Ti表示训练集,其中i∈[1,4],T1使用一份数据,T2使用两份数据,T3使用三份数据,T4从两类查询中各取10个,用于验证只有很少量的标记数据时,查询分类的效果。

4份训练集和测试集包含的正负类详细情况如表3-7所示:

表格 37 数据集详细构成

T1

T2

T3

T4

Test Set

+1

32

64

96

10

67

-1

94

188

282

10

189

总数

126

252

378

20

256

+1和-1分别表示有商业意图的查询和无商业意图的查询类别。

通过丰富查询特征进行查询分类使用查询自身的n-gram特征

由于查询词比较短,一般会采用查询词的n-gram 作为特征,在选取n-gram时添加两个特殊符“”和“”分别表示开始和结尾,例如对于查询词:“a b c”,2-gram由 “ a”, “a b”, “b c”, “c ” 组成。

这里我们使用中文分词工具对查询进行分词处理,使用分词结果的1-gram作为特征,最终得到的特征向量形式如下:

公式 41

其中,n为查询集合中词的个数 ti 表示第i个词,ti fq 表示第i个词在查询q中出现的频率

实验中,n=1003, 即查询分词集合中不重复的词总数为1003,由于查询的平均长度为2.28,特征向量非常稀疏,分类效果很差,因此我们需要一些其他特征用来表示查询,降低特征向量的稀疏度。

使用检索结果的摘要信息表示查询

检索结果已经被验证为查询分类的一个非常有效的特征,查询摘要作为检索结果页面与查询相关的一段总结信息,对查询的表征性更强。Dai[1]等人的实验说明利用摘要信息比检索结果取得更好的分类效果。

这里对每一个查询,我们抓取了Google搜索引擎返回的前100条检索结果,同时对100个检索结果指向的网页进行抓取。通过解析Google的检索结果页面,得到了最多100条摘要信息。我们选择K条摘要组合成一个文档,用于表征查询。对于摘要信息我们做了一些预处理操作,主要包括:

1. 对摘要信息进行分词处理

2. 将所有词转换为小写

3. 删除停用词,这里选择tdf > m*0.9 的词作为停用词,其中tdf 表示词的df值,m表示文档的个数,即当一个词出现在超过90%的文档中时,将该词看作时停用词。这里每一个查询都由一篇文档来表述,m即为查询的个数

4. 删除摘要信息中包含的标点符号

实验中我们选择K=10, 通过摘要信息构建特征向量的方式同公式4-1,tifq 表示第i个词在摘要文档中出现的频率。这里词的总数n=22196, 查询摘要文档的平均长度为293.5,特征向量的稀疏度相比使用查询词本身有比较大的优化。

使用相似的查询集合扩展查询

虽然使用摘要信息进行查询分类效果很好,但是这种方法主要有两个问题:1) 判定查询的类别主要是为了帮助搜索引擎优化后续的排序和展示,这里需要先得到检索结果。2) 获取摘要信息比较耗时,降低了检索服务的效率。

查询日志中包含了大量的查询信息,我们可以找到与查询q最相似的查询列表sim(q)=[q1,q2,….qm], 其中qi 表示查询集合中与查询q相似度排序第i的查询。Sim(q) 包含的信息比原查询更加丰富,使用sim(q)代表查询q,选取特征,训练分类器。

查询的相似度主要有两个方面:1)字符串上的相似度,例如:“企业所得税法”和“企业所得税法条文”,这种相似度可以通过编辑距离,Jaccard系数等度量;2 ) 语义上的相似度,例如“taobao”和“淘宝”,这种查询一般通过构造查询到点击文档的二部图,然后计算查询在结构上的相似度。

Shen[13]等在判断查询是否具有商品意图时,通过构建查询到文档的二部图G={V1∪V2,E} 其中V1表示查询的集合,V2表示文档集合,E包含V1到V2的边,如果查询vi点击过文档vj,则eij∈E, 边的权重一般设置为点击次数。然后在Q-D 二部图上做随机跳转,找到给定查询最相似的查询集合。

Simrank[24]是一种很通用的度量对象到对象之间相似关系的算法,它的核心思想是 “两个对象相似是因为他们都与一些相似的对象之间有关联”,例如在查询到点击的二部图上,查询q1和q2都点击了文档d1,d2, 已知d1和d2相似度很高,可以推出q1和q2也应该具有比较高的相似度。

在查询到点击的二部图上,Simrank是一种迭代增强的过程,算法的核心思想是:

公式 42

其中C1 ∈[0,1], N(q) 表示查询q边的个数,E(q)表示查询q指向的文档集合,s(i,j) 表示文档之间的相似度,其定义为:

公式 43

其中C2 ∈[0,1], N(d) 表示文档d边的个数,E(d)表示文档d指向的查询集合。直观上的理解为:1)查询和查询相似,是因为它们点击了相似的文档, 它们的相似度取它们点击文档相似度的平均值;2) 文档和文档相似是因为它们被相似的查询所点击,它们的相似度设定为点击它们的查询相似度的平均值。C1和C2作为调节因子,设定除本身之外同其他对象相似度的最大值。

算法初始化设置

公式 44

然后迭代更新s(q,q’)和s(d,d’) .

Simrank++[25]在Simrank的基础上加入了边的权重的影响,同时Simrank++ 认为对象之间的相似度应该与它们指向对象的交集个数成正比,例如两个查询,q和q’, 如果它们同时点击了多个网页要比它们只同时点击了一个网页相似度更高。

这里我们使用Simrank++ 计算查询串之间的相似度,我们首先需要构建查询到文档的二部图,详细的构图算法如图4-1所示。

由于生成的查询集合中,情色查询过多,我们采用基于规则的方法对这类查询进行过滤,同时如果一条边的两个顶点没有再链接到任何其他顶点,这些边和顶点对于计算Simrank意义不大,也删除这些边和顶点。

我们设置迭代次数为2,最终生成的二部图中包含查询84319个,文档个数 835644个。

图 41 构建Query-Document Graph

Simrank++算法需要计算任何两个节点之间的相似度,算法的复杂度为O(tn2k2) 其中t表示迭代次数,n表示节点的个数,k表示节点的平均邻居个数,由于节点个数接近1000000, 算法执行的效率很低,因此我们使用剪枝的方法, 对于每一个节点,我们只计算在二部图上通过两步能够到达的节点与它的相似度,设平均值为m,这样算法的复杂度为O(tnmk2) 由于m<

该算法主要的参数有C1,C2和t,为了获取相似的查询集合,我们设置C1=C2=0.8,t=10。

通过Simrank++ 计算得到相似度之后,需要为数据集中的每一个查询构造其相似查询的集合,然后使用该集合表示查询。我们对集合中的所有查询进行分词,将分词结果组成一个文档,然后使用公式4-1构造查询的特征向量。

构造相似查询集合的算法如图4-3所示。

图 42剪枝后的Simrank++算法

图 43 使用相似查询集合构建查询特征向量

该算法中主要有两个参数,Maxmum 和 threshold, Maxnum 为相似查询的最大数量,threshold 限制最小的相似度,实验中我们设置Maxnum=20, threshold=0.1. 最终我们得到的数据集合中,分词的总个数为5006,平均每个查询的长度为52.

使用点击文档的摘要信息表示查询

从用户的点击日志中,我们可以获得大量的查询点击信息,检索结果被认为是一种伪相关反馈,点击日志是隐相关反馈,跟查询的相关度更高,能够更加准确地表示查询,同时点击结果的信息可以根据历史记录离线计算好,解决了使用检索结果时存在的主要问题。

首先我们将查询日志按照查询词进行整合,得到每个查询对应的所有点击的集合,算法流程如图4-4所示,

对于Q-D图构建算法输出的查询集合Q中的每一个查询,我们选择Top k个点击,抓取这些点击对应的文档页面内容,从这些文档集合中选择表示查询的特征,实验中我们设置k为20,即对于每一个查询,我们最多抓取其点击次数最多的前20个文档。

Dai[1]等人使用检索结果对应的文档对查询进行分类,他们首先训练一个文档的文类器,用于标注文档是否具有商业意图,然后使用文档分类器的输出作为查询分类器的输入,判定查询是否具有商业意图。另外一种比较简单的方法是,直接将查询对应的所有文档整合为一个大文档,使用这个新的文档表示查询,由于文档长度较大,会使得查询的特征向量维度过高,增加了训练的难度,同时也可能会引入比较大的噪音。这里我们使用天网实验室Paradise[26]系统中的摘要生成工具,对查询的点击文档生成摘要,然后使用类似于检索结果摘要的方法表示查询。这里我们同样对点击网页的摘要信息作了预处理操作。

最终的数据集合中,词的总数为26798,平均每个查询的长度为311.

图 44 获取查询点击信息

实验和结果分析

我们使用最大熵作为分类器,最大熵分类器计算分类的条件概率,

公式 45

其中y表示类别,x表示查询的表示方式,∅(x,y,t) 示特征值表示特征值的权重, ft为词 t在x的特征向量中出现的频率

对查询特征向量中每一维的值进行归一化,作为最大熵分类器的输入,最大熵分类器的训练过程主要是估计λj的值,我们使用Zhang[27]的Maxent工具包训练最大熵分类器。

最大熵分类器的输出为对象属于类别的概率分布P(Y):

P(Y)=[p(y1|x),p(y2|x)….p(yk|x)] 公式 46

其中p(yi|x) 表示对象被判定为类yi的概率,默认情况下,最大熵分类器选择 作为分类的最终标签。对于判定查询的商业意图,k=2, 最大熵模型选择正类和负类概率的较大值作为模型的输出。

由于训练数据中,正类和负类的规模不平衡,我们使用一个参数α用于调节训练集中负类过多的影响。

公式 47

当α=0.5 时,即选择两类中的较大概率值作为分类的标签,实验中我们比较 α=0.5 和α=0.4 两种情况。

评价指标

精度(Precision),召回率(Recall),F值和准确率(Accuracy)定义如下:

公式 48

公式 49

公式 410

公式 411

其中tp, fp, tn ,fn表示的含义如表4-1所示。

表格 41 tp, fp, fn, tn 定义

Actual Class

Predicted class

+1

-1

+1

tp

(true positive)

fp

(false positive)

-1

fn

(false negative)

tn

(true negative)

我们使用F1和准确率来度量查询分类的效果。

实验结果和分析

构造数据集时,我们将训练集分成了四组,对于不同的训练集分别训练分类器,然后在测试集上做分类预测。对于最大熵训练分类器,设置公式4-7 中的α=0.5 获取最终的类别标签,分类结果如图4-5,4-6, 4-7和图4-8所示,使用四种特征进行分类获得的最优结果如表4-2所示。

图 45 Maxent+查询n-gram特征

图 46 Maxent+检索结果摘要信息

图 47 相似查询集合

图 48 点击文档的摘要信息

从实验结果我们可以看到,仅使用查询本身分词结果的1-gram信息,分类效果比较差,F1,在0.2-0.6 之间。

使用检索结果摘要信息作为特征的分类器,取得的分类效果比较好,即使只有很少量的数据(T4),F值也达到了第一种方法使用查询分词作为特征的分类器的最高水平。T3 使用3份数据,T2使用了2份数据,T3训练的分类器的分类结果比T2的还要稍差一些,可能是随着训练集的扩大,引入了比较多的噪音。当使用T2时,F值达到0.759, 效果最好。

使用相似查询的集合表示查询,训练分类器, F值最高为0.75,可以达到使用检索结果摘要信息同等的水平。

使用点击结果的摘要信息取得的分类效果稍微差一些,F值最高为0.696.

表格 42 四种特征最优结果的详细信息

Precision

Recall

F1

Accuracy

# Training Set

1-gram(M1)

0.8

0.478

0.598

0.719

3

检索结果摘要(M2)

0.898

0.657

0.759

0.891

2

相似查询集合(M3)

0.787

0.716

0.75

0.875

3

点击页面摘要(M4)

0.867

0.582

0.696

0.867

2

我们使用M1,M2,M3,M4分别表示使用四种特征训练的分类器。M2和M3的分类效果明显优于M1和M4. 同样是使用摘要信息,M4比M2稍差,不同的摘要生成算法对于查询分类影响比较大,可能是我们的摘要生成算法稍微差一些,Google生成的摘要信息更准确。

由于数据集合不平衡,负类是正类的三倍,分类结果倾向于类别中的“统治类”,即所有类别中数量最多的类,造成结果的召回率偏低,当我们使用T4训练分类器时,由于训练集合中正负类数量相等,得到的召回率就比较高。

为了平衡精度和召回率,我们设置公式4-7中的α=0.4 ,使用M2和M4 训练分类器,得到的分类结果如图4-9和4-10所示。

从图中可以得到,分类效果与训练集的数量成正比,随着训练集的扩大,分类效果有明显提升,对于M2, F值达到0.803, 对于M4, F值达到0.738,相对于α=0.5时,F值为0.759和0.696有了大约%6的提高。

图 49 M2 α=0.4

图 410 M4 α=0.4

实验结论

通过比较多组实验结果,我们得出以下结论:

1. 使用相似的查询集合表示查询或者点击文档的摘要信息都可以取得比较好的效果,这些表示查询的方法对于查询分类是非常有效的。

2. 随着训练集数据量的增加,分类效果越来越好,当只有很少量训练集的时候(T4), 最大熵分类器很难取得比较好的效果。

3. 最大熵分类器的分类效果会受到数据集类别不平衡的影响,可以通过调整α值,获得最优的分类效果。

在查询图上使用标签传播算法进行查询分类构造查询图

由于查询日志集合中查询词过多,我们首先需要从中选择一组查询词,然后根据这些查询词之间的关系构建查询图。上面我们使用Simrank++算法构造Q-D图的时候,生成了一个包含84319个查询的集合,集合中的查询之间的关联比随机采样的要更紧密,可以使得构建的查询图更为稠密, 这里我们直接使用这个集合来构建查询图

查询图 的形式化定义

公式 51

其中V=Q, EV*V 包含一组有向边,w:E→[0,+∞)

我们定义查询图为有向图,w用于控制边的权重,构造查询图就是计算任意两个查询之间边的权重,如果w(q,q’)≠0, 则在q和q’之间添加条有向边,且边的权重为w(q,q’),如果q和q’ 之间的关联具有对称性,则为q和q’添加两条权重相同,方向相反的边。

构建查询到查询之间关联的方法很多,主要可以利用以下特点构建查询图:

1. 查询字符串之间的相似度;

2. 查询是否点击过相同的文档;

3. 查询是否在同一个查询会话中出现过;

4. 查询点击结构上的相似度(Simrank++);

5. 查询点击的文档之间的链接关系;

6. 查询点击的URL在字符串上的相似度

本文我们使用1,2,3,4构建了四种查询图, 这四种特征都是对称的,构建的查询图为无向图。

通过查询字符串之间相似度构建查询图

度量字符串之间的相似度,可以通过编辑距离来计算,但是编辑距离只考虑单个字之间的差异,例如:查询词“淘宝”和“淘米”之间是没有什么关联的,但是通过编辑距离计算,两个查询词之间只有一个字不同,又由于查询通常较短,导致他们之间的相似度很高,边的权重也会比较高。

这里我们使用查询分词之后集合之间的Jaccard系数来度量两个查询之间的相似度。Jaccard系数的定义为:

公式 52

即两个集合交集的个数与并集个数的比例,当两个集合完全相同时Jaccard系数为1,如果两个集合没有交集,则Jaccard系数为0.

通过Jaccard系数构建查询图的详细算法如图5-1所示:

图 51 使用Jaccard 系数计算查询词之间的相似度,构建查询图

通过这种方式生成的查询图边的个数非常多,为了优化标签传播算法,构图的算法中我们使用参数α控制边的个数,如果Jaccard(q,q’)<α 则删掉q到q’的边。

我们使用QSGraph (Query String Graph) 表示通过字符串相似度构建的查询图。

使用点击文档构建查询图

对每一个查询q, Dq={(f1,u1),(f2,u2),….(fn,un)} 表示对于查询q用户点击过的文档集合,ui表示点击的URL, fi表示该URL点击的频率。

例如对于查询词“taobao”:

Dtaobao={(1735,www.taobao.com/),(56,tforum.taobao.com/),(10,member1.taobao.com/member/login.jhtml)......},

表示对于该查询,“www.taobao.com” 点击了1735次,“tforum.taobao.coim”点击了56次。

我们使用点击URL集合之间的Jaccard系数度量两个查询的相似度,为了实现上的简单,在生成点击URL集合的时候,我们不考虑频率的影响,只是将URL列表添加到集合中,对于查询词“taobao”,URL集合为

D’taobao =[www.taobao.com, tforum.taobao.com,…………………]

通过计算查询对应的URL集合之间的Jaccard系数,添加查询到查询之间的边,边的权重即为Jaccard系数的值, 这里也通过设置α值来控制图中边的规模。

我们使用UCGraph(URL Cover Graph) 来表示由点击文档构建的查询图。

使用Simrank++ 构建查询图

通过相似查询集合表示查询的方法中,我们使用Simrank++来计算查询之间的相似度,这里我们直接使用Simrank++得到的相似度的值,作为查询之间边的权重,构建查询图.

设置Simrank++算法中的C1=1,C2=1, 同样使用阈值t,过滤掉权重比较小的边。

Simrank++ 计算的相似度,表示查询在Q-D Graph结构上的相似度,我们使用QCSGraph(Query Click Structure Graph) 表示由Simrank++构建的查询图。

使用查询会话构建查询图

查询点击日志中包含用户和点击时间信息,可以通过分析点击日志获取大量的查询会话信息,查询会话为查询提供了丰富的上下文环境,能够很好的反映了用户和搜索引擎之间的交互行为。

Boldi[28]等人使用查询会话构建query-flow graph 用于表征用户的查询行为,query-flow graph中顶点为查询,w(q,q’)表示查询q和q’之间边的权重,p(q’|q)=w(q,q’) 表示当前用户检索了查询q,用户的下一步行为是检索查询q’的概率。

由于包含用户个人信息,查询会话经常被用在用户个性化的行为分析中,同时查询会话为查询提供了上下文信息,查询分类中可以使用这些上下文信息消除分类的歧义性。Cao[29][30]使用查询会话构建序列标注模型用于提高查询分类和查询推荐的效果。

同一个查询会话中的查询之间的关联非常紧密,这里我们通过使用查询会话构建查询图.

查询会话的划分

查询会话是同一个用户一序列查询的集合,可以有多种定义,比较常用的定义有:

1. 同一个用户在一段时间内向搜索引擎发起的一序列查询请求,这是按照时间来划分的,这种方法需要设置一个时间窗口,一般设置的窗口范围为1-50分钟;

2. 一个用户为了完成某个任务而进行的一序列查询请求,这是按照查询任务来划分的,一个任务可能包含多次查询,不同的查询任务包含的多个查询在时间上可能会有穿插。例如对于按照时间划分的查询会话s=[“马头琴演奏法”, “《银杯》的谱子”, “关于马头琴的应用知识”,“敖包相会的谱子”,“马头琴的敖包相会”, “关于马头琴演奏的知识”,“鄂尔多斯的祝酒歌”,“音乐谱子”], 其中包含了多个查询任务;

3. 基于内容的划分,这种方法主要是通过查询词主题的迁移来划分查询会话,首先需要分析查询词的语义信息,然后度量相邻查询词之间的主题变化,比较简单的方法可以通过直接计算相邻查询字符串的相似度来判定这两个查询是否属于同一个会话。

目前的查询会话研究方法一般会设定一个时间区间,然后在时间区间内使用基于内容或者基于任务的方法细分查询会话。本文中,我们使用时间来划分查询会话。

按照时间划分查询会话的形式化定义为:

设t(qi)表示查询qi 发出的时间,t∅ 表示两个查询属于同一会话时最大的时间间隔,一序列按照发出时间排序的查询称为一个查询会话,需要满足条件:

1. 对于 i≤j

2. s的超集中不存在包含s的查询会话

根据定义,按照时间划分查询会话的具体算法如下图所示:

图 52 按时间划分查询会话

实验中我们设置tФ=30分钟,用于划分数据集中的查询会话。

我们得到9541623个查询会话,查询会话的平均长度为1.55,查询会话长度出现的频率分布如图5-3所示。

图 53 查询会话的长度分布

图中横坐标表示查询会话的长度,纵坐标表示该长度查询会话出现的频率。查询会话一般较短,长度为1的查询会话最多,接近占总查询会话70%的比例,查询会话长度超过10的只占了不到整体0.3%的比例。

构建查询图

为了使用查询会话构建查询图,我们建立查询到其查询会话的映射关系,因为长度为1的查询会话只包含了单个查询串,和其他查询之间没有任何关联,我们将长度为1的查询会话删除掉,查询到包含该查询的会话之间的映射关系定义如下:

公式 53

其中 q表示查询,Sq表示包含查询q的查询会话集合,si 表示包含查询q的单个查询会话。

如果两个查询同时出现在一个查询会话中,就为两个查询添加一条边,边的权重为两个查询在查询会话集合中共现的次数。具体的算法流程如下图所示:

图 54 使用查询会话构建查询图

我们使用SessionGraph表示通过查询会话构建的查询图

四种查询图详细信息

对于查询图 我们主要统计了图上边的个数,有边的顶点个数,度数的分布,详细的统计信息如表5-1 所示,度数的分布如图5-5所示。

表格 51 四种查询图统计信息

有边的顶点个数

边数

平均度数

有边节点的平均度数

QSGraph

75948

14680222

174.1

193.3

UCGraph

69220

2951266

35

42.6

QCSGraph

84115

5170272

61.3

61.5

SessionGraph

45996

735464

8.72

16

我们可以看到,使用字符串相似度构建的查询图最为稠密,而且存在相当一部分度数大于100;通过Simrank++构建的查询图 包含有边的顶点个数最多;由于长度大于2的查询会话较少,SessionGraph最为稀疏。

图 55 四种查询图度数分布

标签传播算法

设数据X={x1,x2,…..xl,xl+1….xn} 和标签集合 C={c1,c2,…..ck}, X中包含l个有标签的数据和u个无标签的数据,l+u=n, l<

设G=(V,E) 表示查询图,L={x1,x2,…..xl} 表示有标签的数据, U={xl+1….xn}表示无标签数据, C={c+1,c-1} 我们使用Zhou[18]等人提出的标签传播算法在查询图上进行标签传播,具体的算法流程如图5-6所示。

图 56 标签传播算法

该算法的几点说明:

1. 对于查询图, w(i,j) 等于w(qi,qj) ,即qi到qj之间边的权重

2. 为了避免传播过程的自增强效应,设置w(i,i)=0

3. 算法第5.1步,每一个顶点从它的邻居节点接受标签信息,同时需要保持与初始化标签的一致性,设置调节因子α用于调节两方面影响的权重

4. α越大,表示标签需要尽可能满足图结构上的一致性,α越小,表示标签需要尽可能与初始化标记数据保持一致

5. 两次迭代之间的差异小于阈值或者到达指定的迭代次数时,算法终止

6. 对于Y值,如果xi出现在训练集中,且被标记为cj, 则yi的第j维标记为1,其他维度为0,如果xi不在训练集中,则yi=[0,0….0]

该算法最终收敛到[18][21]:

公式 54

其中I表示单位矩阵。得到F*后,我们取

公式 55

即取F*第i行中最大的值作为xi的类别。

实验及结果分析

我们构建了四种查询图,在这四种图上分别运行标签传播算法,为了衡量有标签数据集大小对传播算法的影响,我们使用数据集中的四份训练集分别初始化Y,然后运行标签传播算法。

标签传播算法中,主要的参数是α,我们通过实验得出,对于SessionGraph, α=0.6传播算法的效果最好,对于其他三个图,α=0.5时取得最优的分类效果。α越大,收敛越慢,α取[0.3,0.8] 时分类效果差别不大。平均需要迭代15次收敛。

对于标签传播算法,我们使用F1值和准确率评价其在测试集上分类效果。当初始化的有标签数据足够多的时候,一个好的图结构应该能够通过标签传播算法影响到尽可能多的点,我们使用

Coverage (C) = 标签传播算法能够影响到的顶点个数

来度量不同构图方式的优劣。

对于F*中正类和负类都为0的值,即F*i=[0.0,0.0], 标签传播过程中没有能够对这些顶点产生影响,由于数据集合中负类的比例远大于正类,当F*i=[0.0,0.0]时,我们将该查询标记为负类。

标签传播算法在测试集上的实验结果和分析

标签传播算法的在测试集上的详细分类结果如图5-7,5-8,5-9和5-10所示。

从图中我们可以看到,使用QSGraph进行标签传播,最终得到的分类效果很好,使用T3时,F1值达到0.8, 随着训练集数据的增加,分类效果有一定的提升,但是提升效果不是很明显。

使用UCGraph进行标签传播时,分类效果很差,主要原因是由于,当使用UCGraph时,测试集合中只有83个查询词在标签传播的过程中标签值有更新,其他大部分查询词都没有被传播到。

使用QCSGraph和SessionGraph进行标签传播也取得了不错的效果;当训练集到达一定量时,通过增加训练集的数量,分类效果提升不是很明显;我们可以通过很少量的训练数据,例如使用T1时, 获取很好的分类效果;同样这里也存在数据平衡的问题,当使用T4时,正类和负类个数相等,分类算法获得的召回率很高。

图 57 QSGraph+标签传播算法

图 58 UCGraph+标签传播算法

图 59 QCSGraph+标签传播算法

图 510 SessionGraph+标签传播算法

我们取四种图上效果最好的一组实验进行对比,详细的比较情况入表5-2所示:

表格 52 标签传播算法在四中图上取得的最优分类结果

Precision

Recall

F1

Accuracy

# Training Set

QSGraph

0.794

0.806

0.8

0.895

3

UCGraph

0.722

0.149

0.306

0.77

3

QCSGraph

0.78

0.687

0.73

0.867

3

SessionGraph

0.735

0.537

0.621

0.828

3

由上表可以得知,对于我们给定的测试集,QSGraph 分类效果最好,该图边的个数做多,同时,边上的权重比较大,w(i,j)>0.1,生成过程中已经将权重小于0.1的边都删除掉了, UCGraph效果最差。

四种图在使用不同训练集的情况下,对于测试集合,标签传播算法能够标记到的节点数量(Coverage)如表5-3所示:

表格 53 标签传播算法在测试集上的Coverage值

T1

T2

T3

T4

QSGraph

253

253

253

253

UCGraph

81

82

83

80

QCSGraph

220

221

221

220

SessionGraph

240

240

240

240

对于测试集,QSGraph的Coverage值最大,不能传播到的顶点个数最少,而UCGraph不能传播到的顶点最多,接近测试集总量的70%, 这样通过在UCGraph上传播得到F*后,大部分节点都被标记称为负类,造成分类的效果非常差。

测试集中的点无法被标记到的主要原因是:这些点在图结构上与训练集中的点之间不存在通路,我们统计了四种图上T3集合中的顶点到测试集中每一个顶点的最短路径,详细的情况如表5-4所示:

表格 54 T3集合中的顶点到测试集顶点之间的最短路径

可达节点个数

平均最短距离

QSGraph

253

4.16

UCGraph

83

9.25

QCSGraph

221

6.07

SessionGraph

240

2.63

对于UCGraph, 测试集中只有83个数据点与T3中的数据点之间有路径连通,测试集中大部分点同训练集中顶点之间没有通路,标签传播算法无法对这些节点进行标记。

标签传播算法和丰富查询表示方式方法的对比

QSGraph在标签传播算法上取得的分类效果最好,检索结果的摘要信息在使用有监督的机器学习方法时取得的分类效果最好,我们通过F1值,比较使用检索结果摘要信息和使用QSGraph进行标签传播的分类效果,详细的结果如图5-11所示

图 511 QSGraph+标签传播同M2分类效果对比

我们可以看到,查询图上的标签传播算法对于解决查询分类问题非常有效,可以达到使用扩展查询特征的有监督机器学习算法同等的效果。

当使用T4初始化标签时,标签传播算法的分类效果比较差,我们在QSGraph上统计了这20个顶点的度数,发现他们的平均度数为92.65,远低于该图顶点的平均出度 193.3,如果希望使用尽量少的数据集取得不错的传播效果,需要根据图的特征选择性标记节点,尽量选择那些连通性比较强的节点进行标记,同时还要考虑不同节点之间的关联影响。

标签传播算法在整个图上的覆盖度(Coverage)

一个好的图结构,应该能够使得标签传播算法影响尽可能多的点,即需要有比较大的Coverage值,标签传播算法才有可能在整个数据集上取得比较好的分类效果。

为了对比四种图结构,我们统计了四种图在全部数据集上的Coverage值,即F*中,F*i≠[0.0,0.0]的节点的数量,详细的统计信息如下表所示,四种图的顶点总量都是84319.

表格 55 标签传播算法在整个数据集上的Coverage 值

T1

T2

T3

T4

QSGraph

75482

75491

75498

75478

UCGraph

57172

57537

58064

56389

QCSGraph

83473

83659

83775

83343

SessionGraph

43432

43437

43450

43414

在整个数据集上,由于QCSGraph有边的节点最多,标签传播的过程,能够影响的顶点最多,未标记的节点最少,SessionGraph 有边的顶点最少,最终能够标记到的节点也最少。

随着训练集的增加,Coverage值并没有明显的扩大,这提示我们,可以通过标记很少的数据来度量图的Coverage值。

有些算法为每个顶点加上一个随机跳转的概率,或者是通过函数变换,将权值为0的边映射到一个很小的权值,使得整个图连通起来, 但是由于这些边的权重非常小,标签结果最终会倾向于数据中的“统治类”,即我们这里的负类,对于分类效果优化不明显,而且会增加计算过程的复杂度。

实验总结

1. 标签传播算法对于查询分类很有效,可以达到有监督机器学习方法同等的分类效果

2. QSGraph和QCSGraph 在测试集上的准确率和全部数据集上的Coverage都要优于UCGraph和SessionGraph;

3. 标签传播算法需要一个比较好的图结构才能取得比较好的传播效果,QSGraph和QCSGraph比较适合于查询分类的标签传播算法;

影响标签传播算法的主要因素有:

1. 图的结构,主要是图的连通性,连通性越好,每个节点能够接收到的信息越多,传播方法在整个数据集上的分类结果越准确;

2. 有标签节点的选择,如果要使每一个节点都被标记到,则要求图完全连通,或者是每一个连通分量都要包含一些有标签的节点。

我们可以通过两种途径对标签传播算法进行优化

1. 优化图的结构,增加图的连通性,同时,一个好的图结构,应当能够包含尽量多的先验知识

2. 对于有标签节点的选择,一种方法是通过分析图的结构,定义节点对于标签传播的重要度,选择那些比较重要的点进行人工标记,另外一种方法可以通过增加有标签节点的数量,使得有标签节点覆盖尽可能多的连通分支。

由于之前的四种构图方法,都只是反应了查询相似的一个侧面信息,例如QSGraph利用的是查询字符串的相似度,QCSGraph利用的是查询点击结构上的相似度,接下来我们通过合并多种查询图优化图的结构。

由于顶点之间互相关联,度量单个节点的对传播影响的重要度非常困难,我们采用增加有标签节点数量的方法优化标签传播算法。人工标记数据,对标记者的要求很高,需要是领域内的专家才能够得到比较准确的标记结果,标记大量数据劳动量太大,不太现实,这里我们首先使用最大熵分类器对测试集中的数据进行分类,然后选择置信度较高的点添加到训练集中,扩展有标签数据集的数量。

组合多种构图方式优化图结构组合构造查询图

上一节的四种图包含的都是查询相似的一个侧面信息,QSGraph利用的是查询字符串上的相似度;UCGraph利用查询点击文档之间的重合度;QCSGraph则是利用Query-Document 图结构上的相似度;SessionGraph反映了查询在检索任务上的关联度。

这里我们组合多种图,使得图结构包含更多的先验知识和更加准确的查询相似信息。

由于构图过程中,SessionGraph 权重的范围为[1,+∞) , 其他三种图边的范围都是(0,1], 边权重的范围不一致,首先我们将四种图的边按照节点进行归一化,设Vi 连接到k条边[e1,e2,….ek], 则

然后通过线性加权将不同的图合并成新的图:

公式 56

其中φi 表示不同图的权重。

本文我们构建了8种组合图,详细情况如表5-6所示。

表格 56 组合图的详细参数和统计信息

参数设置

有边的顶点个数

边数

SessionGraph+QCSGraph (CG1)

0.5, 0.5

84271

5837896

QCSGraph+QSGraph (CG2)

0.5, 0.5

84206

18781322

SessionGraph+QSGraph (CG3)

0.5, 0.5

80198

15291098

UCGraph+QSGraph (CG4)

0.5, 0.5

81867

17080226

UCGraph+SessionGraph (CG5)

0.5, 0.5

79884

3667596

UCGraph+QCSGraph (CG6)

0.5,0.5

84115

5173330

QSGraph+SessionGraph+QCSGraph (CG7)

1/3,1/3,1/3

84315

19378920

QSGraph+SessionGraph+QCSGraph+UCGraph (CG8)

0.3,0.3,0.3,0.1

84315

19380662

对于CG1—CG6, 为了简单起见,我们为不同的图设置了同样的权重。 由于QCSGraph 跟UCGraph 类似,都是利用查询点击的特征,QCSGraph 使用的点击特征更加丰富,因此,对于CG8,UCGraph的权重设置为0.1,其他三个图的权重设置为0.3。

对比表5-1, 组合图中有边的顶点个数和边数明显增加,特别是对于CG7和CG8有边的顶点个数接近于全部顶点数量(84319), 使得标签传播算法更可能影响到比较多的节点。

实验和分析

标签传播算法在组合图上分类实验结果的F1值和准确率如表5-7和表5-8所示。

表格 57 组合图上分类效果的F1值

Training Set 1

Training Set 2

Training Set 3

Training Set 4

CG1

0.694

0.768

0.8

0.500

CG2

0.756

0.791

0.809

0.573

CG3

0.754

0.781

0.785

0.567

CG4

0.750

0.779

0.806

0.554

CG5

0.689

0.715

0.677

0.533

CG6

0.696

0.727

0.738

0.527

CG7

0.744

0.803

0.797

0.505

CG8

0.738

0.794

0.800

0.570

表格 58 组合图上分类效果的准确率值

Training Set 1

Training Set 2

Training Set 3

Training Set 4

CG1

0.855

0.887

0.902

0.602

CG2

0.871

0.891

0.898

0.573

CG3

0.883

0.891

0.891

0.648

CG4

0.867

0.887

0.898

0.648

CG5

0.855

0.863

0.844

0.617

CG6

0.813

0.859

0.867

0.629

CG7

0.879

0.902

0.898

0.664

CG8

0.875

0.898

0.898

0.664

从表5-7和5-8中我们可以看到,除了CG5和CG6之外,其他图使用T3时,F1值都接近0.8,准确率都接近0.9, 分类效果很好;CG5组合SessionGraph和UCGraph之后,边的个数依然比较少,分类效果比较差;CG6组合QCSGraph和UCGraph,由于两个图都是根据点击文档构造的,特征之间互补性较强,组合意义不大。

我们比较使用SessionGraph+QCSGraph 和单独使用两种图的分类效果,图5-12和5-13分别为标签传播算法在三种图上分类效果的F1值和准确率。

图 512 SessionGraph+QSGraph F1值

图 513 SessionGraph+QSGraph准确率

从上面两个图中我们可以看到,使用SessionGraph+QCSGraph时,分类效果比单独使用其中任何一个图都有明显的提升。

类似的,当使用SessionGraph+QCSGraph时也比使用单个图有了很大的提升,详细的实验结果如图5-14和图5-15所示。

使用UCGraph+QSGraph时,相比UCGraph取得了很好的优化,效果基本与单独使用QSGraph持平,当有标签数据比较少的时候,即使用T4时,UCGraph+QSGraph比使用QSGraph的准确率有了很大的提升。详细的比较结果如图5-16和图5-17所示。

图 514 SessionGraph+QCSGraph F1值

图 515 SessionGraph+QCSGraph 准确率

图 516 UCGraph+QSGraph F1值

图 517 UCGraph+QSGraph 准确率

标签传播算法在组合图上的覆盖度(Coverage)

表5-9和表5-10分别列出了对与各种组合图,标签传播算法在测试集和整个数据集上的覆盖度,即Coverage值。

从表中可以看到,大部分组合图都可以取得比较高的Coverage值。

对比表5-3,5-5和表5-9,5-10,我们发现,通过组合多种图,图的连通度变高,能够有效减增加标签传播算法的覆盖度,组合后的图比单个图更有效,更适合用于标签传播算法。

表格 59 组合图在测试集上的覆盖度

T1

T2

T3

T4

CG1

254

254

254

254

CG2

254

255

255

254

CG3

255

255

255

255

CG4

253

253

253

253

CG5

246

246

246

246

CG6

220

221

221

220

CG7

256

256

256

256

CG8

256

256

256

256

表格 510 组合图在整个数据集上的覆盖度

T1

T2

T3

T4

CG1

84246

84246

84264

84234

CG2

84198

84202

84203

84198

CG3

79910

79914

79915

79909

CG4

81663

81672

81679

81661

CG5

78341

78347

78361

78366

CG6

83473

83659

83775

83343

CG7

84315

84315

84315

84315

CG8

84315

84315

84315

84315

实验结论

1. 组合图能够更加准确的反映查询之间的关系,标签传播算法在组合图上可以取得很好的分类效果

2. 组合图可以很好的提高标签传播算法的覆盖度

3. 不同的图需要表示的特征相互独立,组合起来才会有效果,例如CG5,由于UCGraph和QCSGraph使用的特征之间重叠度较高,组合之后分类效果没有明显提升。

组合图主要的问题是:不同图权重的设置。实验中我们简单均分图的权重,组合多种图时,参数比较多,找到最优的参数值比较困难,在将来的工作中,我们会尝试找到最优的参数组合。

扩展有标签的数据集通过最大熵分类器扩大有标签的数据集

上一节我们通过组合多种图,更改图的结构优化标签传播算法,这里我们考虑另外一个维度,通过增加有标签的数据优化传播算法。

上一节的算法主要是优化标签传播算法中的W值,即优化图中边的结构,这一节,增加有标签的数据,相当于是优化标签传播算法中Y的值,使得初始化标签集合Y中包含更多的有效数据。

人工扩大有标签的数据集合不太现实,这里我们首先使用有标签的数据训练最大熵分类器,然后使用最大熵分类器对无标签数据进行分类预测,使用分类的结果扩大有标签数据集。

设最大熵分类器的输出为Mi=[p1,p2….pk], 有两种方法可以用于更新Y值:

1. 直接将最大熵输出的概率分布作为Y的初始值, Yi=[p1,p2,…pk]

2. 从最大熵分类结果中选择置信度比较高的点,将该点标记为, 初始化Yi=[p1=0,….pj-1=0,pj=1,pj+1=0…,pk=0]

这里我们选择第二种方法扩大有标签的数据集,更新Y值,我们使用点击文档的摘要信息作为最大熵分类器的特征。

具体的算法如图5-18所示:

算法的几点说明:

1. 对于正类和负类我们设置了不同的置信度,一般可以取α=λ=0.9

2. 由于集合中正负类不均衡,最大熵分类器输出的负类个数远大于正类个数,我们设置一个平衡因子,限制负类和正类的比例,一般设置k=2~3

由于要使用点击文档的摘要信息,我们对84319个查询词,每一个选择按照频率排序的前20个点击进行爬取,总共需要爬561335个文档, 最终能够获得到内容的文档数为153584,能够获得点击摘要的查询个数为59331,平均每个查询获取到3.01个点击摘要信息,如果查询没有能够得到点击摘要信息,则取该查询分词的1-gram作为特征。

图 518 使用最大熵分类器增加有标签数据

实验结果和分析

实验中,我们设置α=0.8, λ=0.9,k=2.5, 由于数据集中负类比较多,我们要求负类的置信更高,平衡正负类数量。实验结果的F1值和准确率如表5-11和表5-12所示。

我们对比使用最大熵分类器扩展有标签的数据集和使用原始数据集,标签传播算法的分类结果,详细的F1值和准确率对比如图5-19——5-26 所示。

从图中我们可以看到,通过最大熵模型增加有标签的数据集之后,在测试集上,分类效果有了明显的提升,特别是对于UCGraph, 分类效果提高了130%, 分类的F1值也达到了0.7。

表格 511 使用最大熵初始化Y值,标签传播算法分类的F1值

T1

T2

T3

T4

UCGraph+Maxent

0.604

0.673

0.697

0.357

QSGraph+Maxent

0.772

0.784

0.809

0.536

QCSGraph+Maxent

0.723

0.78

0.78

0.553

SessionGraph+Maxent

0.748

0.720

0.775

0.508

表格 512 使用最大熵初始化Y值,标签传播算法分类的准确率

T1

T2

T3

T4

UCGraph+Maxent

0.836

0.863

0.871

0.676

QSGraph+Maxent

0.887

0.895

0.902

0.574

QCSGraph+Maxent

0.871

0.895

0.895

0.641

SessionGraph+Maxent

0.879

0.863

0.887

0.523

使用最大熵模型增加的有标签数据的详细情况如表5-13所示

表格 513 最大熵分类器扩展后的有标签数据集合

T1

T2

T3

T4

正类

1719

1310

1664

1328

负类

8458

10188

9881

118

扩展后有标签数据个数

6016

4585

5824

413

当使用T1, T2, T3 时,最大熵分类器输出的负类集合远大于正类结合,当使用T4时,输出的正类集合要大于负类集合,由于该集合数据量过少,最大熵分类器在测试集上的准确率只有69%,从实验结果的图中可以得知,使用T4训练最大熵分类器扩展有标签的数据集,标签传播算法并没有明显的效果提升,对于SessionGraph, 分类的准确率还有比较明显的下降,我们需要使用准确率比较高的最大熵模型,才能够有效增加有标签数据集的数量,否则,引入的噪音过大,可能会造成负面影响。

图 519 UCGraph+Maxent F1值

图 520 UCGraph+Maxent 准确率

图 521 QSGraph+Maxent F1值

图 522 QSGraph+Maxent 准确率

图 523 QCSGraph+Maxent F1值

图 524 QCSGraph+Maxent 准确率

图 525 SessionGraph+Maxent F1值

图 526 SessionGraph+Maxent 准确率

扩展有标签数据集合后标签传播算法的覆盖度(Coverage)

表5-14和表5-15列出了扩展有标签的数据集之后,标签传播算法在测试集和整个数据集上的覆盖度,即Coverage值。

表格 514 扩展数据集后,标签传播算法在测试集上的覆盖度

T1

T2

T3

T4

UCGraph+Maxent

134

128

141

90

QSGraph+Maxent

254

255

255

253

QCSGraph+Maxent

233

233

238

232

SessionGraph+Maxent

243

242

244

242

表格 515 扩展数据集后,标签传播算法在整个数据集的覆盖度

T1

T2

T3

T4

UCGraph+Maxent

62724

62126

63340

57351

QSGraph+Maxent

75807

75742

75791

75505

QCSGraph+Maxent

83827

83873

83981

83377

SessionGraph+Maxent

44698

44461

44738

43477

对比表5-3和5-5,扩展有标签的数据集之后,标签传播算法的Coverage有所提升,但是效果不是特别明显,可能是由于最大熵分类器输出的置信度比较高的点都与训练集中原有的点关联比较紧密,他们在图上的连通性本来就比较好,加入这些点扩展有标签的数据集,难以扩大有标签的点对于图连通分量的覆盖范围。

实验总结

通过最大熵分类器扩大有标签数据集合,也可以使得标签传播算法取得比较大的优化,这个算法主要有几点需要注意:

1. 最大熵分类器的分类准确度要比较高,新引入的有标签数据集包含的噪音较少,标签传播算法才能取得比较好的优化。

2. 正负类置信度α和λ的设置,对于商品意图的识别,正类明显较少,我们设置α<λ

3. 正负类数据的平衡,使用T2时,最大熵分类器输出的负类数量接近正类数量的8倍,我们要求传播算法中,正类和负类比较平衡,算法中我们使用倍数调节因子k来处理数据平衡的问题。

相比于5.4中优化图结构的方法,增加有标签数据的方法主要有两个缺陷:

1. 通过额外的分类器对无标签的数据进行分类预测,然后将结果添加到有标签的数据集合中,可能会引入新的噪音;

2. 很难有效增加标签传播算法的覆盖度

合并图的方法,要求不同的图包含的对象特征之间相互独立,同时由于各个图之间边的权重范围不同,如何获取最优的整合方式比较困难,当找到一个适合标签传播算法的图结构比较困难时,我们可以通过增加有标记数据量的方法优化标签传播算法。

整合最大熵分类器和标签传播算法使用标签传播算法扩大最大熵分类器的训练集

在5.5节中我们首先在有标签的数据集上训练最大熵分类器,然后使用最大熵分类器的输出优化标签传播算法,这一节我们首先使用标签传播算法训练分类器,然后选择置信度较高的数据添加到训练集中,训练最大熵分类器,详细的算法如图6-1所示

图 61 通过标签传播算法扩大最大熵分类器的训练集

训练最大熵分类器时,我们使用查询的点击文档摘要信息作为特征,使用标签传播算法扩展训练集时我们设置α=0.8,λ=0.97,k=3.

使用标签传播算法扩展后,有标签数据集的详细情况如下表所示。

表格 61 使用标签传播算法扩展后训练集数量和详细信息

T1

T2

T3

T4

正类

5354

3639

5136

33322

负类

42634

47675

42640

6097

扩展后训练集个数

21416

14556

20544

24388

最大熵分类器在扩展后的训练集上进行训练,分类结果的F1值和准确率如表6-2和6-3所示

表格 62 最大熵分类器的F1值

T1

T2

T3

T4

Maxent+UCGraph

0.579

0.672

0.724

0.454

Maxent+QSGraph

0.752

0.761

0.823

0.484

Maxent+QCSGraph

0.695

0.783

0.797

0.486

Maxent+SessionGraph

0.786

0.809

0.797

0.493

表格 63 最大熵分类器的准确率

T1

T2

T3

T4

Maxent+UCGraph

0.813

0.852

0.863

0.371

Maxent+QSGraph

0.855

0.855

0.902

0.449

Maxent+QCSGraph

0.832

0.879

0.887

0.488

Maxent+SessionGraph

0.883

0.895

0.887

0.469

同只使用原始训练集的最大熵分类器相比较,F1值和准确率如图6-2和图6-3所示。

从实验结果中我们可以得到,当使用T1,T2和T3时,通过标签传播算法扩展的数据集在最大熵分类器上取得了很好的分类效果,尤其是当使用Maxent+QSGraph时F1值超过了0.82;当使用T4时,原始的最大熵模型效果最好,由于T4数据过少,标签传播算法的准确率很低,将准确率比较低的输出结果加入到训练集中,带入的噪音很大,影响了分类效果。

图 62 分类结果的F1值比较

图 63 分类结果的准确率比较

通过标签传播算法扩展数据集之后,最大熵分类器的分类效果可以取得很好的提升,这个算法也要求标签分类算法有比较高的准确率,避免最大熵的训练集中引入过多的噪音。

使用co-training 结合最大熵和标签传播算法

第4章中,我们使用的是查询点击文档的特征,训练最大熵分类器,第5章中我们使用标签传播算法,利用的是查询之间的关联关系,两种分类器使用的特征相互独立,这一节我们尝试使用co-training 的方法结合两种分类器,详细的算法如图6-4所示。

图 64 co-training 结合最大熵分类器和标签传播算法

算法说明:

1. 对于M,我们设置正类的置信度为0.8,负类的置信度为0.9

2. 对于LP,设置正类的置信度为0.8,负类的置信度为0.97

3. 设置mp=lpp=200, mn=lpn=600

4. 第六步,如果新加入L中的数据,LP和M的标签不一致,则将该数据点放回U中

5. 第七步,最终的类别概率定义为最大熵分类器输出概率和标签传播算法概率值的乘积

6. 实验中我们设置k=10

对于标签传播算法,我们使用QSGraph,对于最大熵分类器,我们使用点击文档的摘要信息,我们对比单独使用QSGraph和最大熵分类器的结果,F1值如图6-5所示。

图 65 co-training和标签传播,最大熵分类器的对比

从图中我们可以看到,对于T1,T2,T3, co-training 取得和QSGraph相当的效果,对于T4,co-training 取得了非常好的优化。

Co-training 的本质是互相平滑两个分类器的输出结果,对于给定的对象,如果两个分类器达成一致并且都给出了错误标签,迭代多次改变不了分类的效果,当两个分类器出现不一致时,通过互相平滑,可能最终能够得到正确的分类结果。

当使用T1,T2,T3时,两个分类器都可以取得不错的效果,他们之间的一致性比较高,co-training 迭代很难取得比较大的优化,但是当数据集比较小的时候,例如使用T4时,两个分类器的分类效果都很差,他们之间的一致性较弱,co-training 就可以取得比较大的提升。

当有标签的数据集很少的时候,我们可以通过co-training优化分类的效果。

总结和未来工作

本文主要的贡献:

1. 提出了使用点击文档的摘要信息优化查询分类的方法;

2. 使用Simrank++构建相似的查询词集合,使用查询词集合丰富查询的特征,优化查询分类;

3. 通过查询之间的关联,构造了四种查询图,验证标签传播算法在不同查询图上的有效性;

4. 通过组合多种查询图和扩展有标签数据集两种方式,优化标签传播算法;

5. 组合标签传播算法和最大熵分类器,在只有很少量有标签数据集的情况下,获取不错的查询分类效果,当数据量达到一定规模时,可以先使用标签传播算法扩展最大熵分类器的训练集,可以很好的优化最大熵分类;

6. 通过查询商业意图的识别验证了上述方法的有效性。

本文我们只是通过判定查询的商业意图验证了算法的有效性,后续需要更多的实验验证在其他类别上,例如按照查询的主题进行分类,文中算法的有效性。

标签传播算法的效果主要受两方面因素的影响:

1. 图结构的信息,构造的图形应该尽可能包含比较多的领域先验知识

2. 有标签数据集的选择,有标签的数据集应该尽可能覆盖图上的每一个连通分量

在已有图结构的情况下,如何选择最少的有标签数据,取得比较好的传播分类效果?如果能够解决这样一个最优化问题,我们就可以通过尽量少的人工标记获取非常好的分类效果,这个工作非常有意义同时也比较困难,我们会在后续的研究中尝试解决这个问题。

在5.4节中我们为不同的图设置相同的权重,组合形成新的查询图,这样的权重设置可能无法取得最优的效果,如何根据问题的特征和图的特性选择最优权值,也是我们将来需要研究的问题。

参考文献

[1] Honghua (Kathy) Dai, Lingzhi Zhao, Zaiqing Nie, Ji-Rong Wen, Lee Wang and Ying Li, “Detecting online commercial intention”, WWW '06 Proceedings of the 15th international conference on World Wide Web

[2] Andrei Broder, “A taxonomy of web search”, SIGIR Forum(2002),Volume 36(2):3-10.

[3] Daniel E. Rose and Danny Levinson, “Understanding user goals in web search”, WWW '04 Proceedings of the 13th international conference on World Wide Web

[4] Ricardo Baeza-Yates, Liliana Calderón-Benavides and Cristina González-Caro, “The Intention Behind Web Queries”, In Proceedings of STRING PROCESSING AND INFORMATION RETRIEVAL (SPIRE 2006).

[5] Uichin Lee, Zhenyu Liu and Junghoo Cho, “Automatic identification of user goals in Web search”, WWW '05 Proceedings of the 14th international conference on World Wide Web.

[6] Yiqun Liu, Min Zhang, Liyun Ru and Shaoping Ma, “Automatic Query Type Identification Based on Click Through Information”, AIRS’ 2006.

[7] Atsushi Fujii,“Modeling anchor text and classifying queries to enhance web document retrieval”, WWW '08 Proceeding of the 17th international conference on World.

[8] Bernard J. Jansen, Danielle L. Booth and Amanda Spink, “Determining the user intent of web search engine queries”, WWW '07 Proceedings of the 16th international conference on World Wide Web.

[9] Yumao Lu, Fuchun Peng, Xin Li and Nawaaz Ahmed, “Coupling feature selection and machine learning methods for navigational query identification”, CIKM '06 Proceedings of the 15th ACM international conference on Information and knowledge management.

[10] KDDCUP 2005. http://www.acm.org/sigs/sigkdd/kdd2005/kddcup.html

[11] Dou Shen, Jian-Tao Sun, Qiang Yang, Zheng Chen. Building Bridges for Web Query Classification. SIGIR 2006.

[12] Jian Hu, Gang Wang, Fred Lochovsky, et al. Understanding User’s Query Intent with Wikipedia. WWW 2009.

[13] Dou Shen, Ying Li, Xiao Li, Dengyong Zhou. Product Query Classification. CIKM 2009.

[14] Qi Guo, Eugene Agichtein. Exploring Searcher Interactions for Distinguishing Type of Commercial Intent.

[15] Xiaojin Zhu. Semi-Supervised Learning Literature Survey.

[16] Blum, A., Mitchell, T. Combining labeled and unlabeled data with co-training. COLT: Proceedings of the Workshop on Computational Learning Theory, Morgan Kaufmann, 1998, p. 92-100.

[17] Wei Wang, Zhi-Hua Zhou. A New Analysis of Co-Training. Proceedings of 27th International Conference on Machine Learning, 2010.

[18] Dengyong Zhou, Olivier Bousquet, Tomas Navin Lal et al. Learning with Local and Global Consistency. In Advances in Neural Information Processing Systems, 2003.

[19] Xiaojin Zhu. Semi-Supervised Learning with Graphs.

[20] R. Baeza-Yates. Graphs from search engine queries. In Theory and Practice of Computer Science (SOFSEM),volume 4362 of LNCS, pages 1–8.

[21] Xiao Li, Ye-Yi Wang Alex Acero. Learining Query Intent from Regularized Click Graphs. SIGIR 2008.

[22] 搜狗查询点击日志。http://www.sogou.com/labs/dl/q.html.

[23] Kappa coefficient. http://en.wikipedia.org/wiki/Cohen's_kappa.

[24] Glen Jeh, Jennifer Widom. Simrank: A Measure of Structural-Context Similarity. SIGKDD 2002.

[25] Loannis Antonellis, Hector Garcia Molina, Chi Chao Chang. Simrank++: Query Rewriting through Link Analysis of the Click Graph.

[26] Paradise. http://sewm.pku.edu.cn/src/paradise/.

[27] Maxent. http://homepages.inf.ed.ac.uk/lzhang10/maxent.html.

[28] Paolo Boldi, Francesco Bonchi, Carlos Castillo. The query-flow graph: model and applications. CIKM 2008.

[29] Huanhuan Cao, Daxin Jiang, Jian Pei et al. Context-Aware Query Suggestion by Mining Click-Through and Session Data. KDD 2008.

[30] Huanhuan Cao, Derek Hao Hu, Dou Shen et al. Context –Aware Query Classification. SIGIR 2009.

致谢

首先要感谢李晓明教授的关心和指导,从他的身上我看到了学者的严谨和渊博,他对问题的看法,总是能够让我理清研究问题的本质和方向。

感谢闫宏飞老师,在三年的生活和学习中,闫老师给了我很大的鼓励和帮助,学习上,闫老师指导我写作论文,帮助我完善研究的思路,督促我按照进度完成实验,闫老师组织我们每周的论文阅读,每周组会跟我们讨论研究和工作上的想法,很好的提升了我的学习和研究能力;实验室的项目工作中,闫老师的严谨和高要求,使我能够更好的锻炼项目实践,快速的提升了自己的项目开发能力;生活上,闫老师总是很耐心的帮我分析遇到的问题,提出自己的建议,在这里向闫宏飞老师表示衷心的感谢。

感谢彭波老师,从您的课开始,我才踏入了信息检索的研究门槛。

感谢何靖师兄,何靖师兄研究的态度非常认真,知识非常渊博,他总是能够通过现象去问思考问题的本质,与他的沟通和交流使我受益匪浅。

感谢赵鑫师兄对我的帮助和指导,毕设的过程中,赵鑫师兄一直在同我讨论想法,帮助我完成实验,即使在生病的过程中,还通过电话跟我讨论研究的进展,他的严谨和认真也让我感触很深,这里对赵鑫师兄表示特别的感谢和祝福。

感谢单栋栋师兄经常跟我一起吃饭,帮我处理数据,调整论文结构,指导我的编程实践。

感谢毛现领师兄在毕设的过程中跟我讨论方法中存在的问题,帮助我思考解决问题的方法。

感谢严睿师兄在学习和研究上对我的指导和帮助。

感谢寿司和樊凯师兄,遇到各种技术难题时,你们都能够帮忙讨论解决。

感谢小树,小闪,研究生的生活因为你们更添了一份乐趣。

感谢陆炀,武浊,大师,尹珺,李烁,张旭东,刘亚宁,江翰以及天网实验室所有的师兄师弟师妹们,你们使我三年的生活非常的开心和充实。

感谢我的室友们,戴阳刚,星仔和片哥,谢谢你们对我生活和学习上的帮助。

最后感谢我的父母和朋友们,谢谢您们长久以来的帮助和支持。

再次感谢所有人,谢谢大家。

北京大学学位论文原创性声明和使用授权说明

原创性声明

本人郑重声明: 所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。

论文作者签名: 日期: 年 月 日

学位论文使用授权说明

本人完全了解北京大学关于收集、保存、使用学位论文的规定,即:

按照学校要求提交学位论文的印刷本和电子版本;

学校有权保存学位论文的印刷本和电子版,并提供目录检索与阅览服务;

学校可以采用影印、缩印、数字化或其它复制手段保存论文;

在不以赢利为目的的前提下,学校可以公布论文的部分或全部内容。

(保密论文在解密后遵守此规定)

论文作者签名: 导师签名:

日期: 年 月 日

query 频率分布

query 频率分布123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346