摘要:詞袋模型詞袋模型簡稱,所謂的詞袋模型是一種用機器學(xué)習(xí)算法對文本進(jìn)行建模時表示文本數(shù)據(jù)的方法。再進(jìn)行一些其他的特征工程后,就可以將數(shù)據(jù)帶入機器學(xué)習(xí)算法進(jìn)行分類聚類了。總結(jié)下詞袋模型的三部曲分詞,統(tǒng)計修訂詞特征值與標(biāo)準(zhǔn)化。
詞袋模型
詞袋模型(Bag of Words,簡稱BoW),所謂的詞袋模型是一種用機器學(xué)習(xí)算法對文本進(jìn)行建模時表示文本數(shù)據(jù)的方法。
詞袋模型假設(shè)我們不考慮文本中詞與詞之間的上下文關(guān)系,僅僅只考慮所有詞的權(quán)重。而權(quán)重與詞在文本中出現(xiàn)的頻率有關(guān)。
與詞袋模型非常類似的一個模型是詞集模型(Set of Words,簡稱SoW),和詞袋模型唯一的不同是它僅僅考慮詞是否在文本中出現(xiàn),而不考慮詞頻。也就是一個詞在文本在文本中出現(xiàn)1次和多次特征處理是一樣的。在大多數(shù)時候,我們使用詞袋模型。
向量化詞袋模型首先會進(jìn)行分詞,在分詞之后,通過統(tǒng)計每個詞在文本中出現(xiàn)的次數(shù),我們就可以得到該文本基于詞的特征,如果將各個文本樣本的這些詞與對應(yīng)的詞頻放在一起,就是我們常說的向量化。向量化完畢后一般也會使用TF-IDF進(jìn)行特征的權(quán)重修正,再將特征進(jìn)行標(biāo)準(zhǔn)化。 再進(jìn)行一些其他的特征工程后,就可以將數(shù)據(jù)帶入機器學(xué)習(xí)算法進(jìn)行分類聚類了。
總結(jié)下詞袋模型的三部曲:分詞(tokenizing),統(tǒng)計修訂詞特征值(counting)與標(biāo)準(zhǔn)化(normalizing)。
在詞袋模型的統(tǒng)計詞頻這一步,我們會得到該文本中所有詞的詞頻,有了詞頻,我們就可以用詞向量表示這個文本。這里我們舉一個例子,例子直接用scikit-learn的CountVectorizer類來完成,這個類可以幫我們完成文本的詞頻統(tǒng)計與向量化,代碼如下:
from sklearn.feature_extraction.text import CountVectorizer vectorizer=CountVectorizer() corpus=["I come to China to travel", "This is a car polupar in China", "I love tea and Apple ", "The work is to write some papers in science"] print vectorizer.fit_transform(corpus)
我們看看對于上面4個文本的處理輸出如下:
(0, 16) 1 (0, 3) 1 (0, 15) 2 (0, 4) 1 (1, 5) 1 (1, 9) 1 (1, 2) 1 (1, 6) 1 (1, 14) 1 (1, 3) 1 (2, 1) 1 (2, 0) 1 (2, 12) 1 (2, 7) 1 (3, 10) 1 (3, 8) 1 (3, 11) 1 (3, 18) 1 (3, 17) 1 (3, 13) 1 (3, 5) 1 (3, 6) 1 (3, 15) 1
可以看出4個文本的詞頻已經(jīng)統(tǒng)計出,在輸出中,左邊的括號中的第一個數(shù)字是文本的序號,第2個數(shù)字是詞的序號,注意詞的序號是基于所有的文檔的。第三個數(shù)字就是我們的詞頻。
我們可以進(jìn)一步看看每個文本的詞向量特征和各個特征代表的詞,代碼如下:
print vectorizer.fit_transform(corpus).toarray() print vectorizer.get_feature_names()
輸出如下
[[0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0] [0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0] [1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0] [0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1]] [u"and", u"apple", u"car", u"china", u"come", u"in", u"is", u"love", u"papers", u"polupar", u"science", u"some", u"tea", u"the", u"this", u"to", u"travel", u"work", u"write"]
可以看到我們一共有19個詞,所以4個文本都是19維的特征向量。而每一維的向量依次對應(yīng)了下面的19個詞。另外由于詞"I"在英文中是停用詞,不參加詞頻的統(tǒng)計。
由于大部分的文本都只會使用詞匯表中的很少一部分的詞,因此我們的詞向量中會有大量的0。也就是說詞向量是稀疏的。在實際應(yīng)用中一般使用稀疏矩陣來存儲。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19793.html
摘要:在自然語言處理詞袋模型與向量化中我們講到在文本挖掘的預(yù)處理中,向量化之后一般都伴隨著的處理,那么什么是,為什么一般我們要加這一步預(yù)處理呢這里就對的原理做一個總結(jié)。 TF-IDF 在自然語言處理——詞袋模型與向量化中我們講到在文本挖掘的預(yù)處理中,向量化之后一般都伴隨著TF-IDF的處理,那么什么是TF-IDF,為什么一般我們要加這一步預(yù)處理呢?這里就對TF-IDF的原理做一個總結(jié)。 文本...
閱讀 2898·2021-11-23 09:51
閱讀 3410·2021-11-22 09:34
閱讀 3314·2021-10-27 14:14
閱讀 1511·2019-08-30 15:55
閱讀 3350·2019-08-30 15:54
閱讀 1074·2019-08-30 15:52
閱讀 1893·2019-08-30 12:46
閱讀 2851·2019-08-29 16:11