sklearn.feature_extraction.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’}, default=’content’ 如果“filename”,作為參數傳遞給fit的序列應該是一個文件名列表,需要讀取這些文件名以獲取要分析的原始內容。 如果“file”,序列項必須有一個“read”方法(類文件對象),該方法被調用來獲取內存中的字節。 否則,輸入應該是一個項目序列,類型可以是string或byte。 |
encoding | str, default=’utf-8’ 如果字節或文件被給予分析,這種編碼被用來解碼。 |
decode_error | {‘strict’, ‘ignore’, ‘replace’}, default=’strict’ 說明如果給定要分析的字節序列包含不屬于給定編碼的字符,該做什么。默認情況下,它是“嚴格的”,這意味著將引發一個UnicodeDecodeError。其他值還有“ignore”和“replace”。 |
strip_accents | {‘ascii’, ‘unicode’}, default=None 在預處理步驟中刪除重音符號并執行其他字符規范化。' ascii '是一種快速的方法,只對有直接ascii映射的字符有效。“unicode”是一種稍微慢一些的方法,適用于任何字符。None(默認)不執行任何操作。 ' ascii '和' unicode '都使用NFKD標準化從 unicodedata.normalize . |
lowercase | bool, default=True 在標記之前將所有字符轉換為小寫。 |
preprocessor | callable, default=None 重寫預處理(字符串轉換)階段,同時保留記號化和n字元生成步驟。僅在分析器不可調用時應用。 |
tokenizer | callable, default=None 重寫字符串記號化步驟,同時保留預處理和n字元生成步驟。只適用于 analyzer == 'word' 。 |
analyzer | {‘word’, ‘char’, ‘char_wb’} or callable, default=’word’ 特征是由單詞還是由n字組成。選擇“char_wb”創建角色- gram只從文本單詞邊界;字格詞帶的邊緣空間。 如果傳遞了callable,則使用它從原始的、未處理的輸入中提取特性序列。在0.21版本中進行了更改。 由于v0.21,如果輸入是文件名或文件,則首先從文件讀取數據,然后傳遞給給定的可調用分析器。 |
stop_words | string {‘english’}, list, default=None 如果“english”,則使用內置的英語停止詞列表。“英語”有幾個已知的問題,你應該考慮另一種選擇(參見Using stop words)。 如果一個列表,則假定該列表包含停止詞,所有這些詞都將從結果標記中刪除。只適用于 analyzer == 'word' 。如果沒有,就不會使用停止語。max_df可以設置為范圍[0.7,1.0]的值,根據術語在語料庫文檔內的頻率自動檢測和過濾停止詞。 |
token_pattern | str 表示什么構成了“記號”的正則表達式,僅在 analyzer == 'word' 時使用。默認的regexp 選擇2個或更多字母數字字符的標記(標點完全被忽略,并且總是作為標記分隔符處理)。 |
ngram_range | tuple (min_n, max_n), default=(1, 1) 要提取的不同單詞的n個字符或字符的n個字符的n個值范圍的上邊界。使用 min_n <= n <= max_n 的所有n值。例如,ngram_range 的(1,1) 表示僅使用雙字符,(1,2) 表示單字符和雙字符,(2,2) 表示僅使用雙字符。僅在分析器不可調用時應用。 |
max_df | float in range [0.0, 1.0] or int, default=1.0 在構建詞匯表時,忽略那些文檔頻率嚴格高于給定閾值的術語(特定于語料庫的停止詞)。如果是浮點數,則該參數表示文檔的比例,整數絕對計數。如果詞匯表不是None,則忽略此參數。 |
min_df | float in range [0.0, 1.0] or int, default=1 在構建詞匯表時,忽略那些文檔頻率嚴格低于給定閾值的術語。這個值在文獻中也稱為cut-off。如果是浮點數,則該參數表示文檔的比例,整數絕對計數。如果詞匯表不是None,則忽略此參數。 |
max_features | int, default=None 如果沒有的話,構建一個詞匯表,只考慮根據語料庫中的詞匯頻率排序的頂部max_features。 如果詞匯表不是None,則忽略此參數。 |
vocabulary | Mapping or iterable, default=None 一種映射(例如dict),其中鍵是項,值是特征矩陣中的索引,或者是項上的迭代。如果沒有給出,則從輸入文檔中確定詞匯表。 |
binary | bool, default=False 如果為真,則將所有非零項計數設置為1。這并不意味著輸出只有0/1的值,只是tf-idf中的tf項是二進制的。(將idf和歸一化設置為False,得到0/1輸出) |
dtype | dtype, default=float64 由fit_transform()或transform()返回的矩陣的類型。 |
norm | {‘l1’, ‘l2’}, default=’l2’ 每個輸出行都有單位范數,可以是:* ' l2 ':向量元素的平方和為1。當應用l2范數時,兩個向量之間的余弦相似度是它們的點積。*‘l1’:向量元素的絕對值之和為1。看到 preprocessing.normalize 。 |
use_idf | bool, default=True 使 inverse-document-frequency 權重。 |
smooth_idf | bool, default=True 通過在文檔頻率上增加1來平滑idf權重,就好像在一個額外的文檔中只包含集合中的每一個詞一樣。防止零分歧。 |
sublinear_tf | bool, default=False 應用次線性tf縮放,即將tf替換為1 + log(tf)。 |
屬性
屬性 | 說明 |
---|---|
vocabulary_ | dict 術語到特征索引的映射。 |
fixed_vocabulary_ | bool 如果用戶提供了術語到索引映射的固定詞匯表,則為 |
idf_ | array of shape (n_features,) 反文檔頻率(IDF)向量;只有在use_idf為真時才定義。 |
stop_words_ | set 被忽略的術語,因為它們要么: 發生在太多文檔中 (max_df) 發生在太少的文檔中 (min_df) 通過特征選擇 (max_features) 進行截斷。只有在沒有給出詞匯表的情況下才可用。 |
另見
Transforms text into a sparse matrix of n-gram counts.
Performs the TF-IDF transformation from a provided matrix of counts.
注意
在pickle時,stop_words_
屬性會變大,增加模型的大小。此屬性僅用于自省,可以使用delattr安全地刪除該屬性,或在pickle之前將其設置為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)
>>> print(vectorizer.get_feature_names())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
>>> print(X.shape)
(4, 9)
方法
方法 | 說明 |
---|---|
build_analyzer () |
返回處理預處理、記號化和生成n個符號的可調用函數。 |
build_preprocessor () |
返回一個函數,用于在標記之前對文本進行預處理。 |
build_tokenizer () |
返回一個函數,該函數將字符串分割為一系列標記。 |
decode (doc) |
將輸入解碼為unicode符號字符串。 |
fit (raw_documents[, y]) |
從訓練集學習詞匯和idf。 |
fit_transform (raw_documents[, y]) |
學習詞匯表和idf,返回文檔術語矩陣。 |
get_feature_names () |
從特征整數索引到特征名稱的數組映射。 |
get_params ([deep]) |
獲取這個估計器的參數。 |
get_stop_words () |
構建或獲取有效停止詞列表。 |
inverse_transform (X) |
返回在X中有非零項的每個文檔的術語。 |
set_params (**params) |
設置的參數估計量。 |
transform (raw_documents[, copy]) |
將文檔轉換為文檔術語矩陣。 |
__init__(*, 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)
初始化self. 請參閱help(type(self))以獲得準確的說明。
build_analyzer()
返回處理預處理、記號化和生成n個符號的可調用函數.
返回值 | 說明 |
---|---|
analyzer | callable 一個處理預處理、記號化和生成n字的函數。 |
build_preprocessor()
返回一個函數,用于在標記之前對文本進行預處理。
返回值 | 說明 |
---|---|
preprocessor | callable 用于在標記化之前對文本進行預處理的函數。 |
build_tokenizer()
返回一個函數,該函數將字符串分割為一系列標記。
返回值 | 說明 |
---|---|
tokenizer | callable 一種函數,用于將字符串分割為一系列標記。 |
decode(doc)
將輸入解碼為unicode符號字符串。
譯碼策略取決于矢量化器的參數。
參數 | 說明 |
---|---|
doc | str 要解碼的字符串。 |
返回值 | 說明 |
---|---|
doc | str 一串unicode符號。 |
fit(raw_documents, y=None)
學習原始文檔中所有標記的詞匯字典。
參數 | 說明 |
---|---|
raw_documents | iterable 計算tfidf不需要這個參數。 |
返回值 | 說明 |
---|---|
self | object vectorizer。 |
fit_transform(raw_documents, y=None)
學習詞匯表字典并返回文檔術語矩陣。
這相當于在fit之后進行轉換,但實現起來更有效。
參數 | 說明 |
---|---|
raw_documents | iterable 生成str、unicode或file對象的迭代器。 |
y | None 忽略此參數。 |
返回值 | 說明 |
---|---|
X | sparse matrix of (n_samples, n_features) Tf-idf-weighted document-term矩陣。 |
get_feature_names()
從特征整數索引到特征名稱的數組映射。
返回值 | 說明 |
---|---|
feature_names | list 特征名稱列表。 |
get_params(deep=True)
獲取這個估計器的參數。
參數 | 說明 |
---|---|
deep | bool, default=True 如果為真,將返回此估計器的參數以及包含的作為估計器的子對象。 |
返回值 | 說明 |
---|---|
params | mapping of string to any 參數名稱映射到它們的值。 |
get_stop_words()
構建或獲取有效停止詞列表。
返回值 | 說明 |
---|---|
stop_words | list or None 停止詞的列表。 |
inverse_transform(X)
返回在X中有非零項的每個文檔的術語。
參數 | 說明 |
---|---|
X | {array-like, sparse matrix} of shape (n_samples, n_features) Document-term矩陣。 |
返回值 | 說明 |
---|---|
X_inv | list of arrays of shape (n_samples,) 術語數組的列表。 |
set_params(**params)
設置這個估計器的參數。
該方法適用于簡單估計量和嵌套對象。后者具有形式為<component>_<parameter>
的參數,這樣就讓更新嵌套對象的每個樣本成為了可能。
參數 | 說明 |
---|---|
**params | dict 估計器參數。 |
返回值 | 說明 |
---|---|
self | object 估計器實例。 |
transform(raw_documents)
將文檔轉換為文檔術語矩陣。
使用擬合fit的詞匯表或提供給構造函數的詞匯表從原始文本文檔中提取標記數。
參數 | 說明 |
---|---|
raw_documents | iterable 生成str、unicode或file對象的迭代器。 |
copy | bool, default=True 是復制X并對其進行操作,還是進行就地操作。 自版本0.22以來已棄用:copy參數未使用,在版本0.22中已棄用,將在0.24中刪除。此參數將被忽略。 |
返回值 | 說明 |
---|---|
X | sparse matrix of shape (n_samples, n_features) Tf-idf-weighted document-term矩陣。 |