1. 程式人生 > >sklearn文字特徵提取CountVectorizer 和 TfidfVectorizer

sklearn文字特徵提取CountVectorizer 和 TfidfVectorizer

fromsklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer

1. CountVectorizer

vectorizer=CountVectorizer(analyzer = "word",  \

                            tokenizer =None,    \

                            preprocessor =None, \

                            stop_words =None,   \

                            max_features =5000)

將文字文件集合轉換為token計數矩陣

該實現使用scipy.sparse.csr_matrix生成計數的稀疏表示。

如果您沒有提供先驗字典,而且也不使用某種特徵選擇的分析器,那麼特徵的數量將等於通過分析資料找到的詞彙量。

(1) analyzer字串,{'單詞','字元','char_wb'}或可呼叫

特徵是否應該由單詞或字元n-gram組成。 選項“char_wb”僅從字邊界內的文字建立字元n-gram; 單詞邊緣的n元素用空格填充。

如果通過了可呼叫的函式,它將用來從原始未處理的輸入中提取特徵序列。

(2) tokenizer可呼叫或無(預設)

重寫字串標記化步驟,同時保留預處理和n-gram生成步驟。 只適用於分析儀=='單詞'。

(3) preprocessor可呼叫或無(預設)

重寫預處理(字串轉換)階段,同時保留標記化和n-gram生成步驟。

(4) stop_words字串{'english'},列表或無(預設)

如果使用“英語”,則使用英語的內建停用詞表。

如果列表中的列表被假定為包含停用詞,則將從結果標記中刪除所有這些詞。 只適用於分析儀=='單詞'。

如果沒有,則不會使用停用詞。 可以將max_df設定為[0.7,1.0]範圍內的一個值,以便根據術語內部語料文件的頻率自動檢測並過濾停用詞。

(5) ax_features int或None,default = None

如果不是None,則建立一個詞彙表,只考慮整個語料庫中按詞頻排序的頂級max_features。

2. TfidfVectorizer部分引數

TfidfVectorizer將原始文件集合轉換為TF-IDF特徵矩陣。等同於TvidfTransformer之後的CountVectorizer。

(1) binary:預設為False,tf-idf中每個詞的權值是tf*idf,如果binary設為True,所有出現的詞的tf將置為1,TfidfVectorizer計算得到的tf與CountVectorizer得到的tf是一樣的,就是詞頻,不是詞頻/該詞所在文件的總詞數。

(2) norm:預設為'l2',可設為'l1'或None,計算得到tf-idf值後,如果norm='l2',則整行權值將歸一化,即整行權值向量為單位向量,如果norm=None,則不會進行歸一化。大多數情況下,使用歸一化是有必要的。

(3) use_idf:預設為True,權值是tf*idf,如果設為False,將不使用idf,就是隻使用tf,相當於CountVectorizer了。

(4) smooth_idf:idf平滑引數,預設為True,idf=ln((文件總數+1)/(包含該詞的文件數+1))+1,如果設為False,idf=ln(文件總數/包含該詞的文件數)+1

(5) sublinear_tf:預設為False,如果設為True,則替換tf為1 +log(tf)。