當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn CountVectorizer用法及代碼示例


本文簡要介紹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' ,則輸入應為字符串或字節類型的項目序列。
encodingstr,默認='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_patternstr, 默認=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 開始,如果 inputfilenamefile ,則首先從文件中讀取數據,然後將其傳遞給給定的可調用分析器。

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]]

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.feature_extraction.text.CountVectorizer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。