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 中的詞典。隨後結合視覺詞袋和詞頻概念得到每個待分類影象的詞袋直方圖模型對影象進行表示,如下圖,之後依次訓練分類器,對新輸入的影象進行分類。