1. 程式人生 > >通俗理解Bag-of-words模型入門

通俗理解Bag-of-words模型入門

總括

Bag-of-words模型是資訊檢索領域常用的文件表示方法

在資訊檢索中,BOW模型假定對於一個文件,忽略它的單詞順序和語法、句法等要素,將其僅僅看作是若干個詞彙的集合,文件中每個單詞的出現都是獨立的,不依賴

於其它單詞是否出現。(是不關順序的)

也就是說,文件中任意一個位置出現的任何單詞,都不受該文件語意影響而獨立選擇的。那麼到底是什麼意思呢?那麼給出具體的例子說明。

2 例子

Wikipedia[1]上給出瞭如下例子:

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). 在文字檢索和處理應用中, 可以通過該模型很方便的計算詞頻.

但是從上面我們也能夠看出,在構造文件向量的過程中可以看到,我們並沒有表達單詞在原來句子中出現的次序這也是bag of words的一個缺點,但是聽師兄說,很多情況簡單的用bow特徵產生的結果就比較好了

3 適用場景

現在想象在一個巨大的文件集合D,裡面一共有M個文件,而文件裡面的所有單詞提取出來後,一起構成一個包含N個單詞的詞典,利用Bag-of-words模型,每個文件都可以被表示成為一個N維向量。

變為N維向量之後,很多問題就變得非常好解了,計算機非常擅長於處理數值向量,我們可以通過餘弦來求兩個文件之間的相似度,也可以將這個向量作為特徵向量送入分類器進行主題分類等一系列功能中去。

總之通過有效的辦法轉換為向量之後,後面的一切都變得明朗起來了,因為至少得想辦法讓計算機理解吧!