一、前言
詞袋模型是早些年使用的詞向量模型,該模型假設(shè)每個詞都是獨立的,僅僅使用詞在文章中的頻率來決定如何表達詞,并將每個詞的表達通過組合來表征文章。
二、原理以及實現(xiàn)
該模型的具體構(gòu)建流程如下:
假設(shè)我們有如下三篇簡短文章
1、今天 我們 去 唱歌 明天 我們 去 爬山
2、 我們 去 爬山
3、小名 喜歡 打球
1、構(gòu)建詞袋
將文章的所有詞提取出來放在一個袋子中:
dict = ['今天', '唱歌', '喜歡', '小名', '我們', '打球', '明天', '爬山']
共得到包含有8個詞的詞袋,那么每篇文章的維度就固定為8
2、統(tǒng)計文章詞頻
使用詞袋的每個詞去文章中一一統(tǒng)計,并按照順序記錄詞頻,比如文章1中,“今天”出現(xiàn)1次,“唱歌”出現(xiàn)1次...“爬山”出現(xiàn)1次
得到三篇文章的詞向量分別如下:
1、[1 1 0 0 2 0 1 1]
2、[0 0 0 0 1 0 0 1]
3、[0 0 1 1 0 1 0 0]
3、代碼實戰(zhàn)
使用sklearn進行實戰(zhàn)
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['今天 我們 去 唱歌,明天 我們 去 爬山',
'我們 去 爬山',
'小名 喜歡 打球']
vec=CountVectorizer()
X = vec.fit_transform(corpus)
print(X.toarray())
三、特點
1、優(yōu)點
- 簡單快捷,易于理解
2、缺點
- 向量稀疏度較高,當詞袋較大時,容易出現(xiàn)維度災(zāi)難
- 假設(shè)了文本中詞與詞之間相互獨立,上下文沒有關(guān)聯(lián)性,有悖于人類語言