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


Python sklearn TfidfVectorizer用法及代碼示例

本文簡要介紹python語言中 sklearn.feature_extraction.text.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

在用戶指南中閱讀更多信息。

參數

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可調用,默認=無

覆蓋預處理(字符串轉換)階段,同時保留標記化和n-grams 生成步驟。僅當 analyzer 不可調用時才適用。

tokenizer可調用,默認=無

覆蓋字符串標記化步驟,同時保留預處理和n-grams 生成步驟。僅適用於 analyzer == 'word'

analyzer{‘word’, ‘char’, ‘char_wb’} 或可調用,默認='word'

特征是由單詞還是字符組成n-grams。選項 ‘char_wb’ 僅從單詞邊界內的文本創建字符 n-grams; n-grams 在單詞的邊用空格填充。

如果傳遞了一個可調用對象,則它用於從未處理的原始輸入中提取特征序列。

stop_words{‘english’},列表,默認=無

如果是字符串,則將其傳遞給 _check_stop_list 並返回相應的停止列表。 ‘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。將使用所有滿足 min_n <= n <= max_n 的 n 值。例如,(1, 1)ngram_range 僅表示一元組,(1, 2) 表示一元組和二元組,而(2, 2) 表示僅二元組。僅在 analyzer 不可調用時適用。

max_df浮點數或整數,默認=1.0

在構建詞匯表時,忽略文檔頻率嚴格高於給定閾值的術語(corpus-specific 停用詞)。如果 float 在 [0.0, 1.0] 範圍內,該參數表示文檔的比例,整數絕對計數。如果詞匯表不是無,則忽略此參數。

min_df浮點數或整數,默認=1

在構建詞匯表時,忽略文檔頻率嚴格低於給定閾值的術語。該值在文獻中也稱為cut-off。如果 float 在 [0.0, 1.0] 範圍內,該參數表示文檔的比例,整數絕對計數。如果詞匯表不是無,則忽略此參數。

max_features整數,默認=無

如果不是 None,則構建一個僅考慮按語料庫中的詞頻排序的頂部 max_features 的詞匯表。

如果詞匯表不是無,則忽略此參數。

vocabulary映射或可迭代,默認=None

一個映射(例如,一個字典),其中鍵是術語,值是特征矩陣中的索引,或者是可迭代的術語。如果未給出,則從輸入文檔中確定詞匯表。

binary布爾,默認=假

如果為 True,則所有非零項計數都設置為 1。這並不意味著輸出將隻有 0/1 值,隻是 tf-idf 中的 tf 項是二進製的。 (將 idf 和規範化設置為 False 以獲得 0/1 輸出)。

dtype數據類型,默認=float64

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

norm{‘l1’, ‘l2’},默認='l2'

每個輸出行都有單位範數,或者:

  • ‘l2’:向量元素的平方和為 1。當應用 l2 範數時,兩個向量之間的餘弦相似度是它們的點積。
  • ‘l1’:向量元素的絕對值之和為 1。參見preprocessing.normalize
use_idf布爾,默認=真

啟用 inverse-document-frequency 重新加權。如果為假,則 idf(t) = 1。

smooth_idf布爾,默認=真

通過在文檔頻率上加一來平滑 idf 權重,就好像看到一個額外的文檔包含集合中的每個術語恰好一次。防止零分裂。

sublinear_tf布爾,默認=假

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

屬性

vocabulary_dict

術語到特征索引的映射。

fixed_vocabulary_bool

如果用戶提供了術語到索引映射的固定詞匯表,則為真。

idf_形狀數組(n_features,)

逆文檔頻率向量,僅在 use_idf=True 時定義。

stop_words_set

被忽略的術語,因為它們:

  • 發生在太多文檔中(max_df)

  • 發生在太少的文檔中(min_df)

  • 被特征選擇(max_features)切斷。

這僅在沒有給出詞匯表的情況下可用。

注意

stop_words_ 屬性在酸洗時會變大並增加模型大小。此屬性僅用於自省,可以使用 delattr 安全刪除或在酸洗前設置為 None。

例子

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

相關用法


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