我们在前几周的专栏里讲解了最经典的信息检索(Information Retrieval)技术以及基于机器学习的排序学习算法(Learning to Rank),并且花了一定的时间分享了查询关键字理解(Query Understanding)这一关键搜索组件的核心技术要点。上周,我们还详细讨论了如何从线上和线下两个层面来评价一个搜索系统。
这周我们的分享将转移到搜索的另外一个重要部件:文档理解(Document Understanding)。也就是从文档中抽取各种特性,来帮助检索算法找到更加相关的文档。
文档理解最基本的一个步骤就是给文档分类(Classification),看这些文档表达什么类别的信息。今天我就来和你聊一聊文档分类的一些基本概念和技术,让你对这方面的开发与研究有一个基本认识。
文档分类的类型
如果我们把文档分类看做一个监督学习任务的话,那么在各式应用中就经常使用以下几种类型的文档分类。
第一个类别就是二元分类,或者称为二分文档分类,目的就是把文档分成两种不同的类别。比如,把文档分成“商业类”或者“非商业类”。
第二个类别自然就是多类分类,也就是判断文档是否属于好几种不同类别中的某一个。比如,把文档划归为“艺术”、“商业”、“计算机”或者“运动”类别中的某一类。
当然,在多类分类的下面,我们还可以分三个小类别。
第一个小类别,是“多类 - 单标签 - 硬分类”(Multiclass,Single-Label,Hard Classification)。什么意思呢?就是说每一个文档只能在多类分类问题中被赋予唯一的标签,并且所有互相的类别是不兼容的。
第二个小类别,就是“多类 - 多标签 - 硬分类”(Multiclass,Multilabel,Hard Classification),也就是说每一个文档可以被认为属于多个类别,然而每个这样的分类都是唯一确定的。
最后一个小类别则是“多类 - 软分类”(Multiclass,Soft Classification),也就是认定每个文档以概率的形态属于多个类别。
在这个分类基础上,还有一种分类的方法,那就是可以把所有的类别看做一个平面的结构(Flat)或者是有组织结构的。通常情况下,如果把文档分类到一个层次组织(Hierarchical Structure)里就叫“层次分类”(Hierarchical Classification)。在这样的情况下,一个文档同时属于这个层次结构上从根节点到叶子节点的所有类别。一般来说,上层节点相对于下层节点更加抽象。
文档分类经典特性
了解了文档分类的基本类型之后,我们接着来讨论文档分类所用到的经典特性。