本文簡要介紹python語言中 sklearn.feature_extraction.text.CountVectorizer
的用法。
用法:
class sklearn.feature_extraction.text.CountVectorizer(*, input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern='(?u)\\b\\w\\w+\\b', ngram_range=(1, 1), analyzer='word', max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.int64'>)
將文本文檔集合轉換為令牌計數矩陣。
此實現使用 scipy.sparse.csr_matrix 生成計數的稀疏表示。
如果您不提供a-priori 字典並且不使用進行某種特征選擇的分析器,則特征的數量將等於通過分析數據找到的詞匯量大小。
在用戶指南中閱讀更多信息。
- input:{‘filename’, ‘file’, ‘content’},默認='內容'
- 如果
'filename'
,作為參數傳遞給 fit 的序列應該是需要讀取以獲取要分析的原始內容的文件名列表。 - 如果
'file'
,則序列項必須有一個 ‘read’ 方法(file-like 對象),該方法被調用以獲取內存中的字節。 - 如果
'content'
,則輸入應為字符串或字節類型的項目序列。
- 如果
- encoding:str,默認='utf-8'
如果要分析字節或文件,則使用此編碼進行解碼。
- decode_error:{‘strict’, ‘ignore’, ‘replace’},默認='嚴格'
如果要分析的字節序列包含不屬於給定
encoding
的字符,請說明如何處理。默認情況下,它是‘strict’,這意味著將引發UnicodeDecodeError。其他值為‘ignore’ 和‘replace’。- strip_accents:{‘ascii’, ‘unicode’},默認=無
在預處理步驟中刪除重音並執行其他字符規範化。 ‘ascii’ 是一種快速方法,僅適用於具有直接 ASCII 映射的字符。 ‘unicode’ 是一種稍慢的方法,適用於任何字符。無(默認)什麽都不做。
‘ascii’ 和 ‘unicode’ 都使用
unicodedata.normalize
的 NFKD 標準化。- lowercase:布爾,默認=真
在標記化之前將所有字符轉換為小寫。
- preprocessor:可調用,默認=無
覆蓋預處理(strip_accents 和小寫)階段,同時保留標記化和n-grams 生成步驟。僅當
analyzer
不可調用時才適用。- tokenizer:可調用,默認=無
覆蓋字符串標記化步驟,同時保留預處理和n-grams 生成步驟。僅適用於
analyzer == 'word'
。- stop_words:{‘english’},列表,默認=無
如果‘english’,則使用內置的英語停用詞列表。 ‘english’ 有幾個已知問題,您應該考慮替代方案(請參閱使用停用詞)。
如果是列表,則假定該列表包含停用詞,所有這些都將從生成的標記中刪除。僅適用於
analyzer == 'word'
。如果沒有,將不使用停用詞。 max_df 可以設置為 [0.7, 1.0) 範圍內的值,以根據術語的語料庫文檔內頻率自動檢測和過濾停用詞。
- token_pattern:str, 默認=r”(?u)\b\w\w+\b”
表示構成 “token” 的正則表達式,僅在
analyzer == 'word'
時使用。默認的正則表達式選擇 2 個或更多字母數字字符的標記(標點符號被完全忽略並始終被視為標記分隔符)。如果 token_pattern 中有捕獲組,則捕獲的組內容,而不是整個匹配項,將成為令牌。最多允許一個捕獲組。
- ngram_range:元組 (min_n, max_n), 默認=(1, 1)
n-values範圍的上下邊界,用於提取不同的單詞n-grams或char n-grams。將使用所有滿足 min_n <= n <= max_n 的 n 值。例如,
(1, 1)
的ngram_range
僅表示一元組,(1, 2)
表示一元組和二元組,而(2, 2)
表示僅二元組。僅在analyzer
不可調用時適用。- analyzer:{‘word’, ‘char’, ‘char_wb’} 或可調用,默認='word'
特征應該由單詞n-gram還是字符n-grams構成。選項 ‘char_wb’ 僅從單詞邊界內的文本創建字符 n-grams; n-grams 在單詞的邊用空格填充。
如果傳遞了一個可調用對象,則它用於從未處理的原始輸入中提取特征序列。
從 v0.21 開始,如果
input
是filename
或file
,則首先從文件中讀取數據,然後將其傳遞給給定的可調用分析器。- max_df:在 [0.0, 1.0] 或 int 範圍內浮點數,默認 = 1.0
在構建詞匯表時,忽略文檔頻率嚴格高於給定閾值的術語(corpus-specific 停用詞)。如果是float,參數代表文檔的比例,整數絕對計數。如果詞匯表不是無,則忽略此參數。
- min_df:在 [0.0, 1.0] 或 int 範圍內浮點數,默認 = 1
在構建詞匯表時,忽略文檔頻率嚴格低於給定閾值的術語。該值在文獻中也稱為cut-off。如果是float,參數代表文檔的比例,整數絕對計數。如果詞匯表不是無,則忽略此參數。
- max_features:整數,默認=無
如果不是 None,則構建一個僅考慮按語料庫中的詞頻排序的頂部 max_features 的詞匯表。
如果詞匯表不是無,則忽略此參數。
- vocabulary:映射或可迭代,默認=None
一個映射(例如,一個字典),其中鍵是術語,值是特征矩陣中的索引,或者是可迭代的術語。如果未給出,則從輸入文檔中確定詞匯表。映射中的索引不應重複,並且不應在 0 和最大索引之間有任何間隙。
- binary:布爾,默認=假
如果為 True,則所有非零計數都設置為 1。這對於模擬二進製事件而不是整數計數的離散概率模型很有用。
- dtype:類型,默認=np.int64
fit_transform() 或 transform() 返回的矩陣類型。
- vocabulary_:dict
術語到特征索引的映射。
- fixed_vocabulary_:bool
如果用戶提供了術語到索引映射的固定詞匯表,則為真。
- stop_words_:set
被忽略的術語,因為它們:
發生在太多文檔中(
max_df
)發生在太少的文檔中(
min_df
)被特征選擇(
max_features
)切斷。
這僅在沒有給出詞匯表的情況下可用。
參數:
屬性:
注意:
stop_words_
屬性在酸洗時會變大並增加模型大小。此屬性僅用於自省,可以使用 delattr 安全刪除或在酸洗前設置為 None。例子:
>>> from sklearn.feature_extraction.text import CountVectorizer >>> corpus = [ ... 'This is the first document.', ... 'This document is the second document.', ... 'And this is the third one.', ... 'Is this the first document?', ... ] >>> vectorizer = CountVectorizer() >>> X = vectorizer.fit_transform(corpus) >>> vectorizer.get_feature_names_out() array(['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this'], ...) >>> print(X.toarray()) [[0 1 1 1 0 0 1 0 1] [0 2 0 1 0 1 1 0 1] [1 0 0 1 1 0 1 1 1] [0 1 1 1 0 0 1 0 1]] >>> vectorizer2 = CountVectorizer(analyzer='word', ngram_range=(2, 2)) >>> X2 = vectorizer2.fit_transform(corpus) >>> vectorizer2.get_feature_names_out() array(['and this', 'document is', 'first document', 'is the', 'is this', 'second document', 'the first', 'the second', 'the third', 'third one', 'this document', 'this is', 'this the'], ...) >>> print(X2.toarray()) [[0 0 1 1 0 0 1 0 0 0 0 1 0] [0 1 0 1 0 1 0 1 0 0 1 0 0] [1 0 0 1 0 0 0 0 1 1 0 1 0] [0 0 1 0 1 0 1 0 0 0 0 0 1]]
相關用法
- Python sklearn ConfusionMatrixDisplay.from_predictions用法及代碼示例
- Python sklearn ComplementNB用法及代碼示例
- Python sklearn ConfusionMatrixDisplay用法及代碼示例
- Python sklearn CompoundKernel用法及代碼示例
- Python sklearn ConstantKernel用法及代碼示例
- Python sklearn ConfusionMatrixDisplay.from_estimator用法及代碼示例
- Python sklearn ColumnTransformer用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn ClassifierChain用法及代碼示例
- Python sklearn CategoricalNB用法及代碼示例
- Python sklearn CalibrationDisplay.from_estimator用法及代碼示例
- Python sklearn CalibrationDisplay用法及代碼示例
- Python sklearn CalibratedClassifierCV用法及代碼示例
- Python sklearn CCA用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.feature_extraction.text.CountVectorizer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。