Bag of Words(词袋模型)

词袋模型的提出是为了解决文档分类,主要应用在 NLP(Natural Language Process), IR(Information Retrival),CV(Computer Vision)等领域。本文以计算机视觉领域为例进行讲解。

模型假设

一个文本或文档可以看做是一袋子单词,不考虑其语法和词序关系,每个词都是独立的。(这里要尤其注意,BoW不考虑词序的时间和空间上的信息)

示例

这样两个文本

John likes to watch movies. Mary likes too.
John also likes to watch football games.
对以上构造词典:

{
    "John": 1,
    "likes": 2,
    "to": 3,
    "watch": 4,
    "movies": 5,
    "also": 6,
    "football": 7,
    "games": 8,
    "Mary": 9,
    "too": 10
}

则之前的两个文本可以表示为

[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

上面这种向量的表示方法,就是词袋模型了,其中每个分量表示该词在文本中出现的次数,可以看到词序信息已经丢失,每个文档看做一系列不相关的词的集合。

应用举例

在计算机视觉领域,图片分类是很典型的应用,在视觉分类系统中,由于图像的特征并非像文档中能够直接对单词进行赋值,一般直接对图像的像素进行特征表示,得到特征向量。因此需要四人步骤:特征检测-特征表示-词汇表生成-分类器设计,一般的特征表示大都采用局部不变特征表示方法(SIFT特征)进行特征表示。
例如,一个图片可以由若干个local features(或者叫做patch)表示,用K-means方法把相似的patch聚类,每个聚类中心叫做 codeword,类比于 NLP 中的 word;同样的,图片就类比文本文档。用每个图片得到的 codeword 构建词典,叫做 codebook,得到真正无冗余的特征表示-视觉词袋,类比 NLP 中的词典。随后结合视觉词袋和词频概念得到每个待分类图像的词袋直方图模型对图像进行表示,如下图,之后依次训练分类器,对新输入的图像进行分类。

你可能感兴趣的:(计算机视觉)