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


Python dask_ml.feature_extraction.text.HashingVectorizer用法及代碼示例

用法:

class dask_ml.feature_extraction.text.HashingVectorizer(*, 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', n_features=1048576, binary=False, norm='l2', alternate_sign=True, dtype=<class 'numpy.float64'>)

將文本文檔的集合轉換為標記出現的矩陣。

它將文本文檔的集合轉換為 scipy.sparse 矩陣,其中包含令牌出現計數(或二進製出現信息),如果 norm='l1',則可能歸一化為令牌頻率,如果 norm='l2',則投影到歐幾裏得單位球麵上。

此文本矢量化器實現使用散列技巧來查找標記字符串名稱以進行整數索引映射。

這種策略有幾個優點:

  • 它的內存非常低,可擴展到大型數據集,因為不需要在內存中存儲詞匯字典。
  • pickle 和un-pickle 很快,因為它除了構造函數參數之外沒有任何狀態。
  • 它可以用於流式傳輸(部分擬合)或並行管道,因為在擬合期間沒有計算狀態。

還有一些缺點(與使用帶有內存詞匯表的 CountVectorizer 相比):

  • 無法計算逆變換(從特征索引到字符串特征名稱),這在嘗試反省哪些特征對模型最重要時可能會成為問題。
  • 可能存在衝突:不同的標記可以映射到相同的特征索引。但是在實踐中,如果 n_features 足夠大(例如文本分類問題為 2 ** 18),這很少會成為問題。
  • 沒有 IDF 加權,因為這會使轉換器有狀態。

使用的散列函數是有符號的 32 位版本的 Murmurhash3。

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

參數

input{‘filename’, ‘file’, ‘content’},默認='內容'
  • 如果 ‘filename’ ,作為參數傳遞給 fit 的序列應該是需要讀取以獲取要分析的原始內容的文件名列表。
  • 如果 ‘file’ ,則序列項必須有一個 ‘read’ 方法(file-like 對象),該方法被調用以獲取內存中的字節。
  • 如果 ‘content’ ,則輸入應為字符串或字節類型的項目序列。
encodingstr,默認='utf-8'

如果要分析字節或文件,則使用此編碼進行解碼。

decode_error{‘strict’, ‘ignore’, ‘replace’},默認='嚴格'

如果給出一個字節序列來分析包含不屬於給定 encoding 的字符,該怎麽做的說明。默認情況下,它是‘strict’,這意味著將引發 UnicodeDecodeError。其他值為‘ignore’ and ‘replace’。

strip_accents{‘ascii’, ‘unicode’},默認=無

在預處理步驟中刪除重音並執行其他字符規範化。 ‘ascii’ 是一種快速方法,僅適用於具有直接 ASCII 映射的字符。 ‘unicode’ 是一種稍慢的方法,適用於任何字符。無(默認)什麽都不做。

‘ascii’ and ‘unicode’ 都使用來自 unicodedata.normalize() 的 NFKD 標準化。

lowercase布爾,默認=真

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

preprocessor可調用,默認=無

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

tokenizer可調用,默認=無

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

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

如果‘english’,則使用內置的英語停用詞列表。 ‘english’ 有幾個已知問題,您應該考慮替代方案(請參閱使用停用詞)。

如果是列表,則假定該列表包含停用詞,所有這些都將從生成的標記中刪除。僅適用於 analyzer == 'word'

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 (1, 1) 的 ngram_range 僅表示一元組,(1, 2) 表示一元組和二元組,而(2, 2) 表示僅二元組。僅在 analyzer 不可調用時適用。

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

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

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

n_features整數,默認=(2 ** 20)

輸出矩陣中的特征(列)數。少量特征可能會導致哈希衝突,但大量特征會導致線性學習器中的係數維度較大。

binary布爾,默認=假

如果為 True,則所有非零計數都設置為 1。這對於模擬二進製事件而不是整數計數的離散概率模型很有用。

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

用於標準化術語向量的範數。 None 表示沒有標準化。

alternate_sign布爾,默認=真

當為 True 時,將交替符號添加到特征中,以近似保存散列空間中的內積,即使對於小的 n_features 也是如此。這種方法類似於稀疏隨機投影。

dtype類型,默認=np.float64

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

例子

>>> from sklearn.feature_extraction.text import HashingVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = HashingVectorizer(n_features=2**4)
>>> X = vectorizer.fit_transform(corpus)
>>> print(X.shape)
(4, 16)

相關用法


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