前面几篇论文都感觉在用词方面我没有怎么讲究,比如我通常笼统的说“查询分类”。其实“查询分类”还可以细分为两种,一种是我一直在强调的“意图分类(intent classification)”,另一种就是“主题分类(topic classification)”。今天看了一篇貌似在05年的ACM KDDCUP上面的优胜者用到的方法,从后面的分类情况来看,这个应该是“主题分类”。论文题目是《Building Bridges for Web Query Classification》,翻译过来是《Web查询分类中的桥接》,作者是Dou Shen,香港科技大学。
摘要
查询分类(QC)是将短小而且模糊的查询分类到一个目标目录集合。QC又很多的应用,比如网页排序、精准高高和个性化等等。本论文的方法是05KDD的优胜解决方案。首先在离线方式下为一个中间目录建立了一个桥接分类器。然后这个分类器再被利用到在线模式并且通过这个中间目录来映射用户查询到目标目录。一个创新性是利用了中间目录层地相似性分布,而无需再目标目录改变时再重新训练。另外,还将介绍一些目录选择方法来减少中间层地目录数目,这样有利于减少计算量。顺便提以下KDD,简单来说,就是将输入查询映射到一个目标目录中。在本方法中,首先是将输入查询映射到一个中间目录,然后再映射到目标目录。两个重要的问题是,第一个分类器需要重新训练如果目标目录结构改变了,第二个是中间层目录采用ODP目录,这个目录太庞大,需要的计算量将非常的巨大,所以需要一种目录选择地算法来减小中间层的目录。
问题定义
查询分类就是将用户查询q分类到一个按照权重从达到小排序地列表c1,c2,...,cn。目标目录是一个目录树,并且每个节点代表一个目录。每个节点地语义就是从根节点到该节点地路径上面地标签信息。
查询和目录丰富
因为查询和目录通常只包含很少的词语,所以我们需要对他们进行扩展来丰富他们地表示。一个直接的方法就是提交他们到搜索引擎来得到返回的页面,然后需要抽取特征。三种特征提取方法:标题、片段和全文。另外需要得到的信息就是一个网页地目录信息,比如google的目录搜索。查询分类问题能够转换成传统的文本分类问题,如果我们在网上能够找到一些训练数据。我们用的方法是通过中间层,因为中间层中每个目录的文档我们知道。所以需要一个函数来映射中间层到目标层。一个是直接映射方式,目标目录从根节点到叶子节点的路径上面的标签如果全部包含在中间层的一个路径上面,那么中间层这个路径上面叶子节点的文档全部都会直接映射到目标层。但是这样还有一部分会丢失,所以需要一种扩展,用wordnet等语义资源来进行同义词扩展。
分类方法
精确匹配分类
上面提到了,对于一个查询,将其放到搜索引擎中进行查询,然后对于返回的n个页面,每个页面有其类别。直接的分类方法就是精确匹配。最终的类别就是分数最大的类别,分数的计算是对于一个类别,计算这n个页面类别能够映射到这个类别的总数。该方法的缺点就是召回率很低。
SVM
为了解决低召回率的问题,一些统计分类器就要利用起来,比如SVM。总共需要分3步:构造训练集、训练SVM分类器、对每个查询,丰富它的特征然后分类。该分类方法的确能够提高一些召回率,但是明显的缺点就是如果目标类别变换了,需要重新用精确匹配的方法来构造训练数据,并且重新构造分类器。这个问题的解决方法就是构造桥接。
新方法:桥接分类器
前面提到的SVM是直接进行类似于传统文本分类的方法,这里介绍的是一种桥接的分类方法。查询为一层,中间层和目标层。在计算给定查询和目标类别之间的关系的时候需要用到查询在中间层类别中的分布。需要计算的就是给定q属于t的条件概率,论文中经过一些推导,有一个计算公式。利用了中间层目录和目标层目录之间的相似度以及查询和中间层之间的相似度分布来进行计算。因为变化的是目标层,中间层是固定的,所以在训练分类器的时候只需要训练q和中间层的分类器一次,以后不会变化。而中间层和目标层的关系的计算不需要分类器训练,只需要利用一个最大似然估计就行了。
目录选择
中间层包含的目录太多会导致计算过量。两个方法用来进行目录选择:全概率和互信息。全概率是对么个中间层的目录打分,通过它能够产生目标目录的概率。互信息通常是用来找词之间的关联的。论文中有一个计算词与目录之间互信息、目录与目录之间互信息的公式,然后在通过中间层目录对于目标层目录的贡献度来进行打分。
论文中有非常多的实验结论,这里就不列举出来了。虽然这是一篇基于目录的查询主题分类的文章,但是思想很大程度上面都有相似之处。比如分类的几部分,分类方法的选择。这里一个新的思维是,如果对于目标有些遥远,可以通过一个可能更加接近的中间层来进行过渡。