以Google 、百度为代表的搜索引擎在用户输入
一个查询后,返回一个“相关”结果的列表,然而这个
检索结果列表往往并不能让用户感觉满意1 一方面
由于查询歧义的原因,搜索引擎返回的结果并不都
是用户需要的信息,用户需要顺序浏览列表来找到
真正相关的结果;另一方面,对于在搜索引擎返回的
大量结果,用户通常只选择浏览Top10 的检索结
果,由于检索结果没有进行合理的总结与组织,而仅
仅是简单的罗列, Top10 的检索结果可能是不全面
的,因此用户获取到的信息可能是不全面的1 检索
结果聚类可以很好地解决这两方面的问题,一方面
对于有歧义的查询,通过检索结果聚类,可以按照不
同语义将检索结果聚成不同类别;另一方面,检索结
果聚类能够对检索结果进行全面的分析处理,可以
给出一个全面的关于被查询对象的介绍1
在以往的研究中,检索结果的聚类方法可以分
为两类:基于文档的方法和基于标签的方法[1 ]1 基
于文档的方法通过传统文本聚类方法,把搜索引擎
返回的文档聚成多个类别,然后从各类别中抽取出
合适的标签来标注各个类别,相关的工作包括文献
[224 ]等1 基于标签的方法首先从文档集中抽取有代
表性的词、短语、片段作为类别标签,然后对抽取的
类别标签进行合理的评价与筛选,以抽取的标签为
基础做进一步的文档聚类工作,主要工作包括文献
[ 528 ]等1
1 层次化检索结果聚类
本文的层次化聚类方法主要包括以下几个步
骤:
1) Snippet 的获取与整理
通过对搜索引擎的返回结果网页分析处理提取
出Snippet 1 如果将聚类算法嵌入到搜索引擎系统
后,可以直接从搜索引擎获取到Snippet 1
2) 层次化检索结果聚类
①类别标签的抽取与选择
通过对Snippet 的分析,抽取并选择出有价值
的类别标签;
②由类别标签进行层次化检索结果聚类
由抽取出的类别标签构造出基础类别,再对基
础类别进行聚类,形成层次化聚类结果1
111 改进的标签选择算法
1) 候选标签评价的DF 特征
DF 是指包含标签l 的文档个数,把DF 作为评
价标签的一个统计指标是基于这样的假设:如果一
个候选标签在很多文档中都出现,那么该候选标签
具有比较广泛的代表性,因此可以作为一个类别的
标签1 例如:输入查询词“猎豹”,那么在检索返回的
文档中“, 汽车”“、动物”等词语会在大量的文档中出
现,因此“汽车”、“动物”,就会成为比较好的类别候
选标签1 但利用DF 评价有一个明显的问题,语言中
的功能词如“一个”、“这个”等也会在大量的文档中
出现,产生较高的DF 值,从而影响DF 评价的效果1
2) 候选标签评价的查询日志特征
查询日志记录了以往搜索引擎用户输入的查询
词,从以往的查询中找到和本次查询相关的所有查
询,并对这些相关的查询进行分析,会对类别标签的
选择有较大的帮助1 例如:利用百度的“相关关键词
搜索”,输入“猎豹”,可以得到以往的相关查询的结
果如图1 所示:
Fig1 1 Query log of“liebao”1
图1 “猎豹”相关查询日志
从图1 可以看出,“长风”、“飞腾”、“汽车”这些
非常有意义的标签都具有很高的“被搜索次数”1 由
于查询日志来自于以往搜索引擎的用户,因此集成
了人的背景知识,实际上是一种非常有价值的背景
知识库,因此利用查询日志对于检索结果聚类将有
很强的指导意义1
3) 候选标签评价的查询词上下文特征
检索结果聚类与一般的文档聚类的一个重要的
不同点是:对检索结果聚类时,有一个可以利用的重
要信息就是查询词,这是一般的文档聚类问题所不
具备的1 正是因为这一点,使得检索结果的聚类有
了更加明确的指向性,也就是应该从查询词角度出
发,对检索结果进行聚类1 查询词的上下文和查询
的关系最为密切,因为上下文往往对查询词进行了
限定或者解释,因此更加有利于确定查询词的语义1
例如:查询词是“猎豹”,图2 是利用百度查询“猎豹”
得到的结果,可见“猎豹”的上下文中“汽车”具有较
高的出现频率1
4) 多特征融合的候选标签评价算法MIL EM
DF 统计特征、查询日志特征及查询词的上下文
特征是评价类别标签的有效特征1 这里我们提出了一
种利用DF 进行量化,把3 种特征按照一定的权重进
行融合的多特征融合模型MIL EM(multi2feature in2
tegrated label ext raction model) 1 多特征融合模型
Fig1 2 Demonstration of query context1
图2 查询词上下文示意
MIL EM 将3 种特征按照不同权重加权进行排序,
表示为
wl = aw df + bwlog + cwcontex ,
其中a , b , c 表示不同特征权重的加权系数, wl表示
标签l 的权重, w df表示DF 特征的权重, wlog表示查
询日志特征的权重, wcontext表示关键词上文的特征
的权重1 为了计算方便, 每一种特征的权重计算均
采用标签的DF 作为权重1 因此上面的权重可以进
一步表示为:
wl = ( a + bf ( l) + cg ( l) ) DF( l) ,
f ( l) =
0 , 如果标签l 未出现在日志中,
1 , 如果标签l 出现的日志中,
g ( l) =
0 , 标签l 没有出现在查询上下中文,
1 , 标签l 出现在查询上下文中,
其中DF( l) 表示标签l 的DF 值1
在改进的标签选择算法中,通过将DF 特征、查
询日志特征以及查询词上下文特征融合到统一的模
型MIL EM 中对类别标签进行评价1
112 层次化聚类的算法GBCA
通过上面的标签抽取与排序,可以得到一些有
价值的标签,由这些有价值的标签可以进一步形成
一些基本的类别;下一步,再由这些基础类别相互合
并形成更高层次的类别,从而建立起层次化的聚类
结果1
定义11 基础类别1 基础类别是指层次化聚类
结构中最底层的类别,基础类别不再包含其他类别
而是直接包含文档1
在我们的层次化检索结果聚类中,基础类别的
形成通过抽取的类别标签来构建,即包含某个标签
的文档作为一个基础类别1 具体表示为
设D = { d1 , d2 , ⋯, dn } 为搜索引擎返回的结
果, L = { l1 , l2 , ⋯, lm } 为类别标签,函数f ( d , l ) 是
二值函数,表示文档d 是否包含标签l ,定义为
f ( d , l) =
1 , d 包含标签l ,
0 , d 不包含标签l ,
那么类别标签l 所形成的类别C( l) 表示为C( l ) =
{ d| d ∈D , f ( d , l) = 1}1
在层次化聚类中,我们提出了一种新的聚类算
法,为了表示方便我们将这种算法命名为基于图的
聚类算法GBCA(graph based clustering method)1 算
法的主要思想是:通过对基础类别关系图的分析来
形成层次化的聚类结果1
定义21 基础类别关系图1 以基础类别为顶点,
基础类别间的相关性为边, 基础类别间的相关度为
边的权重的带权图G = ( V , E , W) 称为基础类别关
系图1
具体的基础类别关系图的构建过程如下:
设V = { V 1 , V 2 , ⋯, V m} 是由基础类别构成的
图G 的顶点集,其中每个顶点V i = { d1 , d2 , ⋯, dt }
是由若干文档组成的基础类别,图G 的边集E 定义
为:顶点V i 和顶点V j 间存在一条边ei , j ,当且仅当
V i ∩V j ≠§,也就是说如果两个基础类别构成的顶
点间存在一条边, 当且仅当这两个基础类别的交集
非空,边ei , j的权重表示为w i , j ,权重集W 表示为
W = { wi , j | wi , j =| V i ∩ V j | } 1
以查询“猎豹”为例,我们取20 个基础类别生成
的基础类别关系图如图3 所示,图3 的左边是20 个
基础类别标签,图中没有表示出边的权重,从图3 可
以看出基础类别间构成了一个复杂的关系网络1
Fig1 3 Basic cluster relationship graph of“liebao”1
图3 查询“猎豹”的基础类别关系图
基于图的聚类算法:
在得到了基础类别关系图G 后,进一步就要通
过对基础类别关系图G 的分析,将顶点划分成若干
类1 以往的研究中, 采用图来聚类或对图进行划分
也有一些方法[9210 ] , 但这些方法通常需要比较大的
计算开销,由于检索结果聚类是检索过程中实时进
行的,因此计算开销大的方法往往不能适用,我们这
里采用了一种非常简单的基于图的聚类算法, 具体
算法描述如下1
输入:基础类别关系图G;
输出:对基础类别聚类的结果C = { C1 , C2 , ⋯,
Cu}1
1) 将图G 的所有边按照边的权重进行排序;
2) 取出一条没有使用过的权重最大的边ei , j ,
并标注该边已经被使用过;
3) 如果ei , j的两个顶点V i 和V j 都没有标注类
别,则给顶点V i 和V j 标注相同的类别;
如果顶点V i 标注了类别, V j 没有标注类别,
则把V j 标注成和V i 相同的类别;
如果顶点V j 标注了类别, 而V i 没有标注类
别,则把V i 标注成和V j 相同的类别;
如果顶点V i 和V j 都已经标注了类别则跳到
4) 执行;
4) 如果所有顶点都已经标注完毕或者所有的
边都已经使用过,则停止,否则跳到2) 执行;
5) 将所有标注了相同类别的顶点归为一类,如
果仍有顶点没有标注类别,则独立成为一类,这样形
成了基础类别的父类别: C = { C1 , C2 , ⋯, Cu} ;
6) 对于父类别Ci ,取类别Ci 中前k 个基础类
别标签权重最大的标签作为父类别的标签, k = c %×
| Ci | and k < 10 ,这里令c = 401
我们仍然以“猎豹”为例, 图4 是对图3 应用
GBCA 算法后得到的结果图:
Fig1 4 Demonstration of GBCA1
图4 GBCA 算法聚类结果展示
图4 中左边是20 个基础类别标签,右边是经过
GBCA 算法后形成的聚类结果, 相互连接的顶点形
成一类1 从图4 可以看出, 查询“猎豹”的基础类别
被划分成3 个更高层次的父类别, 作为汽车品牌的
语义(结点3 ,1 ,4 ,0 , ⋯) 和作为“动物”的语义(结点
2 ,5 ,9 , ⋯) 进行了有效的划分1
2 检索结果聚类的评价
211 评价方法
与一般聚类评价不同,检索结果的聚类需要对
类别标签和文档在类别中的分布分别评价1 以往的
工作中,对于检索结果聚类的评价通常有4 种方式:
1) 用户调查法
通过用户使用,给出一个系统的评价,缺点是主
观评价、人工操作,评价代价高1
2) P @N 评价类别标签抽取
采用类似信息检索中的P @N 评价指标来对类
别标签进行评价的方法1
3) F2Measure 、信息熵
对聚类结果中文档分布进行评价,也是一般的
聚类评价标准1
4) 利用检索结果评价
通过对最终检索结果质量的评价来评价检索结
果聚类的效果,是一种间接评价1
本文采用了F2Measure[6 ]和P @N[728 ]指标对类
别标签和文档分布分别进行评价1
212 评价数据集合构建
从目前了解的情况看,在检索结果聚类评价中,
还没有一个标准的测试集1 因此我们构建了自己的
评价集合1 具体构建方法是:我们找了30 个不同类
型的查询,如表1 所示,查询的类型包括:歧义的查
询、命名实体、一般关键词1
Table 1 List of Different Query Types
表1 不同类型的关键词列表
Query Type Query Examples
Ambiguous Query Beetles , Apple , ⋯
Name , Entities Mike , ICT ⋯
General Query Joke , Music ⋯
对于每个查询都从“百度”搜索引擎下载了100
个检索结果,共3000 篇文档,人工对每个查询返回
的结果进行了分类,并给每个类别标注适当的标签,
利用人工标注的集合作为标准评测集1
张 刚等:一种层次化的检索结果聚类方法545
213 实验结果
首先对聚类标签的抽取和排序进行评价,希望
通过此实验验证多特征融合的类别标签抽取方法的
有效性,按照多特征融合的算法,将DF 特征、查询
日志特征及查询词上下文特征,以不同权重进行组
合,如表2 所示:
Table 2 Feature Combination by Different Weight
表2 加权系数变化形成不同特征组合
Weight Factor
a b c
Feature
1 0 0 df
0 1 0 log
0 0 1 cnt
1 215 0 df + log
1 0 215 df + cnt
1 215 215 df + log + cnt
df : DF ; log : guery log ; cnt : query context1
对于聚类标签抽取和排序的评价采用P @N 作
为标准,评价的结果如表3 所示:
Table 3 Evaluation of Feature Combination
表3 不同特征排序算法评价
Feature P @3 P @5 P @7 P @10
df 0147 0147 0144 0139
log 0148 0142 0135 0128
cnt 0154 0147 0140 0132
df + log 0149 0147 0148 0143
df + cnt 0150 0151 0148 0144
df + log + cnt 0151 0154 0149 0146
从表3 可以看出,多个特征融合的方法要好于
单独采用某一方面特征所取得的结果,同时采用3
类特征时效果达到最好,可见3 方面的特征能够很
好的相互补充,本文所采用的3 类特征刻画了类别
标签的特点1
其次,将对层次化聚类结果进行评价1 实验中
将我们的聚类结果与STC 算法[1 ]和Snaket 聚类算
法[8 ]进行了比较,在比较中, STC 采用了原论文提
出的标签抽取算法,Snaket 和GBCA 算法采用了相
同的标签抽取算法1 由于STC 聚类的结果是扁平
的,GBCA 算法和Snaket 算法都是层次化聚类算
法,因此在比较时,将层次化算法形成的最高层与
STC 的扁平结构进行比较1 实验中分别比较了类别
标签和文档的分布,在类别标签比较中采用了P @N
的标准,而文档的分布采用了F2Measure 标准1 聚类
标签的比较结果如表4 所示:
Table 4 Label Extraction Evaluation of Different
Clustering Algorithm
表4 不同聚类方法标签抽取比较
Algorithm P @3 P @5 P @7 P @10
STC 0129 0133 0130 0131
Snaket 0143 0147 — —
GBCA 0146 0147 0148 —
从聚类结果的标签评价可以看出, GBCA 算法
效果最好,由于有的算法生成的类别数较少,因此有
些评价值空缺1 与STC 算法的结果相比较,Snaket
和GBCA 算法的结果要明显提高,这说明本文的多
特征融合的标签抽取算法的性能比STC 的标签提
取算法效果更好1 虽然GBCA 和Snaket 采用了相同
的标签抽取算法,但聚类过程中会重新生成顶层类
别的标签,而GBCA 的顶层类别标签结果更好1
文档分布评价的F2Measure 值如图5 所示:
Fig1 5 F2Measure of different clustering algorithm1
图5 不同聚类算法F2Measure 比较
从F2Measure 评价方面可以看出, GBCA 算法
体现了比较好的聚类性能1 而Snaket 算法主要利用
了标签的特点而没有重视文档在类别中的分布因
素,因此在性能上逊色于STC 和GBCA 算法1