自然语言处理之Bag-of-words,TF-IDF模型

转自:https://blog.csdn.net/m0_37744293/article/details/78881231

Bag-of-words,TF-IDF模型

Bag-of-words model (BoW model)忽略文本的语法和语序,用一组无序的单词(words)来表达一段文字或一个文档,近年来BoW 模型被广泛应用于计算机视觉中,与应用于文本的BoW 类比,图像的特征(feature)被当作单词(Word)。 
应用于文本的BoW model

John likes to watch movies. Mary likes too.

John also likes to watch football games.
  • 根据上述两句话中出现的单词,构建一个字典(dictionary):

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

该字典中包含10个词,每个单词有唯一索引,注意它们的顺序和出现在句子中的顺序没有关联,根据这个词典,我们将上述两句话重新表达为下面的两个向量:

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

 [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
  •  

这两个向量共包含10个元素, 其中第i个元素表示字典中第i个单词在句子中出现的次数. 因此BoW模型可认为是一种统计直方图 (histogram). 在文本检索和处理应用中, 可以通过该模型很方便的计算词频。 
应用于计算机视觉的BoW model 
图像可以类比于文档(document),图像中的单词(words)可以定义为一个图像块(image patch)的特征向量,那么图像的BoW模型即是“图像中所有图像块的特征向量得到的直方图”。建立BoW模型主要为如下几个步骤: 
1. 特征提取 
假设有N张图像, 第i张图像图像可由n(i)个image patch组成, 也即可以由n(i)个特征向量表达. 则总共能得到sum(n(i))个特征向量(即单词). 
特征向量可以根据特征问题自行设计, 常用特征有Color histogram, SIFT, LBP等. 
2. 生成字典/码本(codebook) 
对上一步得到的特征向量进行聚类(可以使用K-means等聚类方法), 得到K个聚类中心, 用聚类中心构建码本. 
3. 根据码本生成直方图 
对每张图片, 通过最近邻计算该图片的每个 “单词”应该属于codebook中的 “哪一类”单词, 从而得到该图片对应于该码本的BoW表示。 
tf-idf模型 
目前,真正在搜索引擎等实际应用中广泛使用的是tf-idf模型。tf-idf模型的主要思想是:如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来把文章d和其他文章区分开来。该模型主要包含了两个因素: 
1) 词w在文档d中的词频tf (Term Frequency),即词w在文档d中出现次数count(w, d)和文档d中总词数size(d)的比值: 
tf(w,d) = count(w, d) / size(d) 
2) 词w在整个文档集合中的逆向文档频率idf (Inverse Document Frequency),即文档总数n与词w所出现文件数docs(w, D)比值的对数: 
idf = log(n / docs(w, D)) 
tf-idf模型根据tf和idf为每一个文档d和由关键词w[1]…w[k]组成的查询串q计算一个权值,用于表示查询串q与文档d的匹配度: 
tf-idf(q, d) 
= sum { i = 1..k | tf-idf(w[i], d) } 
= sum { i = 1..k | tf(w[i], d) * idf(w[i]) }

猜你喜欢

转载自blog.csdn.net/Suan2014/article/details/82688247