CountVectorizer介紹

CountVectorizer介紹

class sklearn.feature_extraction.text.CountVectorizer(input=ucontent, encoding=uutf-8, decode_error=ustrict,strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None,token_pattern=u(?u)ww+, ngram_range=(1, 1), analyzer=uword, max_df=1.0, min_df=1,max_features=None, vocabulary=None, binary=False, dtype=<type numpy.int64>)

參數:

input:string {filename,file,content}

如果filename,作為參數傳遞以適合的序列預期是需要讀取來獲取要分析的原始內容的文件名列表。

如果file,序列項必須有一個read方法(類文件對象),被調用來獲取內存中的位元組。

否則,預期輸入是序列字元串或位元組項目預計將被直接分析。

encoding:字元串,默認為utf-8。

如果給出位元組或文件進行分析,則使用此編碼進行解碼。

decode_error:{strict,ignore,replace}

指示如果給出一個位元組序列來分析包含不是給定編碼的字元,該怎麼做。默認情況下,它是strict,這意味著會引發UnicodeDecodeError。其他值是「ignore」和「replace」。

strip_accents:{ascii,unicode,None}

是否在預處理步驟中刪除重音符號。ascii是一種快速方法,僅適用於具有直接ASCII映射的字元。unicode是一個適用於任何字元的稍慢的方法。None(默認)什麼也不做。

analyzer:string,{word,char,char_wb} or callable

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

如果通過可調用,它將用於從原始未處理輸入中提取特徵序列。

preprocessor:callable 或 None(默認)

覆蓋預處理(字元串轉換)階段,同時保留tokenizing和n-grams生成步驟。

tokenizer: callable 或 None (默認)

重寫字元串標記化步驟,同時保留預處理和n-grams生成步驟。

只適用於analyzer == word

ngram_range:tuple(min_n,max_n)

要提取的不同n-grams的n值範圍的下限和上限。

將使用n的所有值,使得min_n <= n <= max_n。

stop_words:string {english},list,或None(默認)

「english」,使用內置的英語停用詞表。

「list」,如果是一個列表,則被假定為包含停用詞,那麼所有列表中的詞都將從結果標記中刪除。只適用於analyzer == word

「None」,不會處理停用詞。可以將max_df設置為範圍 [0.7,1.0)中的一個值,以根據術語內部語料庫文檔頻率自動檢測和過濾停用詞。

lowercase:boolean,True(默認值)

計算『tf』之前,將所有字元轉換為小寫。

token_pattern:string

正則表達式,默認篩選長度>=2的字母和數字混合字元(標點符號被完全忽略並始終被視為標記分隔符)。僅在analyzer==word使用時才使用。

max_df:float(在[ 0.0,1.0 ]內),或int,默認值= 1.0

在構建辭彙時忽略文檔頻率嚴格高於給定閾值(語料庫特定停用詞)的詞語。如果為float,則該參數表示文檔的比例,即整數絕對計數。

如果vocabulary不是None,則忽略此參數。

min_df:float(在[ 0.0,1.0 ]內)或int,默認值= 1

如果為 int,在構建辭彙時忽略文檔頻率嚴格低於給定閾值的詞語。這個值在文獻中也被稱為截斷值;

如果為float,則該參數表示文檔的比例;

如果vocabulary不是None,則忽略此參數。

max_features:int 或 None(默認值)

如果不是None,則建立一個辭彙表,僅用詞頻排序的前max_features個詞創建語料庫。

如果vocabulary不是None,則忽略此參數。

vocabulary: Mapping 或 iterable

Mapping(例如,一個字典),其中鍵是terms和值是indices in the feature matrix;

iterable,an iterable over terms;

如果沒有給出,則從輸入文件中確定辭彙。mapping,指數不應該重複,並且不應該在0和最大指數之間有任何差距。

binary:boolean,默認值是False

如果為True,則所有非零計數都設置為1.(即,tf的值只有0和1,表示出現和不出現)

這對建模二進位事件而非整數計數的離散概率模型非常有用。

dtype:type,可選

由fit_transform()或transform()返回的矩陣的類型。

屬性:

vocabulary_:dict

術語到特徵索引的映射。

stop_words_:set

因以下原因而被忽略的術語:

  • 出現在太多文件中(max_df)
  • 出現在文件太少(min_df)
  • 被特徵選擇切斷(max_features)。

這隻有在沒有給出辭彙的情況下才可用。

總結:CountVectorizer提取tf都做了這些:去音調,轉小寫 ,去停用詞,在word(而不是character,也可自己選擇參數)基礎上提取所有ngramrange範圍內的特徵,同時刪除滿足「maxdf,min_df,max_features」特徵的tf。當然也可選擇tf為binary。

參考文章:

sklearn:CountVectorizer介紹;

scikit-learn:CountVectorizer提取tf都做了什麼;

推薦閱讀:

簡單線性回歸練習sklearn.linear_model.LinearRegression
『機器學習』—應用Sklearn機器學習的建議
【用Sklearn進行機器學習】第三篇 - 深入監督學習:支持向量機
Python3《機器學習實戰》學習筆記(七):Logistic回歸實戰篇之預測病馬死亡率

TAG:自然語言處理 | sklearn |