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