1. 程式人生 > >Bag-of-words 詞袋模型基本原理

Bag-of-words 詞袋模型基本原理

Bag-of-words詞袋模型最初被用在資訊檢索領域,對於一篇文件來說,假定不考慮文件內的詞的順序關係和語法,只考慮該文件是否出現過這個單詞。假設有5類主題,我們的任務是來了一篇文件,判斷它屬於哪個主題。在訓練集中,我們有若干篇文件,它們的主題型別是已知的。我們從中選出一些文件,每篇文件內有一些詞,我們利用這些詞來構建詞袋。我們的詞袋可以是這種形式:{‘watch’,'sports','phone','like','roman',……},然後每篇文件都可以轉化為以各個單詞作為橫座標,以單詞出現的次數為縱座標的直方圖,如下圖所示,之後再進行歸一化,將每個詞出現的頻數作為文件的特徵。

近幾年,在影象領域,使用Bag-of-words方法也是取得了較好的結果。如果說文件對應一幅影象的話,那麼文件內的詞就是一個影象塊的特徵向量。一篇文件有若干個詞構成,同樣的,一幅影象由若干個影象塊構成,而特徵向量是影象塊的一種表達方式。我們求得N幅影象中的若干個影象塊的特徵向量,然後用k-means演算法把它們聚成k類,這樣我們的詞袋裡就有k個詞,然後來了一幅影象,看它包含哪些詞,包含單詞A,就把單詞A的頻數加1。最後歸一化,得到這幅影象的BoW表示,假如k=4,每幅影象有8個小塊(patch),那麼結果可能是這樣的:[2,0,4,2],歸一化之後為[0.25,0,0.5,0.25]。

同樣,在語音識別領域,也有Bag-of-words方法也大施了拳腳。假設一段語音訊號有2秒長,我們取每幀長40ms,幀移10ms,就可以得到一小段一小段的語音訊號,然後提取每一小段上的音訊特徵,假設這裡使用12維MFCC,那麼有多少個小段語音訊號,就有多少個MFCC特徵向量。我們的目標是來一段語音訊號,判斷它的情感類別。我們的做法是:取一定數量的MFCC特徵向量,將它們聚成k個類,那麼這裡的詞袋裡的詞就是這k個類別。對於一段語音訊號,我們對其進行分段之後,將各小段分配到這k個類別上,那麼,每個類別上就對應了這一段語音訊號裡屬於該類的段的個數。最後歸一化,得到其特徵表示。