TfidfVectorizer#

class sklearn.feature_extraction.text.TfidfVectorizer(*, input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, analyzer='word', stop_words=None, token_pattern='(?u)\\b\\w\\w+\\b', ngram_range=(1, 1), max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.float64'>, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)[原始碼]#

將原始文件集合轉換為 TF-IDF 特徵矩陣。

等同於 CountVectorizer,後面接著 TfidfTransformer

有關使用範例,請參閱 使用稀疏特徵對文字文件進行分類

若要比較不同特徵提取器的效率,請參閱 FeatureHasher 和 DictVectorizer 比較

有關文件分群並與 HashingVectorizer 比較的範例,請參閱 使用 k-means 分群文字文件

請在 使用者指南 中閱讀更多資訊。

參數:
input{‘filename’, ‘file’, ‘content’}, 預設值=’content’
  • 如果為 'filename',則傳遞給 fit 作為參數的序列預期會是檔案名稱列表,需要讀取這些檔案以獲取要分析的原始內容。

  • 如果為 'file',則序列項目必須具有 'read' 方法(類檔案物件),該方法會被呼叫以獲取記憶體中的位元組。

  • 如果為 'content',則輸入預期會是字串或位元組類型項目的序列。

encodingstr,預設值=’utf-8’

如果提供位元組或檔案進行分析,則會使用此編碼進行解碼。

decode_error{‘strict’, ‘ignore’, ‘replace’}, 預設值=’strict’

關於如果給定要分析的位元組序列包含給定 encoding 中沒有的字元時該怎麼辦的說明。預設情況下,它是 'strict',表示將會引發 UnicodeDecodeError。其他值為 'ignore' 和 'replace'。

strip_accents{‘ascii’, ‘unicode’} 或可呼叫物件,預設值=None

在預處理步驟中移除重音並執行其他字元正規化。 'ascii' 是一種快速方法,僅適用於具有直接 ASCII 對應的字元。 'unicode' 是一種稍慢的方法,適用於任何字元。 None(預設值)表示不執行字元正規化。

'ascii' 和 'unicode' 都使用來自 unicodedata.normalize 的 NFKD 正規化。

lowercasebool,預設值=True

在標記化之前將所有字元轉換為小寫。

preprocessor可呼叫物件,預設值=None

覆寫預處理(字串轉換)階段,同時保留標記化和 n 元語法生成步驟。僅當 analyzer 不可呼叫時才適用。

tokenizer可呼叫物件,預設值=None

覆寫字串標記化步驟,同時保留預處理和 n 元語法生成步驟。僅當 analyzer == 'word' 時才適用。

analyzer{‘word’, ‘char’, ‘char_wb’} 或可呼叫物件,預設值=’word’

特徵應該由單字還是字元 n 元語法組成。選項 'char_wb' 僅從單字邊界內的文字建立字元 n 元語法;單字邊緣的 n 元語法會以空格填充。

如果傳遞一個可呼叫物件,則會使用它從原始、未經處理的輸入中提取特徵序列。

在 0.21 版中變更: 自 v0.21 起,如果 input'filename''file',則會先從檔案讀取資料,然後將其傳遞給給定的可呼叫分析器。

stop_words{‘english’}, list, 預設值=None

如果是字串,則會將其傳遞給 _check_stop_list,並傳回適當的停止詞列表。 'english' 目前是唯一支援的字串值。 'english' 有幾個已知的問題,您應該考慮替代方案(請參閱使用停止詞)。

如果是一個列表,則假設該列表包含停用詞,所有停用詞都會從產生的詞彙中移除。僅當 analyzer == 'word' 時適用。

如果為 None,則不使用停用詞。在這種情況下,將 max_df 設定為較高的值,例如在 (0.7, 1.0) 範圍內,可以根據詞彙在語料庫文件中的頻率自動偵測並過濾停用詞。

token_patternstr,預設值為 r”(?u)\b\w\w+\b”

表示構成「詞彙」的正規表示式,僅當 analyzer == 'word' 時使用。預設的正規表示式選擇 2 個或更多字母數字字元的詞彙(標點符號會被完全忽略,並始終被視為詞彙分隔符)。

如果 token_pattern 中存在捕獲群組,則捕獲群組的內容(而非整個匹配項)會成為詞彙。最多允許一個捕獲群組。

ngram_rangetuple (min_n, max_n),預設值為 (1, 1)

要提取的不同 n-gram 的 n 值範圍的下限和上限。將使用所有滿足 min_n <= n <= max_n 的 n 值。例如,ngram_range(1, 1) 表示只使用 unigram,(1, 2) 表示使用 unigram 和 bigram,而 (2, 2) 表示只使用 bigram。僅當 analyzer 不可調用時適用。

max_dffloat 或 int,預設值為 1.0

在建立詞彙表時,忽略文件頻率嚴格高於給定閾值的詞彙(語料庫特定的停用詞)。如果 float 值在 [0.0, 1.0] 範圍內,則參數表示文件比例,如果是整數則表示絕對計數。如果詞彙表不為 None,則會忽略此參數。

min_dffloat 或 int,預設值為 1

在建立詞彙表時,忽略文件頻率嚴格低於給定閾值的詞彙。這個值在文獻中也稱為 cut-off。如果 float 值在 [0.0, 1.0] 範圍內,則參數表示文件比例,如果是整數則表示絕對計數。如果詞彙表不為 None,則會忽略此參數。

max_featuresint,預設值為 None

如果不是 None,則建立一個詞彙表,只考慮語料庫中詞頻最高的 max_features 個詞彙。否則,將使用所有特徵。

如果詞彙表不為 None,則會忽略此參數。

vocabularyMapping 或 iterable,預設值為 None

可以是 Mapping (例如,字典),其中鍵是詞彙,值是特徵矩陣中的索引,也可以是詞彙的 iterable。如果未給定,則從輸入的文件中決定詞彙表。

binarybool,預設值為 False

如果為 True,則所有非零的詞彙計數都會設為 1。這並不表示輸出只會有 0/1 值,僅表示 tf-idf 中的 tf 項是二元的。(將 binary 設為 True,use_idf 設為 False,norm 設為 None,可獲得 0/1 輸出)。

dtypedtype,預設值為 float64

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

norm{'l1', 'l2'} 或 None,預設值為 'l2'

每個輸出行的範數都是單位範數,可以為以下之一:

  • ‘l2’: 向量元素的平方和為 1。當應用 l2 範數時,兩個向量之間的餘弦相似度就是它們的點積。

  • ‘l1’: 向量元素的絕對值總和為 1。請參閱 normalize

  • None: 不進行正規化。

use_idfbool,預設值為 True

啟用反向文件頻率重新加權。如果為 False,則 idf(t) = 1。

smooth_idfbool,預設值為 True

透過將 1 加到文件頻率來平滑 idf 權重,如同額外看到一個文件,該文件恰好包含集合中的每個詞彙一次。防止零除法。

sublinear_tfbool,預設值為 False

應用次線性 tf 縮放,即將 tf 替換為 1 + log(tf)。

屬性:
vocabulary_dict

詞彙到特徵索引的對應關係。

fixed_vocabulary_bool

如果使用者提供了詞彙到索引對應的固定詞彙表,則為 True。

idf_形狀為 (n_features,) 的陣列

反向文件頻率向量,僅當 use_idf=True 時定義。

參見

CountVectorizer

將文字轉換為 n-gram 計數的稀疏矩陣。

TfidfTransformer

從提供的計數矩陣執行 TF-IDF 轉換。

範例

>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = TfidfVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> vectorizer.get_feature_names_out()
array(['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third',
       'this'], ...)
>>> print(X.shape)
(4, 9)
build_analyzer()[原始碼]#

返回一個可調用對象來處理輸入資料。

可調用對象處理預處理、詞彙化和 n-gram 生成。

返回:
analyzer: 可調用對象

一個處理預處理、詞彙化和 n-gram 生成的函式。

build_preprocessor()[原始碼]#

返回一個在詞彙化之前預處理文字的函式。

返回:
preprocessor: 可調用對象

一個在詞彙化之前預處理文字的函式。

build_tokenizer()[原始碼]#

返回一個將字串分割成詞彙序列的函式。

返回:
tokenizer: 可調用對象

一個將字串分割成詞彙序列的函式。

decode(doc)[原始碼]#

將輸入解碼為 unicode 符號的字串。

解碼策略取決於向量化器的參數。

參數:
docbytes 或 str

要解碼的字串。

返回:
doc: str

一個 unicode 符號的字串。

fit(raw_documents, y=None)[原始碼]#

從訓練集中學習詞彙和 idf。

參數:
raw_documents可迭代物件

一個可產生 str、unicode 或檔案物件的可迭代物件。

yNone

此參數不需要計算 tfidf。

返回:
self物件

已擬合的向量化器。

fit_transform(raw_documents, y=None)[原始碼]#

學習詞彙和 idf,並返回文件詞彙矩陣。

這等同於先執行 fit 再執行 transform,但效率更高。

參數:
raw_documents可迭代物件

一個可產生 str、unicode 或檔案物件的可迭代物件。

yNone

此參數會被忽略。

返回:
X(n_samples, n_features)的稀疏矩陣

Tf-idf 加權的文件詞彙矩陣。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

參數:
input_features字串或 None 的類陣列,預設值=None

不使用,這裡為了 API 的一致性而存在。

返回:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用者指南 了解路由機制如何運作。

返回:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值=True

如果為 True,將返回此估算器和包含的子物件(為估算器)的參數。

返回:
paramsdict

參數名稱映射到其值的字典。

get_stop_words()[原始碼]#

建立或取得有效的停用詞列表。

返回:
stop_words:列表或 None

一個停用詞列表。

屬性 idf_#

反向文件頻率向量,僅當 use_idf=True 時定義。

返回:
形狀為 (n_features,) 的 ndarray
inverse_transform(X)[原始碼]#

返回 X 中具有非零項目的每個文件的詞彙。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

文件詞彙矩陣。

返回:
X_inv形狀為 (n_samples,) 的陣列列表

詞彙陣列的列表。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

返回:
self估算器實例

估算器實例。

transform(raw_documents)[原始碼]#

將文件轉換為文件詞彙矩陣。

使用由 fit(或 fit_transform)學習的詞彙和文件頻率 (df)。

參數:
raw_documents可迭代物件

一個可產生 str、unicode 或檔案物件的可迭代物件。

返回:
X(n_samples, n_features)的稀疏矩陣

Tf-idf 加權的文件詞彙矩陣。