Bag-of-words model (BoW model) 最早出現在NLP和IR(information retrieval)領域. 該模型忽略掉文本的語法和語序, 用一組無序的單詞(words)來表達一段文字或一個文檔. 近年來, BoW模型被廣泛應用於計算機視覺中. 與應用於文本的BoW類比, 圖像的特征(feature)被當作單詞(Word).
應用於文本的BoW model:
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). 在文本檢索和處理應用中, 可以通過該模型很方便的計算詞頻.
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]) }
http://coolshell.cn/articles/8422.html